我正在尝试编写一个运行不同 Java 平台(如 J2SE、J2ME、Android 等)的应用程序。我已经知道我必须为每个平台重写大部分 UI,但希望重用核心逻辑。
保持这个核心的可移植性涉及我知道的三个缺点:
- 保持旧的Java 1.4 语法,不使用 Java 5.0 的任何优秀语言特性
- 仅使用已知可在这些平台上工作的外部库(即:不要使用 JNI 并且不依赖于违反此规则的其他库)
- 仅使用所有这些平台上存在的类
我知道克服(1)的方法:以 5.0 样式编写代码并自动将其转换为 1.4(retroweaver - 尚未尝试过,但似乎还可以)。
我认为(2)是一个我必须接受的问题。
现在我想知道(3)的最佳工作方法是什么,尤其是我最想念的集合类。我能想到那些:
- 我认识的大多数程序员只是不使用
Set
,Map
,List
等,而是回退到Vector
普通数组。我认为这首先使代码变得丑陋。但我也知道TreeSet/Hashset
or之间的正确选择LinkedList/ArrayList
对性能至关重要,并且总是使用Vector
and 数组是不对的。 - 我可以编写我自己的这些类的实现。这似乎是在重新发明轮子,我认为我不能像其他人那样做得好。
- 由于 Java 是开源的,因此在为 J2ME 构建时,我可以获取 J2SE Collections 框架的源代码并将其包含到我的应用程序中。不过,我不知道这是否是个好主意。也许有充分的理由不这样做。
- 也许已经有一些库,它们重建了集合框架最重要的特性,但针对低端系统进行了优化,也许是通过不实现不经常使用的功能。你知道任何?
感谢您的回答和意见!
编辑:我终于找到了一个(复杂但很好的)解决方案,我想通过提供我自己的答案并接受它,该解决方案将在顶部可见。但相反,我的答案仍然处于最底层。