全国热线

025-86901720

全国监督投诉热线:9:00-23:00

Java和C/C++的编译过程有什么不同

对于很多人来说,掌握了其中一门语言,再学另一门理解起来会轻松一些。当然Java和C/C++也还是存在很大不同的,比如编译过程就不一样,下面听南京学码思java培训机构老师来详细说说。

Java和C/C++算是我们目前比较熟悉的两门编程语言,牢牢占据着计算机编程语言排行榜前两位,这两门语言其实是有共通之处的,对于很多人来说,掌握了其中一门语言,再学另一门理解起来会轻松一些。当然Java和C/C++也还是存在很大不同的,比如编译过程就不一样,下面听南京学码思java培训机构老师来详细说说。

Java和C/C++的编译过程有什么不同

1、Java编译过程与C/C++编译过程不同

Java编译程序将java源程序编译成jvm可执行代码--java字节码.

c/c++编译过程:

当C编译器编译生成一个对象的代码时,该代码是为在某一特定硬件平台运行而生成的。因此在编译过程中,编译程序通过查表将所有对符号的引用转换为特定的内存偏移量,以保证程序运行。

Java编译过程:

Java编译器却不将对变量和方法的引用编译为数值引用,也不确定程序执行过程中的内存布局,而是将些符号引用信息保留在字节码中,由解释器在运行过程中创立内存布局,然后再通过查表来确定一个方法所在的地址,这样就有效地保证了java的可移植性和安全性。


2、jvm工作原理

运行jvm字符码的工作是由解释器来完成的。解释执行过程分三步进行:代码的装入、代码的校验、和代码的执行。

装入代码的工作由“类装载器classloader”完成。类装载器负责装入运行一个程序需要的所有代码,这也包括程序代码中的类所继承的类和被调

用的类。当类装载器装入一个类时,该类被放在自己的名字空间中。除了通过符号引用自己名字空间以外的类,类之间没有其他办法可以影响其他类。在本台计算机的所有类都在同一地址空间中,而所有从外部引进的类,都有一个自己独立的名字空间。这使得本地类通过共享相同的名字空间获得较高的运行效率,同时又保证它们与从外部引进的类不会相互影响。

当装入了运行程序需要的所有类后,解释器便可确定整个可执行程序的内存布局。解释器为符号引用与特定的地址空间建立对应关系及查询表。通过在这一阶段确定代码的内布局,java很好地解决了由超类改变而使子类崩溃的问题,同时也防止了代码的非法访问。

随后,被装入的代码由字节码校验器进行检查。校验器可以发现操作数栈益处、非法数据类型转化等多种错误。通过校验后,代码便开始执行了。


java字节码的执行有两种方式:

1)即时编译方式:解释器先将字节编译成机器码,然后再执行该机器码。

2)解释执行方式:解释器通过每次解释并执行一小段代码来完成java字节码程序的所有操作。


作为当前的热门计算机编程语言,java和C/C++各有优势。如果你对于java开发感兴趣,想要系统学习的话,就来南京学码思java培训机构吧,课程设置完善,专业老师手把手教学,从零开始,循序渐进,让你能轻松掌握java开发技能,做与时俱进的java技术人才。现在咨询在线老师,还可以获得直接java教程和试听权限,欢迎前来实地考察,试听感受学码思java培训课程。


上一篇:你知道java虚拟机的体系结构吗
下一篇:Java中不健壮代码是怎样产生的,该如何解决

相关推荐

免费试听 | 学费咨询 | 在线报名 | 申请补贴 | 软件培训 | 网站地图

2016-2020 南京学码思教育科技有限公司 .All Rights Reserved

苏ICP备16033487号 www.njxms.com.cn

全国热线

400-080-3312

全国监督服务热线:9:00-23:00