我想移植一些现有的j2se库(例如Apache Compression库)来用于Blackberry开发,但是有一个问题(而不仅仅是一个)。
首先,大多数java库广泛使用j2me平台上通常缺少的j2se集合和数据类型 - 但由于Apache Harmony这样的开源j2se api实现,这在理论上是可解决的。更大的问题是,看起来,Blackberry JDK基于java 1.4,因此任何使用泛型和其他1.5功能的代码(如Enums)都不会毫不费力地在Blackberry上编译。
这提出了一个有趣的问题:是否有任何现有工具或项目可以进行自动1.5-> 1.4转换,同时支持j2me-bastardized字节码:)
我能找到的一个项目是Retroweaver,但我不太确定该项目有多活跃。
我确定1.5-> 1.4自动转换的问题不是唯一的 - 所有人都有使用它的经验吗?
答案 0 :(得分:7)
你试过Retrotranslator吗?我读到它比Retroweaver做得更好。
答案 1 :(得分:2)
我过去曾使用过retroweaver(J2SE,而不是J2ME) - 它运行得非常好。使用它的成本是一些额外的运行时依赖性。
更新2013-01-28 :在遇到RetroWeaver问题后,我已切换到RetroTranslator。
答案 2 :(得分:2)
答案 3 :(得分:1)
所以这就是我到目前为止所做的事情:声明+一些用于枚举类生成的自定义代码。
关于Declawer的一个区别之处在于,尽管它非常简单,而且坦率地说,它有点像黑客(它依赖于JavaC的未记录功能),但与增强或转换的Java字节码相比,它的输出是实际的Java代码。 。这对于基于移动java的开发非常宝贵,坦率地说,字节码修改/检测根本不像j2me平台那样为j2me平台开发,并且无法保证事情开箱即用的方式开箱即用他们使用j2se,这些工具已被很多开发人员使用。
声明的功能是有限的(不爱1.5枚枚举或自动装箱),所以我不得不添加一个python脚本来自动生成与简单描述符中1.5枚举的功能等效的类。这一代发生在构建时。
这解决了我到目前为止所关注的问题,唯一的例外是找到一个好的j2me友好的IoC容器用于我的应用程序(一旦你尝试这些人,就很难放弃它们。)
但这是对不同主题的讨论。
答案 4 :(得分:0)
这是我找到的另外两个工具(链接到Retrotranslator的页面):