categories: JVM


JVM 常识

1 谈谈你对Java的理解

主讲过程
image.png

谈谈你对Java的理解

  • 平台无关性(一次编译,到处运行)
  • GC
  • 语言特性(泛型、反射、Lambda 表达式)
  • 面向对象(封装、继承、多态)
  • 类库(一些常用的库)
  • 异常处理

可以适当进行知识扩展,这些点都是 Java 常考的点

2 平台无关性如何实现

主讲过程

Compile Once, Run Anywhere 如何实现

  • 编译时

介绍了一下 javap 的一些用法,属于反汇编的工具,具体使用方法可以参考 java -help。要读懂简单的class文件的逻辑。

  • 运行时

image.png
Java源码首先被编译成字节码,再由不同平台的 JVM 进行解析,Java 语言在不同的平台上运行时不需要进行重新编译,Java 虚拟机在执行字节码的时候,把字节码转换成具体平台上的机器指令。

为什么 JVM 不直接将源码解析成机器码去执行

  • 准备工作:每次执行都要进行各种检查(语法、句法、语义等,每一次都要重复、重新去判断。字节码起到了“缓存”这些正确检验的作用)
  • 兼容性:也可以将别的语言解析成字节码