admin 管理员组文章数量: 1086019
2024年3月11日发(作者:maven功能介绍)
Java跨平台运行的原理-编译过程-运行机制
Java能进行进行跨平台运行主要是源于JVM(Java Virtual
Machine,Java虚拟机),是通过JVM实现了特定平台下的Java
解释器,Java字节码就可以通过解释器在该平台下执行,这就是
Java跨平台的根本。
1、Java源文件的编译过程
Java应用程序的开发周期包括编译、下载、解释和执行几个部
分。Java编译器将Java源程序翻译为JVM可执行的代码—字节
码。这一编译过程与C/C++的编译有些不同,C/C++编译器生成的
代码是针对某一硬件平台的代码。
因此,在编译过程中,编译器通过查表将所有对符号的引用转
换为特定的内存偏移量,以确保程序的正确运行。
而Java编译器则不会把对变量和方法的引用编译为数值引用,
也不确定程序运行过程中的内存布局,而是将这些符号引用信息
保留在字节码中,由解释器在运行时去创建内存布局,然后再通
过查表来确定一个方法所在的地址,这样就有效地确保了Java的
可移植性和安全性。
2、Java解释器运行机制
运行字节码的工作是由解释器来完成的。解释执行过程分为三
第 1 页 共 3 页
步:代码装入、代码校验、代码执行。
代码装入的工作由类加载器(Class Loader)来完成。类加载器
负责加载运行程序所必须要的所有代码。当类加载器加载一个类
之后,类被放在自己的名字空间中,除了通过符号引用自己名字
空间以外的类,类与类之间没有其他办法可以互相影响。
当加载了运行程序所必须要的所有类之后,解释器便可以确定
整个可执行程序的内存布局,并为符号引用同特定地址空间建立
对应关系查询表。
通过在这一阶段确定代码的内存布局,Java很好地解决了由于
基类改变而导致子类崩溃的问题,同时也防止了代码对地址的非
法访问。
当代码被装入之后,字节码校验器开始对字节码进行检查。校
验器可以发现操作数栈的溢出和非法数据类型转换等多种错误。
在校验通过后,Java代码便开始执行了。
3、Java字节码的执行方式
Java在执行字节码时有两种方式:即时编译方式和解释执行方
式。即时编译方式(JITJust In Time)先将字节码编译成机器码,
再执行机器码。这种运行方式的优点是执行经过二次编译后的机
器码可以提升程序的执行速度。
解释执行方式是解释器通过每次解释,并执行一小段代码来完
成Java字节码程序的所有操作。比如,假设Java字节码要对两
第 2 页 共 3 页
个数值进行加法操作,则解释器调用自身的一段代码来完成加法
操作。
第 3 页 共 3 页
版权声明:本文标题:Java跨平台运行的原理-编译过程-运行机制 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/b/1710109104a558114.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论