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