首先说明一个概念:Java语言是一种特殊的高级语言,他既有解释型语言的特征,又具有编译型语言的特征。造成这一特殊性的原因是:Java要经过编译与解释两个过程。
先将上面一句话放着,我们说说高级语言的运行机制:
- 编译型:
编译型语言有特定的编译器,针对于不同的操作系统,将源代码翻译成对应的机器码,编译生成的文件可以独立的再特定的系统环境上运行,因此,执行的效率也就较高;但是,如果要移植到不同的系统平台,那么就需要将源代码用特定系统的编译器重新编译,故而移植性较差。
常见的C、C++、都是编译型语言。
- 解释型:
解释型语言有专门的解释器对源码进行逐行的解释成对应平台的机器码并立即执行,可以理解成解释型语言每一次都会编译,因此效率也就较低,而且不能脱离了解释器运行,但是解释型语言的移植性较好,只需要在不同的平台安装不同的解释器,便可以解释执行,也是因为这个原因,造成了解释型语言的效率就低,所有学习的时候要注意:所有的特性都是有一定的原因的,找到这些原因,就能更好的理解这个语言(貌似好多事都是这样的)。
常见的Ruby、Python都是解释型语言。
返回到Java,开头已经提及了,Java是一种特殊的高级语言,所有,下面我们看看Java的运行机制:
Java的运行机制分下面几个步骤:
- 编写源文件,以*.java的格式存储成一个文件
- 通过Java编译器编译,生成*.class的字节码文件
- JVM(Java虚拟机)解释执行字节码文件
其中:编译生成的字节码具有平台无关性,但是JVM确是平台有关的,一句话总结:
Java运行机制有两个阶段:先编译,后解释。编译平台无关,解释平台有关。
PS:理解了上面一句话,对于Java的运行机制也就有了一个简单的了解,当然光就一个JVM都需要大量的时间精力去研究,但是作为入门的话,只需要先对于这些概念有一个印象,在后面的更新中,也会用代码去表现上面的特性。
好了,了解了Java的运行机制,结合上面的解释型与编译型语言的特点,就可以不难总结出Java的某一些特性了,这里列举一些,不全面, 其他的后续再学习,再发现,没有什么是一次性就搞定的:
- 因为是有编译的,且生成的字节码文件平台无关,这就说明Java具有良好的移植性,(其实将Windows写的Java项目导出成war包,直接在Linux执行,就很好的证明了这一点,因为导出的是.class文件,这一点在后续会证明)
- 因为不同的平台有不同的JVM去解释字节码,不用一次执行一次编译,效率当然是高的。
最后说一句,这次写到最后的时候,突然页面丢失了,我也是很郁闷的......
还有就是,发现上一更好像有错别字,哈哈哈哈,尴尬了。