Java 和 C++ 都是高级程序语言, C++ 直接编译成机器码 运行,而Java 编译成class字节码后 读入到JVM中 通过JVM 这中间托管在转成机器码运行。 为什么Java需要这样做,这是基于什么考虑?
write once, run everywhere.这个是java的核心,借助于抽象的与硬件无关的JVM层来解决代码跨平台的问题,实际上,JVM也是目前来看应用最广的VM(其他类似的VM还有erlang,但目前从使用的受众群体来说,不如JVM广泛)
1 c++直接编译为机器码,使得C++需要感知平台的区别,比如arm架构,x86架构的不同
2 Java编译为字节码,然后在虚拟机上运行。虚拟机吃掉了硬件平台的差异,故Java可以实现平台无关性。
3 Java通过JIT优化技术,会在运行时,将部分常用字节码编译为机器码,从而提高运行速度。
这才是java的核心,在一个平台编译,其它平台就能直接拿来运行。所有的跨平台工作都由JVM自己去实现,程序员不用care平台细节,只负责自己的代码逻辑。
你开发一个java应用,编译出来的jar包可以同时在windows、linux和mac都能运行。
而c++,在不同的平台,都需要分别维护和编译。
因为不同系统不同cpu,c++要每个平台单独编译一个文件,适配目标硬件。Java是通过jvm,一次编译,后续其他系统都可以执行,背后是隔离了硬件系统差异
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。