java为什么可以实现跨平台(即实现一次编译,到处执行,此处的平台主要指不同的操作系统),而C/C++却不行?
2015-03-15 08:29
1341 查看
对于计算机而言,只认识一种语言,就是由0,1代码组成的机器语言,所以我们使用C/C++编写的程序计算机是看不懂的,因此必须将C/C++高级语言翻译成由0,1代码组成的机器语言,担任翻译工作的就是编译程序。又因为不同的操作系统对0,1序列的认识不一样,如某个指令在windows平台上是0101,但在Linux或其他平台下可能就成了1010,所以windows平台编译好的程序不能直接拿到Linux等其他平台上运行。java语言也是一样的,计算机也是看不懂的,因此他也必须经过编译程序的翻译,但此时与C/C++程序的编译不同,他不是直接编译为专属某平台的0,1机器语言,而是编译为中介格式的字节码文件即.class文件,然后再由JVM执行.class文件,再将其翻译为专属某平台的机器语言,java中的编译程序指令是javac,而执行java指令的目的在于启动JVM。安装JDK时会安装JRE,并且JRE中包含JVM,因为不同的操作系统对0,1序列的认识不一样,所以不同的操作系统有自己专属的JVM,这样才能执行字节码文件生成本平台识别的0,1序列,表现在我们在下载JDK时,会根据操作系统进行选择,由此可见不同的操作系统有自己不同的JDK(此处的不同主要是指JDK中的JVM的执行机制不同,而编译工具都是一样的都是javac,所以产生的.class文件对各操作系统也都是一样的,只是由于JVM的执行机制不一样针对不同操作系统会产生不一样的0,1序列而已,这样java就实现了一次编译,到处执行的跨平台特征)
相关文章推荐
- 详解 Java“一次编译,到处执行”的跨平台功能
- 为什么Java可以跨平台c/c++不可以吗
- 前言 我们知道不同的操作系统有各自的文件系统,这些文件系统又存在很多差异,而Java 因为是跨平台的,所以它必须要统一处理这些不同平台文件系统之间的差异,才能往上提供统一的入口。 关于FileSy
- java-一次编译到处执行
- 为什么说java是“一次编译到处运行?”
- 不同的编译器、不同的硬件平台以及不同的操作系统,最终编译出来的结果一样吗?为什么?
- java编译过程与c/c++编译过程不同
- 如何编译可以在arm平台上运行的可执行程序?
- 跨平台C++软件开发中,由于不同操作系统对Unicode的支持差异,而导致的一些问题及解决方案。
- Java编译过程与c/c++编译过程有何不同
- c++ 代码, 下面两段代码编译后文件大小为什么会不同
- 公共语言运行时的另外一个作用是可以轻松地实现跨平台。当然,条件是要在操作系统 上安装.NET Framework
- C++第六周任务一【任务1】下面的程序存在编译错误。有两种方法可以修改,请给出这两种修改方案,在报告中说明你倾向于用哪一种?为什么?处理此类问题的原则是什么?
- Java 有几程方法可以实现一个线程?用什么关键字修饰同步?stop()和suspend()为什么不推荐使用?
- java的一次编译多次执行机制
- 为什么C++中的类不能定义自身类的对象,而java可以? 【转载】
- 记录一下开源DLNA协议栈(cyberlink for java)在android平台实现的Media Renderer为什么发现不了
- java的一次编译到处运行
- Java代码调用操作系统可执行文件打开相应文件一行代码实现
- Java编译过程与c/c++编译过程有何不同