1. javac.exe

Java编译器,将 .java 文件编译成 .class 文件,即将源代码文件编译成字节码文件,字节码文件还不是机器能直接运行的文件。 javac.exe 编译后得到的 .class 文件是二进制指令,但不是机器指令,而是 Java 虚拟机可识别的指令。

2. java.exe

Java解释器,启动 JVM(Java虚拟机),将 .class 文件一行一行地解释成机器指令执行。(由 Java 虚拟机对字节码进行解释和执行) 

这就是为什么 Java 程序能跨平台运行的原因。无论是在Windows、Linux、MAC等系统上,只要装有相应版本的 JVM,该JVM 就能把 .class 文件解释成机器指令执行。实现“一次编译,随处运行”。

3. javaw.exe

主要用于启动基于GUI的应用程序。跟 java 命令相对的,运行 java 命令时,会出现并保持一个console窗口,程序中的信息可以通过 System.out 在 console 内输出,而运行 javaw,开始时会出现 console,当主程序调用之后,console 就会消失。 

编译:.java(源代码) ---> .class(字节码)
解释:.class(字节码) ---> 加载并启动JVM(类加载) ---> .class(机器指令)
执行:通过JVM来完成运行输出

4.Java运行机制 

①编写一个Java源文件 Main.java。

②使用 javac Main.java 的命令开启 Java编译器进行编译。

③编译完成之后,会自动生成一个 Main.class 的字节码文件。

④使用 java Main 的命令启动 Java虚拟机(JVM)运行程序,JVM首先将编译好的字节码文件加载到内存(这个过程称为类加载),它是由类加载器完成的,然后 JVM 会通过 Java 解析器对加载到内存中的 Java 类进行解析执行。

⑤执行后会生成计算机可以识别的机器码文件。

⑥机器码文件在计算机运行并显示最终的结果。

 

更多推荐

Java——javac.exe、java.exe、javaw.exe的区别及Java运行机制