文章目录

  • 一、谈谈你对java的理解
  • 二、平台无关性
  • 三、JVM如何加载class文件


一、谈谈你对java的理解

  • 平台无关性,一次编译多处运行
  • GC 垃圾回收机制
  • 语言特性 泛型、反射、lambda
  • 面向对象 继承 封装 多态
  • 类库
  • 异常处理

二、平台无关性

  • 编译时 javac编译成class字节码
  • 运行时 java运行class文件
  • javap jdk自带的反编译器
cd src
javac com/my/Demo.java
java com.my.Demo
javap -c com.my.Demo  # -c  是jdk自带的反解析工具。它的作用就是根据class字节码文件,反解析出当前类对应的code区(汇编指令)、本地变量表、异常表和代码行偏移量映射表、常量池等等信息

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

为什么JVM不直接将源码解析成机器码去执行(先编译成class文件)?

  • 准备工作:每次执行都需要各种检查
  • 兼容性:也可以将别的语言解析成字节码

三、JVM如何加载class文件

Java虚拟机

Jvm是个内存的处理机

java 底层学习 java底层原理怎么学_字节码

  • class loader:依据特定格式,加载class文件到内存
  • Execution Engine:对命令进行解析
  • Native Interface:融合不同开发语言的原生库为java所用
  • Runtime Data Area: jvm 内存空间结构模型