将Java代码1.5降级为1.4(额外积分:J2ME、黑莓!!!)
我想移植一些现有的j2se库(例如Apache压缩库)用于Blackberry开发,但有一个缺点(不仅仅是一个) 首先,大多数java LIB广泛使用j2se集合和数据类型,而j2me平台上通常缺少这些集合和数据类型,但由于Apache Harmony等开源j2se api实现,这在理论上是可以解决的。更大的问题是,Blackberry JDK似乎基于java 1.4,因此任何使用泛型和其他1.5功能(如Enum)的代码都无法在Blackberry上轻松编译 这就提出了一个有趣的问题,即是否有任何现有的工具或项目可以进行自动1.5->1.4转换,同时支持j2me bastardized字节码:) 我能找到的一个项目是,但我不确定这个项目有多活跃将Java代码1.5降级为1.4(额外积分:J2ME、黑莓!!!),java,java-me,bytecode,downgrade,Java,Java Me,Bytecode,Downgrade,我想移植一些现有的j2se库(例如Apache压缩库)用于Blackberry开发,但有一个缺点(不仅仅是一个) 首先,大多数java LIB广泛使用j2se集合和数据类型,而j2me平台上通常缺少这些集合和数据类型,但由于Apache Harmony等开源j2se api实现,这在理论上是可以解决的。更大的问题是,Blackberry JDK似乎基于java 1.4,因此任何使用泛型和其他1.5功能(如Enum)的代码都无法在Blackberry上轻松编译 这就提出了一个有趣的问题,即是否有任
我确信1.5->1.4自动转换的问题不是唯一的——那么有人有过这种转换的经验吗?我以前使用过retroweaver(J2SE,而不是J2ME)-它工作得非常好。使用它的成本是额外的几个运行时依赖项 更新2013-01-28:在遇到RetroWeaver问题后,我切换到了。你试过了吗?我读到它比Retroweaver做得更好 这里是我在堆栈溢出上找到的: 使用常规javac编译并针对较旧的JVM将至少为泛型提供适当的字节码
这绝对是有意义的尝试。这里是我找到的另外两个工具(链接到Retrotranslator的页面):
但这是一个不同主题的讨论。太棒了,谢谢!这似乎比retroweaver有更好的文档。我将不得不玩一玩:)我想,我唯一关心的是编译器为j2me平台生成的类文件中的字节码差异如何影响这些工具。因为我不能评论其他人在帖子中的评论(目前还没有50%的声誉),我将在这里发布:-关于使用1.5进行源代码编译和1.4进行目标代码编译,只有在代码中不使用任何1.5功能时,它才会起作用(尽管它对泛型有效,但我很惊讶,但我可以理解为什么因为泛型在运行时“消失”),因此它没有帮助。-关于您发现的其他工具,我确实希望至少有一个工具可以帮助您解决问题的各个方面。我记不清了,但我认为泛型可以,但不支持Enum/new for syntax。它可能在以后的javac中得到了修复,但在我看来,它几乎不可用。这就是我最终使用retroweaver的原因之一。不幸的是,这不起作用。javac不接受比目标版本更高的源代码版本,因此您只能在编译失败和无法在目标平台上运行的结果之间进行选择。Eclipse编译器“ecj”可以。它可以很容易地集成到ant和maven java编译任务中。1.4不会提供java me,因为“所有java me平台目前都限制在JRE 1.3”(例如,java me没有JDK 1.4特定的断言)