如何在Java中创建面向移动的多平台共享库?

Mac*_*Mac 7 java android blackberry java-me

我有一个在BlackBerry上运行的Java应用程序(JDE 4.5).我想将此应用程序移植到Android,并能够同时维护这两个应用程序.我可能还想将此应用程序移植到其他Java平台(J2ME?).

我知道代码的很大一部分必须特定于每个平台(UI和其他东西).但我也觉得很多代码可以(应该)共享(域相关类).

实现这一目标的最佳方法是什么?要避免哪些陷阱?

到目前为止,我已经能够创建一个包含所有共享类的JAR,我已经能够集成到我的BlackBerry应用程序中(使用preverifyrapc).但:

Eri*_*ere 2

如今,以这种方式共享代码的最大障碍是 BlackBerry VM 和 Android VM 都支持不同版本的 Java 语言。BlackBerry 使用 Java 1.3 的子集,Android 使用 Java 1.5 的子集。(顺便说一句,两个平台都没有实现 Java VM,都使用自己的 VM。Java 被用作编程语言。Java 字节码必须转换为适当的本机 VM 格式才能在平台上运行。)

作为库实现者,您会发现的最大区别是 BlackBerry 缺少 1.5 中引入的东西,非常重要的东西,例如泛型和枚举。更糟糕的是,BlackBerry 中缺少 Collections 类。这很不幸,但长期以来一直如此。

这意味着要真正实现可移植,您必须编写最小公分母,这意味着使用(非常)旧式的类,如 Hashtable 和 Vector,没有泛型,滚动您自己的枚举(如《Effective Java》第一版中那样) ) 等等。

或者您构建两个库,一个用于 Android 的现代版本,一个用于 BlackBerry 的精简版本(仅包含您需要的裸露内容)。

很难说什么适合你。