Retrotranslator--將JDK5.0項目完全轉換爲JDK1.4 字節碼的恩物

因爲Retrotranslator的出現,SpringSide終於放心升到JDK5.0,只要用戶在build的時候選擇war14 task,生成的war就保證仍然100%運行在JDK1.4的服務器上。在最新的retrotranslator 1.0.7 支持下,SpringSide在Tomcat 5.0+JDK1.4上部署成功。 

     不能隨意更改運行環境JDK的歷史項目,客戶真金白銀買了不支持JDK5的Weblogic8.1的項目,一般只能看着JDK5的annotation、泛型和EJB3乾嚥口水,所以上帝說要有光,我們有了這個恩物。

    和以前推薦的Retroweaver一樣,大家直接用JDK5開發,如果需要部署到JDK1.4的運行環境,就通過asm把Class轉到JDK1.4的字節碼。

但它不僅支持JDK5的新語法,還大量支持JDK5的新增API。 

   Retrotranslator的用法很簡單,可以用命令行、Ant和IDEA插件自動轉換,http://retrotranslator.sf.net 上講得很清楚,可以轉換Jar,也可以轉換Class目錄。
   比較特別的是有個Verify選項,能確保你沒有用到它暫時還不支持的JDK5 API(記得Classpath裏要加入JDK1.4的rt.jar)。

附:springside war14 任務簡述
    war14在打包時,會調用/misc/jdk14/build.xml, 爲drools,compas,easymock2等幾個使用了JDK1.5技術的jar 生成jdk1.4的版本,併爲項目的classes 目錄生成JDK1.4的版本,然後用它們替換war中原來的內容即可。

注意用戶可能要自己在/misc/jdk14/build.properties中設一下jdk1.4的路徑。

build.xml 片斷:

Java代碼 複製代碼
  1. <target name="jdk14src">   
  2.         <taskdef name="retrotranslator" classpathref="compile.classpath"               classname="net.sf.retrotranslator.transformer.RetrotranslatorTask"/>   
  3.         <retrotranslator destdir="classes" verify="true">   
  4.             <src path="../../springside-bookstore/webapp/WEB-INF/classes"/>   
  5.             <classpath location="${jdk14_home}/lib/rt.jar"/>   
  6.             <classpath refid="compile.classpath"/>   
  7.         </retrotranslator>   
  8. </target>  
<target name="jdk14src">
        <taskdef name="retrotranslator" classpathref="compile.classpath"               classname="net.sf.retrotranslator.transformer.RetrotranslatorTask"/>
        <retrotranslator destdir="classes" verify="true">
            <src path="../../springside-bookstore/webapp/WEB-INF/classes"/>
            <classpath location="${jdk14_home}/lib/rt.jar"/>
            <classpath refid="compile.classpath"/>
        </retrotranslator>
</target>
發佈了10 篇原創文章 · 獲贊 2 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章