当前位置:首页 > 虚拟机 > 正文

每次使用java命令启动虚拟机


一、用于启动JVM运行java程序的java命令JDK(JavaDevelopmentKit)是Java开发工具包,其中包括编写Java程序所必需的编译、执行等开发工具,以及JRE。开发工具有:javac命令编译java程序、java命令启动JVM运行java程序、javadoc命令生成文档、jar命令打包等。
JRE(JavaRuntimeEnvironment)是Java运行时环境提供的软件环境运行Java应用程序所必需的,包括Java虚拟机(JVM)和丰富的系统类库。系统类库是Java预先封装的功能类。只需直接使用即可,可以大大提高开发效率。
JVM(JavaVirtualMachines)是Java虚拟机,它为字节码文件(.class)提供运行时支持。
JDK、JRE、JVM之间的关系如图4所示:
图-4
从图中可以看出,JDK包含了编译、编译等开发工具。运行java程序所需的最小环境是JRE,而JRE包含了Java系统类库和JVM,运行java程序所需的最小环境是JRE,而开发Java程序所需的最小环境是JDK,因为JDK中也包含了很多用到的命令。
二、java虚拟机运行过程

前面已经详细介绍了虚拟机的各个组件,下面我们通过一个实际案例来讨论一下它的运行过程。当通过调用类的main方法来启动虚拟机时,这个过程通常会接收一个字符串数组参数,如程序中:


publicclassHelloApp{
publicstaticvoidmain(String[]args){
n("HelloWorld!");
for(inti=0;i<;i++){
System.出去。println(args);



编译后,在命令行输入:javaHelloApprunvirtualmachine,虚拟机机器会尝试调用HelloApp的main方法。运行时,虚拟机首先检查HelloApp类是否已加载,如果没有,则尝试通过ClassLoader查找。如果搜索失败,则会抛出异常。类被加载后,必须经历链接和初始化的过程。


链接分为三个步骤:检查、准备和分析。验证检查类的符号和语义是否正确。在准备阶段,创建类或接口的静态域。解析可确保该类对其他类或接口的引用有效。然后对类进行初始化,包括执行类中声明的静态初始化函数和静态域初始化构造函数。在整个过程中,一个类的初始化必须在其父类的初始化之后完成。


这个过程可以概括为:首先查找并加载类,然后链接并初始化,保证类的正确性和完整性,最后执行初始化的静态部分过程保证了程序流程的正确性。


进阶资讯

Java虚拟机(JavaVirtualMachine),简称JVM,是一种通过软件模拟在实际计算机上实现的虚拟机器。Java虚拟机拥有自己想象中的处理器、堆栈、寄存器等硬件,以及相应的命令系统。