昨天試著在整理電腦的東西~ 發現一個塵封已久的Word檔~ 裡頭包含的是以前研究Java class File Format記錄~
還記得當初剛看到「0xCAFEBABE」真是會心一笑啊~ 咖啡寶寶?XDDD 是的,沒錯! Java就是拿這四個Bytes當做File Signature,真是有創意極了!!
依稀記得這個class format曾經大幅更動過一次~ 那時候是從「Java 1.4.x」直接跳到「Java 5.0」,而當時最流行的就是「二隻老虎」~ 一隻是Java 5.0的代號「Tiger」,另一隻則是「Mac OS X 10.4」代號也稱為「Tiger」~ 直到去年才被「自然界」所取代... 因為開始出現很多的「Cloud」和「Air」.. 不是「雲」就是「大氣」~ 不勝枚舉 XDD(Cloud Computing、Tag Cloud、Adobe AIR、MacBook AIR...)
上述格式的原始檔如下:
Hello.java
public class Hello { public static void main(String arg[]) { String s = "Hello"; } }
有興趣的人可以對照著「VM Spec The class File Format」來剖析~
而Java 5.0 更動的class format請至「JSR 202: JavaTM Class File Specification Update」下載。
筆者的記錄檔:Hello.class 格式剖析 (整張圖放上來會漏漏長...)