深入理解Java(一)对Java平台的理解

最近面试总是被问到一些奇怪的问题,说奇怪吧也不妥,偏僻更合适一点。猛的被问到这些,一下子答不上来,或者回答的不够全面,错失良机使我对此深恶痛绝,痛定思痛之后,我决定系统的对Java知识体系做一个完整学习与总结,避免此类事情发生。那么就从现在开始吧。

第一个问题是: 谈谈你对Java平台的理解?“Java是解释执行”,这句话正确吗?

回答:

Java是一种面向对象语言,最显著特性有两个方面,第一就是我们常说的“一次编译,到处执行。”,也是Java跨平台能力的基础,之所以这么说,是因为java语言本身和其他语言没有太大的区别,java语言并不能够跨平台,而是在不同的平台都有能够让Java执行的平台而已(安装了jdk);第二个就是gc(垃圾回收),大部分情况下,Java的内存并不需要我们手动的分配和回收,gc会帮我们完成这部分工作。

JRE(Java Runtime Environment)和JDK(Java Development Kit)。JRE是Java运行时环境,包含了JVM和Java类库等,JDK是Java开发环境,可以看做是JRE的超集,提供了更多的工具,比如编译器,诊断工具等。

“Java是解释执行”这句话并不准确。Java代码首先通过javac编译成字节码(.class文件),字节码是不能够在机器运行的,在运行Java代码时,jvm会内嵌的解释器(classloader)会将字节码转换为机器能够识别的机器码,然后运行。这样看起来java代码好像就是在解释字节码来运行。但是还有另外一种情况,JIT(just in time),这又是什么意思呢?jit就是我们通常说的动态编译器,它能够在运行时,将热点代码编译成机器码,这种情况下部分热点代码(经常运行的代码)就属于编译执行,而不是解释执行。

你可能感兴趣的:(深入理解Java(一)对Java平台的理解)