Java程序想要运行,首先需要在电脑上安装JDK。值得注意的是,jdk的安装路径一定不能有中文,在安装JDK时,会产生两个文件jdk和jre,其中,jdk是开发所需要的环境,jre是运行所需要的环境。为了是Java程序得以顺利运行,需要新建一个环境变量JAVA_HOME,如何新建环境变量在此我不过多描述,接下来,我以HelloWorld程序为例简述Java的运行原理。
首先,需要在记事本上编写代码,并将该代码以文件名"HelloWorld.java"存在D盘,具体展示如下:
其次,在命令提示符窗口输入"javac HelloWorld.java ",这是你会发现多了一个名为"HelloWorld.class"的文件,如下:
然后,在命令提示符窗口输入"java HelloWorld",程序即可运行,如下图所示:
Java属于解释型语言,解释型语言有专门的解释器,将原程序解释成特定的平台可执行文件,和C语言不同的是,解释型语言不会进行整体的编译,而是把编译和解释混合在一起执行。但作为解释型语言的Java跨平台性好,只需要通过不同的解释器,将其解释成某平台可识别的指令即可。这是编译的过程无法做到的。
Java运行原理:
*1 执行javac命令,把java源文件编译成class结尾的字节码文件;
*2 生成与平台无关的字节码文件(*.class文件);
*3 执行Java命令,通过Java虚拟机把字节码文件解释为特定平台能够识别的机器指令(即0,1)。
因此,即便是不同平台下将java编译成class文件,但通过相同接口的JVM(Java虚拟机)进行解释,均可将该环境下的字节码解释形成该平台下的可执行的java文件,同时,由于不同操作系统的JVM提供的均相同接口,不同平台的编译器则只需要面对该JVM接口进行编译,这些都决定了java语言具有良好的跨平台性、移植性。
注:* C语言是运行在操作系统上的,且直接转换为机器指令运行,因此,C语言是多处编译,到处运行;
* Java是运行在java虚拟机上的,程序通过java编译器之后则变为Bytecode(字节码),然后由解释器解释为特定操作系统平台可识别的机器指令被识别,因此,Java是一次编译,到处运行。