阵营
人们在认识事物的时候,很喜欢贴标签、归类、划阵营。越是阅历多就越会这样。
这也不完全是什么坏事,至少可以把事物间作个对比、归纳。
java到底是一种什么样的语言呢?
首先,她是一门高级语言。这是与机器语言、汇编语言相比较而言的。
也就是说,她主要还是为了方便人的理解与阅读,并不是优先考虑机器的执行效率。
其次,我们总喜欢把高级语言划分为“编译型”与“解释型”。比如,c是编译型的:
因为我们需要先用编译器把源代码转换为机器能懂的可执行代码,然后去执行。
注意,这个可执行代码是与机器和操作系统密切相关的。windows下的可执行程序,拿到苹果电脑上,根本无法运行。
比如:python就是解释型的,也被称为“脚本语言”。
python源码不需要编译,而是在需要执行的时候,用解释器一边翻译一边执行,这当然会有点慢,但获得了强大的动态能力。
Java呢? 二者皆非。
Java采用了当时还比较新潮的思路(在今天当然不足为奇了):
她把源码不进行彻底的编译,而是编译到半山腰,形成一种运行在理想的或说假想的机器上的代码。
因为这台机器是假想的,因而也就不会有windows, Linux,或是x86, power pc 等软硬件上区别。
这台假想的机器,在不同的真实机器上,可以通过不同的软件模拟出来。被称为“虑拟机”