java编译过程与c/c编译过程的区别
(2011-05-20 20:51:52 )
标签:
闲谈
您关于java编译过程和编译原理,java编译顺序是将java源代码顺序编译为作为jvm可执行代码的java字节代码,
另外,java编译器没有将变量和方法的引用作为数值引用进行编译,也没有按顺序执行进程中的内存计划,而是在字节码中保留了一些符号引用信息。
解释器在运行时创建内存计划,并检查表以确定方法所在的地址
这有效地保证了java的可移植性和安全性。
java编译原理
1、java编译过程与c/c编译过程不同
java编译顺序将java源代码顺序编译为java字节代码,即jvm可执行代码。
c/c编译过程:
c编译器编译并生成对象的代码是为了在特定硬件平台上运行而生成的。 因此,在编译中,
编译顺序通过查找表将所有符号的引用转换为特定的存储器偏移并确保按顺序执行。
java编译过程:
java编译器不会将变量和方法的引用作为数值引用进行编译,也不会按顺序执行进程中的内存计划,而是将一些符号引用信息保留在字节码中。
解释器在运行时创建内存计划,并检查表以确定方法所在的地址
这有效地保证了java的可移植性和安全性。
2、jvm的工作原理
执行jvm字符编码的工作由解释器完成。 解释执行过程分为代码读取、代码验证和代码执行三个步骤进行。
读取代码的工作由类加载器classloader完成。 类加载器读取运行一个序列所需的所有代码。
这还包括顺序代码中的类继承的类和优化
要使用的类。 当类加载器装入类时,它将位于自己的命名空间中。 除了通过符号引用自己的名字空间以外的类,
班级之间没有办法影响其他班级。 此计算机上的所有类都位于同一地址空间中,并且所有外部引入的类都有自己的命名空间。
这样,本地类可以通过共享相反的命名空间来获得更高的执行效率,同时避免与外部引入的类相互影响。 韩国化妆品faceshop怎么样
加载执行顺序所需的所有类后,解释器将确定整个执行顺序的内存计划。 解释器为了引用符号,制作与特定地址空间的对应关系和查找表。
在此阶段,通过确定代码的内部计划,java可以成功处理由于超类更改而导致子类崩溃的问题,并防止代码合法访问。
然后,加载的代码通过字节码检查器进行反思。 检查器可以发现操作数堆栈的优点、正当的数据类型转换等很多错误。 通过检查后,
代码将被执行。
有两种方法可以执行java字节码。
1 )即时编译方式:解释器将字节编译成机器码,然后执行该机器码。
2 )解释器在每次解释和执行代码时执行java字节码顺序的所有操作。 本节将在此引用java编译的内容,
请注意本节其他相关文章。
【编辑介绍】
份额:
喜欢
0
赠金笔
加载中,请稍等……。
正在加载评论,请稍等.
发送评论
登录名:密码:恢复密码注册,记住登录状态
昵称:
评论转载这篇博文
发送评论
以上网友的发言只是表达了其个人观点,并不表达新浪网的观点和立场。