详述Java程序运行原理
本文参考两篇文章:https://blog.csdn.net/linxi1209163com/article/details/48829879
http://blog.csdn.net/bingduanlbd/article/details/8332664
在研究Java程序运行原理之前,我们先来看一下高级程序语言是如何工作的。我们所编写的源代码机器显然是读不懂的,而要想运行这些程序则必须把它们翻译成机器语言也就是二进制代码,这个过程通常由编译器完成。有些编译器直接将源代码编译成机器码,载入内存后CPU可以直接运行,例如C语言的编译器。而机器码的格式是跟具体的CPU架构相关的,Intel的CPU机器码对于ARM CPU来说是无法理解的。因此,同样的源代码需要根据不同的硬件进行特定的编译。简而言之,源代码与机器代码之间的桥梁就是编译器,我们写好源代码,编译器将源代码编译成机器代码交给CPU执行。
编译型语言VS解释型语言
编译型语言:1、原理:通过专门的编译器,将高级语言一次性翻译成可被平台执行的机器码。
2、优点:编译一次,脱离开发环境可独立运行,故效率高。
3、缺点:对编译器严重依赖,可移植性差。
解释型语言:1、原理:专门的解释器,将原程序解释成特定的平台指令。
2、优点:跨平台性好,只需通过不同的解释器,将其解释成某平台可识别的指令即可。
3、缺点:编译和解释混合在一起执行,导致效率低。
那么Java属于哪种类型的语言呢?
在解释Java运行原理之前有几个名词是你必须了解的。
1、JVM:JAVA虚拟机,用于提供java解释环境,形成可执行文件。不同平台JVM各不相同,但都提供相同端口。
2、JRE:JAVA运行环境。
3、JDK:核心开发包,提供java编译器,运行相关环境、工具和类库。
使用java进行编程,首先源程序会通过编译,将java编译成class字节码,在通过解释形成可执行文件,所以java既是解释型语言,又是编译型语言。
JAVA程序运行原理:首先通过编译器编译,将源程序编译形成class文件,由于不同平台JVM提供相同接口,故即便是不同平台下将java编译成class文件,但通过相同接口的JVM进行解释,均可将该环境下的字节码解释形成该平台下的可执行的java文件,同时,由于不同操作系统的JVM提供的均相同接口,不同平台的编译器则只需要面对该JVM接口进行编译,这些都决定了java语言具有良好的跨平台性、移植性。