Java的“跨平台”特性
来源:互联网 发布:杰洛特的母亲 知乎 编辑:程序博客网 时间:2024/06/06 20:20
标题 ##Java的“跨平台”特性
言下之意,C、C++是不具备“跨平台”特性的(严格来说,也不是这么回事)。那为什么呢?想想。
先解释一下: “跨平台”。这里的“平台”就是指我们常用的操作系统,如Windows/Linux/Mac。“跨平台”就是指能在不同的平台上使用。
Java“跨平台”特性的实现原理如下:.java文件,经过Java编译器编译,形成字节码文件——.class,这种.class文件可以运行在JVM上,而JVM可以被安装到不同的平台,这就带来了Java的跨平台特性。
应当说明的是:.class文件这种字节码文件,基于Unicode的字节码是不依赖于特定的计算机硬件架构,不是严格的二进制文件,而.cpp文件经过C++编译器编译后,形成的.obj文件,是一种纯二进制的机器指令。
其实Java、C/C++都是具有跨平台的特性,需要看这个“跨平台”,你如何理解?
C/C++语言本身是跨平台的,这是从“源码编译”的角度来看,但其应用程序.exe不是。比如:你的C/C++程序只使用C标准的输入输出,那么源代码也是跨平台的,只要用对应平台的编译器编译就可以运行,如果你使用了平台专有的API,那么它就不能跨平台,比如WINDOWS窗口程序,就调用了WINDOWS的创建窗口,显示窗口等API(这些调用并不一定在你自己的代码中),Linux是没有这些API的,所以就无法编译更无法运行。标准的C/C++本身都是硬件无关的,但是标准C/C++往往不够用, 于是一些人就会直接用Linux或windows的C/C++接口,这样做不符合现代设计模式,导致程序脆弱,跨平台就更别提了,正确的做法应当是用C/C++调用跨平台库,由跨平台库承担处理平台差异的细节。
C++创始人曾经这样说:“JVM造了一个新的平台,让所有Java程序只能在这个平台上运行,而C和C++的代码可以在几十个不同的平台上运行,从这个角度而言,C和C++是才是真的跨平台的,而Java不是。”当然,你也可以认为,Java的确只是在其唯一的平台上——JVM上运行的。
正所谓:C语言是“一次编写,到处编译”;Java是“一次编译,到处运行”。
注:以上说得有点乱,其实大部分都是自己整合别人的经验而来,主要是自己理解不够的原因,目的是为了通俗地说明问题。
- Java的“跨平台”特性
- Java跨平台特性
- 如何理解 Java 的跨平台特性?
- JAVA语言跨平台特性
- 6. Java 虚拟机及Java的跨平台特性
- Java面向对象的特性和跨平台性
- Java语言的跨平台可移植特性
- Java基础:第三讲 Java的关键特性——跨平台性
- 利用 Java 平台的特性建造一个令人瞩目的系统
- 利用Java平台的特性建造一个令人瞩目的系统
- 利用 Java 平台的特性建造一个令人瞩目的系统
- java的语言特性,跨平台原理和两种核心机制(个人总结)
- 除了跨平台和平台成本以外,Java 还有什么特性是 C# 不具备的?
- Java EE平台新增特性
- C/C++与JAVA跨平台特性比对
- 可信平台的基本特性
- ios平台的一些特性
- Java的跨平台
- 内边距 外边距 和元素浮动 清除浮动
- MySQL(1):Win10下MySQL5.7.17免安装版本基本配置
- http://blog.csdn.net/id_no_chinese/article/details/70228121
- 1006. 换个格式输出整数 (15) Python 2 编译
- EditText中的TextWatcher监听
- Java的“跨平台”特性
- 一、项目结构
- 设计模式系列之建造者模式
- Mysql 的常用语法
- 处理流式数据中MAX N问题
- 计算几何ACM——一些代码整理
- python猜数字游戏
- 史上最简单的 MySQL 教程(二十四)「数据的高级操作 之 查询(中)」
- Hive的客户端操作