显著特性
java有两个显著特性:write once run anywhere,虚拟机的回收机制
一次编写、到处运行:说的是java语言跨平台特性。
“一次编写”是说将java源代码编译成.class文件。.class 文件就是到处运行的文件,然后java 字节码会被转化成目标机器代码,这是由jvm来执行的,即java的第二次编译。
“到处运行”的关键和前提就是jvm。在windows平台和Linux平台都有相应的JDK,安装好JDK后,也就有了java语言运行环境(jre和jvm)。在第二次编译过程中jvm起着关键作用。在可以运行java虚拟机的地方都内含着一个jvm操作系统。从而使java提供了各种平台上的虚拟机制。java通过字节码和java虚拟机这种跨平台的抽象,屏蔽了操作系统和硬件的细节。
java是否是解释执行??
首先java先经历过javac第一次编译成字节码,也就是二进制的.class文件,在运行的时候,通过jvm内嵌的解释器将字节码转换成机器码。现在常见的jvm都提供了JIT(just in time)编译器,动态编译器,具有缓存功能,会将编译过的代码放在缓存区。能够在运行时将热点代码(常见代码)编译成机器代码,这部分热点代码就属于编译执行,而不是解释执行。
jvm不同的启动方式也会影响到,第二次代码转化(字节码到机器码)是编译还是解释。
“-Xint”:比如指定“-Xint”告诉JVM只进行解释执行,不进行编译。这样的话就会屏蔽掉JIT的优势。
“-Xcomp”:与其对应的还有一个“-Xcomp”参数,会让虚拟机关闭解释器,不要进行解释执行,或者叫作最大优化级别。但是不一定最高效,这种模式会让JVM启动变慢很多,也会影响到JIT编译器优化。
“AOT”:在运行前直接将字节码编译成机器代码,避免了JIT预热等开销。
何为编译?何为解释
编译型语言是在 编译过程中生成目标平台的指令,解释型语言是在运行过程中生成目标平台语言
java平台的其他特点
java语言特性:泛型、lambda
基础类库:集合,IO/NIO,网络,并发,安全
447973810878257270.jpg
网友评论