假设我们有一个java的源文件,叫HelloWorld.java(java结尾为java的源文件),则在windows运行时,会通过编译器(javac.exe)编译成HelloWorld.class(字节码文件),而字节码文件会通过调用java.exe而去动态调用JVM,而虚拟机(JVM)就充当了一个“翻译官”,将字节码文件一行一行的翻译成为当前平台认识的可执行文件,如windows翻译为***.exe,安卓翻译为***.apk。所以,Java是“解释型”语言。所以,通过编译器的一次编译,就能通过虚拟机在各个平台中运行。这就是java的跨平台原理。所以,要完成上面的所有功能,需要去安装JDK,才能对java的源文件进行执行。
java与c语言编译原理的区别
c语言编译过程:假设我们有一个c的源文件,叫HelloWorld.c,在windows运行时,他会通过windows专门的编译器编译,才能在windows中运行,就不能实现一次编译,到处运行。java的字节码文件与平台无关。而c的编译器与平台相关。所以c语言不是一个跨平台的一个语言。也因为c语言会在当前操作系统进行编译,所以效率比java高。