将 Java 代码 1.5 降级至 1.4(奖励积分:J2ME、黑莓!!!)
题
我想移植一些现有的 j2se 库(例如Apache 压缩库)用于 Blackberry 开发,但有一个问题(而且不仅仅是一个)。
首先,大多数 java 库广泛使用 j2se 集合和数据类型,这些集合和数据类型通常在 j2me 平台上缺失 - 但由于 Apache Harmony 等开源 j2se api 实现,这在理论上是可以解决的。更大的问题是,Blackberry JDK 似乎基于 java 1.4,因此任何使用泛型和其他 1.5 功能(如枚举)的代码都无法在 Blackberry 上轻松编译。
这就提出了一个有趣的问题,即是否有任何现有工具或项目可以进行自动 1.5->1.4 转换,同时支持 j2me-bastardized 字节码:)
我找到的一个项目是 复古编织者, ,但我不太确定该项目有多活跃。
我确信 1.5->1.4 自动转换的问题并不是唯一的 - 那么有人有这方面的经验吗?
解决方案 4
因此,这里是我结束了到目前为止做:Declawer +枚举类生成一些自定义代码
一个约Declawer分化的是,虽然这是非常简单的,坦率地说,一个黑客位(它依赖于JAVAC的一个未记录的能力)的,它的输出是相比于增强或转换Java字节码实际的Java代码。这对于移动基于Java的开发非常珍贵的,坦率地说,字节码修改/仪器仪表是不是所有为J2ME平台上开发的,因为它是J2SE,并有刚不能保证事情会开箱的方式他们这样做与J2SE当这些工具已经使用相当多的开发者。
Declawer的功能是有限的(1.5枚举或自动装箱没有爱),所以我不得不添加一个Python脚本自动生成等效于功能的类,从简单的描述符1.5枚举。这一代发生在编译时间
这解决了我的顾虑,到目前为止,与找到一个很好的J2ME友好的IoC容器来使用我的应用程序的唯一例外(一旦你尝试这些家伙,它是如此难以放弃它们。)
但是,这对于不同的线程的讨论。
其他提示
您是否尝试过 Retrotranslator ?我读了它确实比的Retroweaver做得更好。
我过去使用过 Retroweaver(J2SE,不是 J2ME)——它工作得非常好。使用它的成本是一些额外的运行时依赖项。
更新2013-01-28:在使用 RetroWeaver 遇到问题后,我转而使用 复古翻译器.