Java字节码是Java源代码经javac等编译器生成的、供JVM执行的二进制中间指令,以.class文件形式存在,包含魔数、常量池、方法表及操作码序列,通过解释器或JIT编译执行,支撑“一次编译,到处运行”、安全校验与JVM优化。
Java字节码是Java源代码经编译后生成的、供JVM执行的中间指令集,本质是二进制格式的.class文件,不是机器码,也不直接运行在硬件上。
Java源文件(.java)通过前端编译器(如javac或ECJ)编译,生成符合JVM规范的.class文件。这个过程不依赖操作系统,只面向JVM。
javac HelloWorld.java → 生成HelloWorld.class
它不是可读文本,而是由操作码(opcode)和可选操作数组成的紧凑二进制指令序列。每个操作码占1个字节(0–255),对应特定语义,比如iload_0加载局部变量表第0个int值,invokestatic调用静态方法。
javap -v ClassName反编译查看详细结构(含常量池、指令、行号表等)JVM加载.class后,在运行时数据区(方法区、堆、Java栈、PC寄存器等)协同下解释或编译执行:
iconst_1压1入栈,istore_0弹出存到变量0它是Java“一次编译,到处运行”的核心设计: