categories: JVM
JVM 常识
1 谈谈你对Java的理解
谈谈你对Java的理解
- 平台无关性(一次编译,到处运行)
- GC
- 语言特性(泛型、反射、Lambda 表达式)
- 面向对象(封装、继承、多态)
- 类库(一些常用的库)
- 异常处理
2 平台无关性如何实现
Compile Once, Run Anywhere 如何实现
- 编译时
介绍了一下 javap 的一些用法,属于反汇编的工具,具体使用方法可以参考 java -help。要读懂简单的class文件的逻辑。
- 运行时
Java源码首先被编译成字节码,再由不同平台的 JVM 进行解析,Java 语言在不同的平台上运行时不需要进行重新编译,Java 虚拟机在执行字节码的时候,把字节码转换成具体平台上的机器指令。
为什么 JVM 不直接将源码解析成机器码去执行
- 准备工作:每次执行都要进行各种检查(语法、句法、语义等,每一次都要重复、重新去判断。字节码起到了“缓存”这些正确检验的作用)
- 兼容性:也可以将别的语言解析成字节码