探秘Java虚拟机

一 点睛

不论是用控制台模式,还是Eclipse、Java编译器——javac,都会将源代码编译成 .class 这样的字节码文件,这样的文件,并不能如同可执行文件一样,双击就能执行,而是必须通过java命令,将 .class 文件送往Java 虚拟机(JVM),通过JVM的解释而完成程序的执行,在这其中,JVM扮演着很重要的作用。

JVM可看作是机器和编译程序之间加入了一层抽象的虚拟机器。这台虚拟的机器在任何平台上都提供给编译程序一个共同的接口。编译程序只需要面向虚拟机,生成虚拟机能理解的字节码,它不面向任何特定的处理器,只面向虚拟机。每一种平台的解释器是不同的,但是实现的虚拟机却是相同的。

Java程序得以执行的环境称为Java运行环境(JRE),它由Java虚拟机和Java API构成。一个Java程序若想运行在Java虚拟机之中,源代码的语句需由Java编译器编译成字节码。字节码本质上是一种标准化可移植的二进制格式。该格式以Java类文件(.class)的形式存在。

一个Java程序可由多个不同的.class文件构成。在早期发布大型的Java程序中,通常把多个.class文件打包成一个发布文件.jar,其扩展名来自于"java archive"(java归档文件)的简称。

Java虚拟机在执行.class或.jar文件时,使用到“即时编译器”(JIT compiler),它能把字节码,转换成可以直接发送给处理器指令的程序。本质上,“即时编译器”是Java程序的第二个编译器,它能把通用的字节码编译成特定系统的机器指令代码。但是,这里的二次编译,对用户来说基本上是“透明的”,即它的存在用户无须感知。

二 虚拟机在整个架构中的位置

探秘Java虚拟机_第1张图片

三 JVM体系结构

探秘Java虚拟机_第2张图片

你可能感兴趣的:(java)