参考:JAVA核心36讲
JAVA本身是一门面向对象的一门语言,有最显著的两个特性: [1]:"Write once, run anywhere",即JAVA语言的跨平台特性,JAVA语言可以运行在Win环境,也可以运 行在Linux环境下,JAVA语言的跨平台特性与虚拟机存在密不可分,我们必须在不同平台下安装不同环境的JDK。 安装好JDK后,系统就有运行JAVA语言的运行环境。JVM层面封装了系统API,提供了不同系统的一致的调用行为, 减少了为适配不同的操作的系统,不同架构的工作量。
JAVA语言本身与其他语言没有太大的差异区别,Java语言可以跨平台,而是在不同的平台都有可以让Java语 言运行的环境,所以才有Java一次编译,到处运行这样的效果。 程序从源码到运行的三个阶段:编码-->编译-->运行-->调试。JAVA在编译阶段体现了跨平台的特点,首先 是将Java源代码转化成.CLASS文件字节码,这是第一次编译。.class文件就是可以到处运行的文件。然后Java字 节码会被转化为目标机器代码,这是是由JVM来执行的,即Java的第二次编译。 到处运行”的关键和前提就是JVM。因为在第二次编译中JVM起着关键作用。在可以运行Java虚拟机的地方都内 含着一个JVM操作系统。从而使JAVA提供了各种不同平台上的虚拟机制,因此实现了“到处运行”的效果。需要强调 的一点是,java并不是编译机制,而是解释机制。Java字节码的设计充分考虑了JIT这一即时编译方式,可以将字 节码直接转化成高性能的本地机器码,这同样是虚拟机的一个构成部分。
“GC, Garbage Collection”,即垃圾回收机制,JAVA通过垃圾收集器回收分配内存,程序员不需要自己操心内存的分配和回收。