java从编码到执行
x.java 通过javac这个命令,会编译成一个x.class,最后通过ClassLoader加载到Jvm中,通过字节码解释器或者JIT(即时编译器)编译后,交给执行引擎,最后直接调用硬件执行。
1 什么是JVM
jvm是一套规范,不同的大公司有自己的实现,它其实和java本身没有太大关系,只与class文件有关系,所有的语言,只要可以转换成class文件,JVM都可以执行。所以说JVM其实是一个跨语言的平台。而Java是一门跨平台的语言(即同一段Java代码,在windows linux都可以无需修改,直接运行)
常见的实践:
Hotspot:oracle官网,目前绝大部分用的都是这个实现
J9 - IBM
Microsoft VM 微软
TaobaoVM hotspot深度定制版
LiquidVm 直接针对硬件
azul zing 最新垃圾回收的业界标准,网站:www.azul.com 收费产品
JDK包含(JRE + Development kit)JRE(JVM + core lib核心类库) JVM只负责执行
资料链接:
JVM13规范文档:docs.oracle.com/javase/specs/jvms/se13/jvms13.pdf