Java SE 6.0的改變包括了ClassFile格式的改變。

          新的版本的ClassFile中major_version為0x0032,也就是50。
          Java SE 6 : 0x0032?? (用自己寫的ClassFileParser分析過證實)
          Java SE 5 : 0x0031??(用自己寫的ClassFileParser分析過證實)
          JDK 1.4?? : (未經(jīng)證實是0x0030)?
          JDK 1.3?? :? (未經(jīng)證實是0x002F)
          JDK 1.2?? : 0x002E
          JDK 1.1?? : 0x002D??

          每次JDK大版本升級,ClassFile格式都改變,然后版本加1。

          6.0增加了StackMapTable的Attribute。

          要提一下三個byte code處理庫:
          ObjectWeb ASM
          Apache BCEL
          sourceforge SERP

          ASM目前版本為3.0。其2.1版本開始支持StackMapTableAttribute。
          其中ASM 2.1支持StackMapTableAttribute,BCEL 5.2似乎只支持JDK 1.3,SERP 1.12只支持JDK 5.0。

          Aapche BCEL支持JDK 1.3,是從代碼中猜測的,沒有從文檔中看到,但其中5.2版本的ClassParser的確是不支持StackMapTable Attribute,其代碼中的StackMap和Java SE 6.0的StackMapTable Attribute沒有任何關(guān)系。BCEL中的對象和ClassFile中的各項對應,用于學習分析方便。

          ASM號稱更小,速度更快。現(xiàn)在流行的Eclipse插件bytecode outline也是其中的子項目。

          ASM可以直接cvs訪問,提供的代碼是一個Eclipse Project,十分方便,我很喜歡!
          http://forge.objectweb.org/projects/asm/

          在規(guī)范4.10.1中的這一段話有些疑問:
          If the class file version number is 51.0 or above, then neither the jsr opcode or the jsr_w opcode may appear in the code array.
          class file version number is 51.0 or above,什么意思?Java SE 6.0編譯出倆的結(jié)果應該是50.x,這是怎么回事?

          規(guī)范是一個186頁的PDF,沒有文檔大綱,看暈了


          posted on 2006-11-26 02:54 溫少的日志 閱讀(1405) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           
           
          主站蜘蛛池模板: 望城县| 安国市| 景德镇市| 永川市| 奉新县| 云安县| 铁岭县| 宁海县| 隆安县| 安溪县| 姚安县| 井研县| 灵宝市| 钦州市| 沾化县| 汕尾市| 舟山市| 侯马市| 舟曲县| 武宣县| 肃宁县| 峨边| 泰和县| 金平| 蒙城县| 甘肃省| 高碑店市| 苏尼特左旗| 开化县| 江永县| 建阳市| 万安县| 萍乡市| 华容县| 田林县| 汨罗市| 建阳市| 喀喇沁旗| 天镇县| 岚皋县| 湘阴县|