Java一次编译,到处运行如何实现的?

Java是一种高级语言,要让计算机执行你撰写的Java程序,也得通过编译程序的编译。但是Java编译程序并不直接将Java源代码编译为相依于计算机平台的0、1序列,而是将其编译为字节码。

Java源代码的扩展名为.java,经过编译程序编译之后生成扩展名为.class的字节码。如果想要执行字节码文件,目标平台必须要安装JVM(java虚拟机),JVM会将字节码翻译为相依与平台的计算机指令,即:0、1序列。但是一定要记着:不同平台要安装专属该平台的JVM。这就好比你讲中文(.java),Java编译程序帮你翻译为英文(.class),这份英文文件到各个国家之后,再由当地看得懂英文的人(JVM)翻译为当地语言(机器指令)。

所以JVM担任的职责之一就是当地翻译员,将字节码文件翻译为当时平台看得懂的0、1序列,有了JVM,你的Java程序就达到了“编译一次到处运行”的跨平台目的。所以到这里。我们就知道了java程序跨平台性好的根本原因就是java虚拟机JVM存在的原因。

分解过程:

第一步:Java源代码——.CLASS文件字节码,是java的第一次编译。生成的这个.class文件就是可以到处运行的文件。

第二步:Java字节码——到目标机器代码;执行是由JVM执行引擎来完成,JAVA的第二次编译。

2、到处运行的隐含条件——这里的“到处”的前提是“装有JVM”。

看完编译过程在这里说“到处运行”就毫不费力了。因为第二次编译就是在JVM中执行的,也就是在任何一个装有“JVM”的操作系统中完成的。JAVA提供了各种不同平台上的虚拟机制,所以可以实现“到处”。

对JVM的重要认知就是:

对Java程序而言,只认识一种操作系统,这个系统就是JVM,字节码文件(扩展名为.class的文档)就是JVM的可执行文件。

Java程序理想上,并不理会真正执行哪个平台,只要知道如何执行于JVM就可以了,至于JVM实际上如何与底层平台沟通,那是JVM自己的事。由于JVM实际上相当于Java程序的操作系统,JVM就负责了Java程序的各种资源管理。

    1.      JVM就是Java程序的操作系统,JVM的可执行文件就是.class文件。
    2.      Java虚拟机屏蔽了操作系统之间的差异,但是不同的系统使用的虚拟机不同。
全部评论

相关推荐

最近又搬回宿舍了,在工位坐不住,写一写秋招起伏不断的心态变化,也算对自己心态的一些思考表演式学习从开始为实习准备的时候就特别焦虑,楼主一开始选择的是cpp后端,但是24届这个方向已经炸了,同时自己又因为本科非92且非科班,所以感到机会更加迷茫。在某天晚上用java写出hello world并失眠一整晚后选择老本行干嵌入式。理想是美好的,现实情况是每天忙但又没有实质性进展,总是在配环境,调工具,顺带还要推科研。而这时候才发现自己一直在表演式学习,徘徊在设想如何展开工作的循环里,导致没有实质性进展。现在看来当时如果把精力专注在动手写而不是两只手端着看教程,基本功或许不会那么差。实习的焦虑5月,楼主...
耶比:哲学上有一个问题,玛丽的房间:玛丽知道眼睛识别色彩的原理知道各种颜色,但是她生活在黑白的房间里,直到有一天玛丽的房门打开了她亲眼看到了颜色,才知道什么是色彩。我现在最大可能的减少对非工作事情的思考,如果有一件事困扰了我, 能解决的我就直接做(去哪里或者和谁吵架等等……),解决不了的我就不想了,每一天都是最年轻的一天,珍惜今天吧
投递比亚迪等公司10个岗位 > 秋招被确诊为…… 牛客创作赏金赛
点赞 评论 收藏
分享
totoroyyw:千年老妖😂
投递华为等公司10个岗位
点赞 评论 收藏
分享
10-16 22:56
门头沟学院 C++
1234567800:歌尔今年给211开14-15k吗,我本地人连面试都不给😂
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务