谈谈你对 Java 平台的理解?
1、谈谈你对 Java 平台的理解?
可以从以下几个方面入手:Java/JVM 生态、基本语言特性、Java 类库、Java 虚拟机、工具。
2、「Java 是解释执行」,这句话正确吗?
对于「Java 是解释执行」这句话,这个说法不太准确。我们开发的 Java 的源代码,首先通过 Javac 编译成为字节码(bytecode),然后,在运行时,通过 Java 虚拟机(JVM)内嵌的解释器将字节码转换成为最终的机器码。『将字节码解释成机器码』
但是常见的 JVM,比如我们大多数情况使用的 Oracle JDK 提供的 Hotspot JVM,都提供了 JIT(Just-In-Time)编译器,也就是通常所说的动态编译器,JIT 能够在运行时将热点代码编译成机器码,这种情况下部分热点代码就属于编译执行,而不是解释执行了。『将字节码编译成机器码』
众所周知,我们通常把 Java 分为编译期和运行时。这里说的 Java 的编译和 C/C++ 是有着不同的意义的,Javac 的编译,编译 Java 源码生成“.class”文件里面实际是字节码,而不是可以直接执行的机器码。
在运行时,JVM 会通过类加载器(Class-Loader)加载字节码,解释或者编译执行。