java语言具备一处编译,处处运行,该功能实现原理是基于class文件实现的,java格式文件通过编译后生成class文件,jvm加载class文件进行运行,无论什么格式的文件只要能编译成符合规范的class文件,那么就能够在jvm上运行。因此下面研究字节码文件格式。html
package com.xiayu.demo; public class ClassFile { private int field; public void method(){ String a = "test"; String b = new String("b"); System.out.println("method()"); } }
对应的字节码16进制显示java
字节码文件是由魔数,版本号,常量池,访问标志,类索引,父类索引,接口索引,字段表集合,方法,属性组成。jvm
常量池中的信息工具
上述仅仅为字节码的简要描述,更多能够参考官方文档或者使用java自带javap工具进行查看字节码文件内容.spa
来自3d
字节码指令主要包含加载存储指令,运算指令、类型转换指令、对象建立与访问指令、操做数栈管理指令、控制转移指令、方法调用和返回指令、异常处理指令和同步指令等。code