【问题标题】:How to create a mobile oriented, multiplatform, shared library in Java?如何在 Java 中创建面向移动设备的多平台共享库?
【发布时间】:2011-03-07 08:25:27
【问题描述】:

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

我了解大部分代码必须特定于每个平台(UI 和其他内容)。但我也觉得很多代码可以(应该)共享(与域相关的类)。

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

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

【问题讨论】:

  • 我使用 LWUIT 框架开发 j2me 应用程序。我可以很容易地将此​​应用程序用于 Android 和 Blackberry 并进行一些更改。

标签: java android blackberry java-me


【解决方案1】:

这可能很困难:

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

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

【讨论】:

    【解决方案2】:

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

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

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

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

    很难说什么适合你。

    【讨论】:

      【解决方案3】:

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

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

      您最终可能会支持最低公分母设备(咳嗽黑莓),并放弃 Android 上更广泛的 Java 实现的附加设施。

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

          phonegapjQtouch

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-07-19
            • 2021-12-03
            • 2011-07-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多