我有一个运行在BlackBerry (JDE4.5)上的Java应用程序。我想把这个应用程序移植到Android,并且能够同时维护这两个应用程序。我还可能希望将此应用程序移植到其他Java (J2ME ?)。
我理解代码的很大一部分必须针对每个平台(UI和其他东西)。但我也觉得很多代码可以(应该)共享(域相关类)。
实现这一目标的最佳途径是什么,要避免的陷阱是什么?
到目前为止,我已经能够使用所有共享类创建一个JAR,从而能够集成到我的BlackBerry应用程序中(使用preverify和rapc)。但是:
CLDC,参见https://github.com/upictec/org.json.me/blob/master/src/main/java/org/json/me/JSONObject.java#L392)。如何使用(或转换)该库使用正确的预处理定义?发布于 2011-03-07 14:55:12
如今,以这种方式共享代码的最大障碍是BlackBerry VM和Android都支持不同版本的Java。BlackBerry使用Java1.3的子集,Android使用Java1.5的子集。(顺便说一句,这两个平台都没有实现Java,它们都使用自己的VM。使用Java作为编程语言。Java字节码必须转换为适当的原生VM格式,然后才能在平台上运行。)
作为库实现者,您会发现最大的不同是,BlackBerry缺少1.5中引入的东西,比如泛型和枚举。更糟糕的是,BlackBerry中缺少了集合类。这是不幸的,但这是很长一段时间以来的情况。
这意味着要真正可移植,您必须编写到最低的公共分母,这意味着使用(非常)老风格的类,如Hashtable和Vector,而不是泛型,滚动自己的枚举(如在第1版的有效Java)等等。
或者您构建了两个库,一个是用于Android的现代版本,另一个是用于BlackBerry的精简版本(仅提供您所需的基本内容)。
很难说什么是适合你的。
发布于 2011-03-07 08:48:25
这可能是很困难的:
java.io或java.nio堆栈。从您提供的信息中很难预测,但是很有可能您将花费更多的时间与平台依赖进行斗争,而不是通过共享代码库来节省。
发布于 2011-03-07 10:06:11
与其预先打包您的共享库,我将考虑共享库项目,并将其作为您的移动应用程序构建过程中的依赖项。这将允许您共享代码库,但让适当的构建器为目标设备构建代码库。有了一些IDE的魔力和对细节的关注,您应该能够在发布任何东西之前发现错误。
或者,将您的库项目设置为使用两个单独的构建器来获取错误。这将允许更干净的分发,但您可能会遇到问题,试图说服IDE将项目视为特定于设备的项目,以便识别问题区域。
很可能你最终会支持最低的公共分母设备(咳嗽黑莓),并且放弃Android上更广泛的Java实现的附加功能。
不幸的是,答案将是一个实验。试试看会发生什么。
https://stackoverflow.com/questions/5217400
复制相似问题