作为一名java的使用者,掌握其基本的运行原理与体系结构是必要的,下面我们通过一个简单的例子来简述java程序的运行过程与原理。
创建一个小程序
为了方便介绍,我们选择创建一个百看不厌的小程序"HelloWorld".
(注:以下程序的实现需要事先安装好JDK)
public class HelloWorld{
public static void main(String [] args){
System.out.println("Hello World");
}
}
生成class文件
在目录下打开cmd窗口输入:
javac HelloWorld.java
按下回车后我们发现在目录下新生成了HelloWorld的class文件!!?
运行Java程序
接下来我们在cmd窗口中继续输入:
java HelloWorld
程序运行成功!!!
至此,恭喜你已经在终端中编译并运行了第一个java程序。
Java程序的运行原理
java虚拟机
通过上面小程序的实现,我们发现java程序的实现似乎有所不同,这里我们首先介绍一下java最具吸引力的特性之一——java虚拟机(JYM)
Java虚拟机是一个可以执行Java字节码的虚拟机进程。用Java编写的程序(存放在扩展名为java的文件中)经过编译器(即JDK根目录bin文件夹中的javac.exe文件)编译成字节码文件(即扩展名为class的文件),此时的class文件并不是我们所熟知的01编码,class文件通过虚拟机形成可执行文件。不同平台的JVM各有不同,但均提供相同的接口,实现了程序与操作系统的分离,从而实现了Java 的平台无关性。 也就是说,相对于解释型语言,java这种编译型语言具有较高的可移植性,实现了“”一处编写,处处运行”,编译后,不依赖于平台环境,在各种操作系统均可运行。
java的运行过程
大体来说,java的运行过程主要分为:
- 源文件(.java源代码)通过编译器编译成字节码文件class。
- 通过JVM中的解释器将字节码文件生成对应的可执行文件。
- 由解释器翻译的特定的机器码将在特定的目标机器上运行。
具体过程如图所示:
最后
记录一下相关指令:
- 编译:javac XXX.java
- 执行:java XXX
- 反编译 javap –c XXX.class