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

时间:2011-03-07 08:25:28

标签: java android blackberry java-me

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

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

实现这一目标的最佳方法是什么,以及需要避免的陷阱是什么?

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

5 个答案:

答案 0 :(得分:4)

这可能很难:

  • 正如您已经确定的那样,每个平台的UI代码必须不同。
  • Java SE / Android和基于Java ME的平台之间存在重大差异。例如,ME没有收集框架,或java.iojava.nio堆栈。

很难根据您提供的信息进行预测,但您可能会花费更多时间来对抗平台依赖关系,而不是通过共享代码库来节省费用。

答案 1 :(得分:2)

我会考虑共享库项目并将其作为移动应用程序构建过程中的依赖项,而不是预先打包您的共享库。这将允许您共享代码库,但由目标设备的相应构建器构建。通过一些IDE魔术和对细节的一些关注,您应该能够在发货之前发现错误。

或者,设置库项目以使用两个单独的构建器来获取错误。这将允许更清晰的分发,但是您可能会遇到问题,试图说服您的IDE将项目视为特定于设备以识别问题区域。

最终可能会支持最低公分母设备( cough Blackberry),并放弃Android上更广泛的Java实现的附加功能。

不幸的是,答案将是实验之一。试一试,看看会发生什么。

答案 2 :(得分:2)

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

作为图书馆实施者,您将发现最大的不同之处在于BlackBerry缺少1.5中引入的内容,非常重要的内容,如泛型和枚举。更糟糕的是,BlackBerry缺少收藏类。这很不幸,但现在已经很久了。

这意味着要真正可移植,你必须写入最低公分母,这意味着使用(非常)旧式的类,如Hashtable和Vector,没有泛型,滚动你自己的枚举(如第1版) of Effective Java)等等。

或者您构建了两个库,一个适用于Android的现代版本和一个适用于BlackBerry的精简版本(只需要您需要的东西)。

很难说什么适合你。

答案 3 :(得分:1)

文章Porting Android code to BlackBerry详细介绍了如何使用两个平台之间共享的代码。

答案 4 :(得分:0)

为blackberry和android创建共享库将非常困难。 如果您想要简单的方法,请将您的应用程序创建为Web应用程 使用

phonegapjQtouch