谈谈java平台的理解

Q:谈谈你对java平台的理解?“java是解释执行”,这句话正确吗?

典型回答

java本身就是一种面向对象的语言,最显著的特性有两个方面,一是所谓的“书写一次到处运行”(Compile once, run anywhere),能够非常容易的获得跨平台的能力;另外一个就是垃圾收集(GC),java通过垃圾收集器回收分配内存,大部分情况下,程序员不需要自己操心内存的分配和回收。

对于“java是解释执行”这句话,这个说法不太正确。我们开发的java源代码,首先通过javac编译为字节码,然后在运行时,通过java虚拟机内嵌的编译器将字节码转换成最终的机器码。但常见的jvm,比如hotspot jvm,都提供了JIT(Just-In-Time)编译器,也就是通常说的动态编译器,JIT能够在运行时将热点代码编译成机器码,这种情况下部分热点代码就属于编译执行,而不是解释执行。

相关知识总结

java特性

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

平台无关性(java运行.class文件)

语言(泛型、Lambda)

类库(集合,并发,网诺,IO/NIO)

JRE(java运行环境,JVM,类库)

JDK(java开发工具,包括jre,javac,诊断工具)

java是解析运行吗?

不正确!

1,java源代码经过javac编译成.class文件

2,.class文件经JVM解析或编译运行

    (1)解析:.class文件经过JVM内嵌解析器解析执行。

    (2)编译:存在JIT编译器,会把经常运行的代码作为热点代码编译为与本地平台相关的机器码,并进行各种层次的优化。

    (3)ATO编译器:java9提供的直接将所有代码编译成机器码执行。

猜你喜欢

转载自blog.csdn.net/zxp0727/article/details/84780175