首页 > 技术文章 > 初步了解 Java 的加载与执行

kxff 2021-01-24 16:15 原文

初步了解 Java 的加载与执行

在编写第一个 Java 程序之前,我们应当对 Java 的加载与执行提前有一个简单的了解,请看下图:

通过上图,我们可以看到 Java 程序从开发到最终运行是这样进行的:

第一步(写代码):在任意位置创建一个.java 结尾的文件,程序员在该文件中编写符合 Java语法的源代码,这个文件被称为Java 源文件。

第二步(编译):使用“javac”命令对 java 源文件进行编译,如果 Java 源文件符合 Java语法规则,则编译生成 1 个或者多个以“.class”结尾的文件。“.class”结尾的文件我们称之为字节码文件,注意字节码文件不是普通文本文件,使用记事本等文本编辑器是无法打开的,但该文件内容也不是二进制,如果是二进制形式的话,操作系统是可以直接执行的,这个文件的内容我们称之为字节码。注意:这里有一个“类名”的概念,假设生成的文件是 A.class,则表示类名为 A,B.class 则表示类名为 B。

第三步(运行):使用“java”命令运行已编译的 Java 程序,假设编译之后的字节码文件是 A.class,则在 dos 命令窗口中执行 java A命令,这个时候 Java 虚拟机(JVM)就启动了,Java 虚拟机通过“类装载器 ClassLoader”从硬盘中找到 A.class 文件并装载,字节码文件被装载到 Java 虚拟机之后,Java 虚拟机解释器对字节码进行解释,最终解释为二进制码,然后操作系统通过执行二进制指令来和硬件平台完成交互。

以上则是 Java 程序加载与执行的过程,接下来我给大家总结 7 条规则,大家可以理解并记忆一下:

① Java 程序从开发到运行包括编译和运行两个阶段,这两个阶段可以在不同的操作系统中完成,例如在 windows 环境下进行编译,在 Linux 环境下运行,这是因为有 JVM 机制的存在,做到了一次编译到处运行(跨平台/可移植)。

② 编译阶段需要使用 javac.exe(安装 JDK 之后该命令就存在了)命令,运行阶段需要使用 java.exe(安装 JRE 之后该命令就存在了)命令。

③ 一个 Java 源文件可能会编译生成多个 class 文件。

④ Java 源文件中的源代码如果不符合 Java 的语法机制则编译时编译器会提示错误信息,并且无法生成 class 文件。反之则生成 class 文件,而 class 文件才是最终要执行的程序,此时将 Java 源文件删除是不会影响 Java 程序运行的(当然,我们也不必删除 java 源文件,因为在运行 class 文件之后,如果没有达到预期的运行效果,这个时候还需要将 Java 源代码修改,重新编译,以达到最终的运行效果)。

⑤ 若生成的字节码文件名为 A.class,那么我们称 A为一个类的名字(这个先记住就行,后面的内容会讲)。

⑥ 当编译阶段完成之后,我们可以使用 JRE 中的 java.exe 命令运行程序,例如执行命令“java A”,该命令执行后会启动类加载器,类加载器去硬盘上搜索 A.class 文件,找到该字节码文件之后,将其加载到 JVM 当中,JVM 中的解释器会将 A.class 字节码文件解释为操作系统可以执行的二进制码,然后操作系统通过执行二进制码和硬件平台交互。

⑦ 运行 Java 程序的前提是当前操作系统上已经安装了对应版本的 JVM(JVM 不是单独安装的,安装 JRE 即可,不同的操作系统需要安装不同版本的 JRE,不同版本的 JRE 对应不同版本的 JVM)。

在了解了 Java 程序的加载与执行之后,我们开始动手实现第一个 Java 程序吧!

推荐阅读