开发者社区> 问答> 正文

Java 和 C++ 都是高级程序语言, C++ 直接编译成机器码 运行,而Java 编译成class字节码后 读入到JVM中 通过JVM 这中间托管在转成机器码运行。 为什么Java需要这样做,这是基于什么考虑?

Java 和 C++ 都是高级程序语言, C++ 直接编译成机器码 运行,而Java 编译成class字节码后 读入到JVM中 通过JVM 这中间托管在转成机器码运行。 为什么Java需要这样做,这是基于什么考虑?

展开
收起
李博 bluemind 2019-02-01 17:02:50 7216 0
10 条回答
写回答
取消 提交回答
  • 移植性考虑

    2020-03-23 17:37:13
    赞同 展开评论 打赏
  • write once, run everywhere.这个是java的核心,借助于抽象的与硬件无关的JVM层来解决代码跨平台的问题,实际上,JVM也是目前来看应用最广的VM(其他类似的VM还有erlang,但目前从使用的受众群体来说,不如JVM广泛)

    2019-07-17 23:27:42
    赞同 展开评论 打赏
  • 主要是解决跨平台问题

    2019-07-17 23:27:42
    赞同 展开评论 打赏
  • 0v0

    java这么做是为了让写代码的人不要去考虑系统的环境,更专注的解决问题

    2019-07-17 23:27:42
    赞同 展开评论 打赏
  • JVM的设计就让java一套代码可以在不同的平台运行,同时就是因为JVM,效率上比C++低

    2019-07-17 23:27:42
    赞同 展开评论 打赏
  • Java是通过jvm,一次编译,后续其他系统都可以执行

    2019-07-17 23:27:42
    赞同 展开评论 打赏
  • 乐分享爱学习,Android 前端 后端 AI等均有一些分享,一起学习,一起进步

    1 c++直接编译为机器码,使得C++需要感知平台的区别,比如arm架构,x86架构的不同
    2 Java编译为字节码,然后在虚拟机上运行。虚拟机吃掉了硬件平台的差异,故Java可以实现平台无关性。
    3 Java通过JIT优化技术,会在运行时,将部分常用字节码编译为机器码,从而提高运行速度。

    2019-07-17 23:27:41
    赞同 展开评论 打赏
  • 这才是java的核心,在一个平台编译,其它平台就能直接拿来运行。所有的跨平台工作都由JVM自己去实现,程序员不用care平台细节,只负责自己的代码逻辑。
    你开发一个java应用,编译出来的jar包可以同时在windows、linux和mac都能运行。
    而c++,在不同的平台,都需要分别维护和编译。

    2019-07-17 23:27:41
    赞同 展开评论 打赏
  • 因为Java通过JVM完成了一次编译,然后再由JVM将执行的class字节码翻译成不同平台的不同机器语言,进而完成平台无关性

    2019-07-17 23:27:41
    赞同 展开评论 打赏
  • 云栖社区Java、Redis、MongoDB运营小编,有意合作请联系钉钉:15810436147

    因为不同系统不同cpu,c++要每个平台单独编译一个文件,适配目标硬件。Java是通过jvm,一次编译,后续其他系统都可以执行,背后是隔离了硬件系统差异

    2019-07-17 23:27:41
    赞同 展开评论 打赏
滑动查看更多
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载