当前位置: 首页 > 工具软件 > Retroweaver > 使用案例 >

用Retroweaver 在JDK1.4上使用JDK5.0的特征

慕容晔
2023-12-01

   作者:江南白衣     

    原文出处及讨论: http://www.blogjava.net/calvin/archive/2006/01/13/27913.html

    稳健的开发团队一般不会随意升级项目的JDK,而那些真金白银买了Weblogic的用户,因为Weblogic9以下都不支持JDK5.0,就更不会升级了。然后,看着EJB3,Spring 2不断有新功能和annotation相关,而自己的系统架构只能按兵不动。
 本来SpringSide为了适用范围,已经决定坚守JDK1.4了,但忽然发现Retroweaver这个好东西,能够在JDK1.4上获得annotation,范型,autoboxing的语法特征。介绍文章有
    JetBrains IDEA中文:Retroweaver简介
    IBM DW:Classworking 工具箱: 在旧版 JVM 上使用 J2SE 5.0 特性
    James Strachan's Weblog

    本来担心开源项目不可靠,但JetBrains IDEA已经为它做了背书,用它把IDEA的代码逐步升级为JDK5.0 而仍然可在JDK1.4上运行。

    和Jarkarta Common AtrributesBackport175在JDK1.4语法下支持annotation的别扭思路不同,Retroweaver允许你直接用JDK5.0进行开发,然后在byte code级把它转换回JDK1.3,1.4支持的指令。

     而且,IDEA提供了一个plug-in,把转换的动作透明的集成了。

    典型应用场景1:某类库用JDK5编译,不能在JDK1.4上运行。

    今天的FunctionalJ就是这个情况。
    我把jar包解开,用Retroweaver自带的GUI把里面的class文件转换后重新打包,成功运行!!! 

    典型应用场景2:项目里使用Spring 2.0,Drools的annotation、autoboxing特征
    直接把项目的JDK设为5.0,在JDK5.0下使用上述特征,编译后通过命令行、ant脚本把class文件降为JDK1.3,JDK1.4版。
    如果你用的是IDEA,插件能透明的完成这步操作。


    注意Retroweaver支持的是JDK5.0的新语法特性,而JDK5.0新增的API它是不包的。
    幸亏IDEA的plug-in,能提醒你有没有使用了超越目标JDK的API。
    如果你的目的只是在JDK1.4上使用Spring的annotation,这个问题倒不大。

 类似资料: