java文件为什么不用JVM直接编译?

Time:2021-03-04 Author:admin

​    我们编写的java文件在由编译器编译后会生成对应的class字节码文件,然后再将class字节码文件转给JVM。JVM会处理解析class文件,将其内部设置的类、方法、常量等信息全部提取出来,然后找到main方法开始一步一步编译成机器码并执行,中间会根据需要调用前面提取的数据。

java文件为什么不用JVM直接编译?

    java文件为什么不用JVM直接编译?这样效率不是更高么?

 

   首先要知道java之所以强大,原因之一就是JVM的强大。强大之一是JVM是"跨平台"的。无论在哪种操作系统上执行,都可以转成对应的机器语言,不需要担心适配问题。第二点就是JVM是"跨语言"的,因为JVM只认class文件,所以其他语言只需要一个编译器编译成class文件就可以使用JVM来编译执行了。

 

   JVM组件分析

 

   根据上面的说明可以知道java程序执行的核心是通过JVM来实现的,那么就需要知道JVM内部是如何执行的。JVM内部可以分为四大部分,运行时数据区域、类加载系统、执行引擎、本地接口和本地方法库。

java文件为什么不用JVM直接编译?

   类加载系统:主要就是指类加载器,用于把class数据文件加载到运行时数据区域,然后由数据区域来编译执行。

 

   运行数据区域:搭配执行引擎来编译传来的文件中的代码,然后执行,并且根据需要通过本地方法接口调用本地方法。

 

   执行引擎:主要用于代码的编译和运行时对象的回收。

 

   本地库接口和本地方法库:提供一些java无法实现,需要底层执行调用的方法,是jvm访问底层的重要途径。