<b>Java编译历程与c/c++编译历程有何差别</b>[Java编程]
本文“<b>Java编译历程与c/c++编译历程有何差别</b>[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
你对Java编译历程和编译原理,Java编译程序将java源程序编译成jvm可履行代码--java字节码,并且Java编译器却不将对变量和办法的引用编译为数值引用,也不肯定程序履行历程中的内存筹划,而是将些标记引用信息保存在字节码中,由注释器在运行历程中创建内存筹划,然后再通过查表来肯定一个办法所在的地址,这样就有效地保证了java的可移植性和安全性.
Java编译原理
1、Java编译历程与c/c++编译历程差别
Java编译程序将java源程序编译成jvm可履行代码--java字节码.
c/c++编译历程:
当C编译器编译生成一个对象的代码时,该代码是为在某一特定硬件平台运行而生成的.因此在编译历程中,编译程序通过查表将全部对标记的引用转换为特定的内存偏移量,以保证程序运行.
Java编译历程:
Java编译器却不将对变量和办法的引用编译为数值引用,也不肯定程序履行历程中的内存筹划,而是将些标记引用信息保存在字节码中,由注释器在运行历程中创建内存筹划,然后再通过查表来肯定一个办法所在的地址,这样就有效地保证了java的可移植性和安全性.
2、jvm工作原理
运行jvm字符码的工作是由注释器来完成的.注释履行历程分三步举行:代码的装入、代码的校验、和代码的履行.
装入代码的工作由“类装载器classloader”完成.类装载器负责装入运行一个程序需求的全部代码,这也包含程序代码中的类所担当的类和被调
用的类.当类装载器装入一个类时,该类被放在自己的名字空间中.除了通过标记引用自己名字空间以外的类,类之间没有其他办法可以影响其他类.在本台计算机的全部类都在同一地址空间中,而全部从外部引进的类,都有一个自己独立的名字空间.这使得本地类通过同享相同的名字空间得到较高的运行效率,同时又保证它们与从外部引进的类不会彼此影响.
当装入了运路程序需求的全部类后,注释器便可肯定整个可执路程序的内存筹划.注释器为标记引用与特定的地址空间成立对应关系及查询表.通过在这一阶段肯定代码的内筹划,java很好地办理了由超类改变而使子类崩溃的问题,同时也避免了代码的不法拜候.
随后,被装入的代码由字节码校验器举行查抄.校验器可以发现操作数栈好处、不法数据范例转化等多种错误.通过校验后,代码便开始履行了.
java字节码的履行有两种方法:
1)当即编译方法:注释器先将字节编译成机械码,然后再履行该机械码.
2)注释履行方法:注释器通过每次注释并履行一小段代码来完成java字节码程序的全部操作.本节关于Java编译的内容介绍到这里,请关注本节其他相关报道.
以上是“<b>Java编译历程与c/c++编译历程有何差别</b>[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |