美文网首页
java编译过程

java编译过程

作者: huapro | 来源:发表于2019-05-19 11:10 被阅读0次

1、java编译过程与c/c++编译过程不同
java编译程序将java源程序编译成jvm可执行代码--java字节码.
c/c++编译过程:当C编译器编译生成一个对象的代码时,该代码是为在某

一特定硬件平台运行而生成的。因此在编译过程中,编译程序通过查表将

所有对符号的引用转换为特定的内存偏移量,以保证程序运行。
java编译过程:java编译器却不将对变量和方法的引用编译为数值引用,

也不确定程序执行过程中的内存布局,而是将些符号引用信息保留在字节

码中,由解释器在运行过程中创立内存布局,然后再通过查表来确定一个

方法所在的地址,这样就有效地保证了java的可移植性和安全性。
2、jvm工作原理
运行jvm 字符码的工作是由解释器来完成的。解释执行过程分三步进行:

代码的装入、代码的校验、和代码的执行。
装入代码的工作由“类装载器class loader”完成。类装载器负责装入运

行一个程序需要的所有代码,这也包括程序代码中的类所继承的类和被调

用的类。当类装载器装入一个类时,该类被放在自己的名字空间中。除了

通过符号引用自己名字空间以外的类,类之间没有其他办法可以影响其他

类。在本台计算机的所有类都在同一地址空间中,而所有从外部引进的类

,都有一个自己独立的名字空间。这使得本地类通过共享相同的名字空间

获得较高的运行效率,同时又保证它们与从外部引进的类不会相互影响。

当装入了运行程序需要的所有类后,解释器便可确定整个可执行程序的内

存布局。解释器为符号引用与特定的地址空间建立对应关系及查询表。通

过在这一阶段确定代码的内布局,java很好地解决了由超类改变而使子类

崩溃的问题,同时也防止了代码的非法访问。
随后,被装入的代码由字节码校验器进行检查。校验器可以发现操作数栈

益处、非法数据类型转化等多种错误。通过校验后,代码便开始执行了。
java字节码的执行有两种方式:
1) 即时编译方式:解释器先将字节编译成机器码,然后再执行该机器码

2)解释执行方式:解释器通过每次解释并执行一小段代码来完成java字节

码程序的所有操作。

相关文章

  • java编译过程

    1、java编译过程与c/c++编译过程不同java编译程序将java源程序编译成jvm可执行代码--java字节...

  • JVM内存模型与数据结构

    JAVA代码执行过程 JAVA源码编译由三个过程组成:源码编译机制、类加载机制、类执行机制。代码编译由JAVA源码...

  • Java代码编译和执行过程

    Java代码编译和执行过程 Java代码的编译和执行的整个过程大概是:开发人员编写Java代码(.java文件),...

  • java 查看命令

    javac -verbose Hello.java 这个命令是编译java文件并查看编译过程 java -verb...

  • 第一章 进入Java的世界

    Java的编译和运行过程 step1. 编写源文件(.java) step2. 编译器编译.java,产生类文件(...

  • java编译过程

    (119条消息) JAVA代码编译流程_我回家吃饭了的博客-CSDN博客_java编译[https://blog....

  • Java的运行原理

    java程序执行过程: .java→.class→机器码java编译器 (编译) → 虚拟机(解释执行) → 解...

  • Scala的第一个程序Hello world!

    回忆Java编译运行的过程 1、编写helloworld.java2、编译javac helloworld.jav...

  • Java 虚拟机内存区域的划分

    1. Java程序的执行过程 Java源文件(.java) 首先要经过 Java编译器 编译生成 Java字节码文...

  • [JVM系列]Java编译过程

    聊一聊Java的编译过程

网友评论

      本文标题:java编译过程

      本文链接:https://www.haomeiwen.com/subject/nzvfzqtx.html