第1讲 谈谈你对Java平台的理解?
谈谈你对 Java 平台的理解?“Java 是解释执行”,这句话正确吗?
答:
Java 本身是一种面向对象的语言,最显著的特性有两个方面,一是所谓的“书写一次,到处运
行”(Write once, run anywhere),能够非常容易地获得跨平台能力;另外就是垃圾收集
(GC, Garbage Collection),Java 通过垃圾收集器(Garbage Collector)回收分配内存,
大部分情况下,程序员不需要自己操心内存的分配和回收。
我们日常会接触到 JRE(Java Runtime Environment)或者 JDK(Java Development Kit)。
JRE,也就是 Java 运行环境,包含了 JVM 和 Java 类库,以及一些模块等。而 JDK 可以看作是
JRE 的一个超集,提供了更多工具,比如编译器、各种诊断工具等。
对于“Java 是解释执行”这句话,这个说法不太准确。我们开发的 Java 的源代码,首先通过
Javac 编译成为字节码(bytecode),然后,在运行时,通过 Java 虚拟机(JVM)内嵌的解释
器将字节码转换成为最终的机器码。但是常见的 JVM,比如我们大多数情况使用的 Oracle JDK
提供的 Hotspot JVM,都提供了 JIT(Just-In-Time)编译器,也就是通常所说的动态编译器,
JIT 能够在运行时将热点代码编译成机器码,这种情况下部分热点代码就属于编译执行,而不是
解释执行了。
知识扩展
- 对于Java平台的理解,可以从很多方面简明扼要的谈一下,例如:Java语言特性,包括泛型,Lambda等语言特性,基础类库,包括集合、IO/NIO、网络等。
- 或者谈谈JVM的一些基础概念和机智,比如Java的类加载机制,常用版本JDK内嵌的Class-Loader,还有垃圾收集的基本原理。
- 还有JDK包含哪些工具或者领域内其他工具等。
一课一练
谈谈你对Java平台的理解。
答:
Java特性:
- 面向对象(封装、继承、多态)
- 平台无关性(JVM运行 .class文件)
- 语言(泛型、Lambda)
- 类库(集合、并发、网络、IO/NIO)
- JRE(Java运行环境,JVM。类库)
- JDK(Java并发工具,包括JRE,javac,诊断工具)