Java程序的执行原理以及解释说明

2020-07-10  本文已影响0人  Android_程序媛

在初学Java的时候,我们安装完Java的开发环境后,就可以通过记事本等编辑工具编写程序了。推荐在Windows操作系统中使用EditPlus工具进行编写。由于我使用的是Mac OS,所以,我使用Sublime Text编辑工具进行编写。

下面我们通过文本编辑工具写一个入门的“问世”程序:
HelloWorld.java

public class HelloWorld{
    public static void main(String[] args){
        System.out.println("HelloWorld");
    }
}

下面所写的内容都将以上面的程序为例,以Mac OS系统为操作环境。

Java的加载与执行

Java程序的运行包括两个阶段:编译阶段和运行阶段。

1. 编译阶段

这个阶段的主要任务是检查Java源程序是否符合Java语法,符合Java语法规则则能够生成正常的字节码文件(xxx.class);不符合Java语法规则则无法生成字节码文件,并报出相应的错误。

编译阶段的过程:程序员需要创建一个以“.java”为扩展名的文件,该文件成为java源文件,源文件当中编写的内容是Java源代码/源程序,而这个源程序是不能随意编写的,必须符合Java语法规则,然后Java程序员需要使用JDK当中自带的javac命令对程序进行编译。

javac的使用规则:javac java源文件的路径

下面我们可以运行一下:

图1.png

通过上图的命令,会生成HelloWorld.class文件,如下图:

图2.png

注意:

2. 运行阶段

在编译阶段生成字节码文件后,我们就需要运行字节码文件执行最后的一步。

该阶段通过使用java命令实现。

java命令的使用规则:java 类名

运行阶段的过程:通过cd命令进入字节码文件所在的目录,然后执行java 类名命令。
下面我们看一下:


图3.png

通过上图,可以看到最终打印出“HelloWorld”这句话,就说明运行成功。
注意:

Java的执行过程以及原理

  1. 通过执行java命令,会先启动JVM;
  2. JVM启动后,JVM会去启动“类加载器ClassLoader”;

类加载器的作用:加载类的。本质上类加载器负责去硬盘上找“类”对应的“字节码”文件,以java HelloWorld为例,那么类加载器会去硬盘上搜索“HelloWorld.class”文件;

  1. 类加载器如果在硬盘上找不到相应的字节码文件,会报错:

错误: 找不到或无法加载主类 Test

类加载器如果在硬盘上找到了对应的字节码文件,类加载器会将该字节码文件装载到JVM当中,JVM启动“解释器”将字节码解释成“1001110...”这种二进制码,操作系统执行二进制码和硬件交互。
注意
默认情况下,类加载器会去硬盘中当前路径下找字节码文件,这里就是为什么使用java命令执行之前,需要进入字节码文件所在的目录下,否则会报错。
下面是整个程序编译和运行两个阶段的逻辑图:

图4.png

问题:能不能给类加载器指定一个路径,让类加载器去指定的路径下加载字节码文件呢?

答案是可以,但是需要设置环境变量classpath。

classpath是给类加载器指路的,属于Java特有的,我们如果配置了classpath后,类加载器只能在配置的路径下查找字节码文件,不再再当前路径下查找了。所以,我们不需要配置环境变量classpath,每次执行的时候,需要切换到字节码文件所在的路径在,然后运行。

Java程序的解释说明

public class和class的区别

以上就是这篇文章的内容!

上一篇下一篇

猜你喜欢

热点阅读