1. java从编码到执行
1. javac命令把 .java文件编译成.class文件;
2. 再由java命令调用类加载器ClassLoader装载到内存,包括调用的类库;
3. 再调用字节码解释器或者JIT即时编译器进行解释或编译;
注意: java是解释和编译混合执行的
特别常用的代码,jvm会把代码即时编译, 做成本地编译, 下次执行这个代码就可以不用通过字节码解释器来执行了,直接用执行引擎执行
4. 执行引擎执行;
2. JVM是跨语言的平台
任何语言只要能 编译成 class 都能在 JVM 中运行
注意:java 是跨平台的语言,java 同样的源文件,在windows上和linux上都能运行,不用修改任何东西,而 C/C++ 不是。
3. JVM 是一种规范 (虚构出来的一台计算机)
1. 字节码指令集(汇编语言)
2. 内存管理:栈、堆、方法区等
4. 常见的 JVM 实现
1. Hotspot oracle的; java -version
Hotspot8之后会收费,!!!不是java语言收费
2. Jrockit BEA,曾经号称世界上最快的JVM,被Oracle收购,合并于 hotspot
3. J9 IBM
4. VM 微软
5. TaobaoVM 淘宝 hotspot深度定制版
6. LiquidVM 直接针对硬件
7. azul zing 最新垃圾回收的业界标杆
速度非常快
5. JDK 、jre、JVM 区别
JVM (Java Virtual Machine)Java 虚拟机,只是用来执行的
JRE(Java Runtime Environment )Java运行时环境,光有jvm虚拟机来运行不够,还要有核心类库——jre = JVM + 核心类库
JDK (Java Development Kit)Java程序开发工具包——JDK = jre + development kit (核心包+开发的工具)