谈谈对Java平台的理解

Java是一种面向对象的语言,最显著的特点有两个:

(1)write once,run anywhere,能够非常容易的获得跨平台的能力,而且是跨平台开发语言中相对说非常成熟的一种

(2)Java垃圾回收机制(GC),大部分情况下,程序员不需要担心内存分配与回收

Java的特性

(1)JRE:java运行时环境,包含了JVM和java类库

(2)JDK:可以看做是JRE的一个超集,提供了更多的工具,如编辑器(javac),各种诊断分析工具,文档工具(javadoc)等

(3)面对对象:封装,继承,多态

(4)平台无关性:JVM运行.class文件

(5)语言特性:泛型,lambda表达式

(6)类库:集合,并发,网络,IO/NIO

Java代码执行过程

(1)我们开发的java源代码,首先通过javac编译成字节码(bytecode)

(2) 在运行时,通过Java虚拟机(JVM)内嵌的解释器将字节码转换成为对应平台能识别的机器码,机器码再在平台上进行操作

Java是解析运行吗?

首先,Java源码经过javac编译会生成.class文件,.class文件经JVM内嵌的解析器解析执行,但这只是Java代码运行比较常见的一种方式。

(1)Java还存在JIT编译器(Just In Time Compile 即时编译器)把经常运行的代码作为“热点代码”编译成与本地平台相关的机器码,并进行各种层次的优化。

(2)在Java 9出来后,还提供了AOT编译器,能将所有代码编译成机器码执行。

综上,Java既可以通过解析运行,也可以直接编译运行,并不是所谓的解析运行的语言。