gpt4 book ai didi

java - 如何处理 J2ME 上缺少的最常见的类

转载 作者:搜寻专家 更新时间:2023-10-30 19:51:32 24 4
gpt4 key购买 nike

我正在尝试编写一个运行在不同 Java 平台(如 J2SE、J2ME、Android 等)上的应用程序。我已经知道我必须为每个平台重写大部分 UI,但我想重用核心逻辑。

保持这个核心的可移植性涉及我所知道的三个缺点:

  1. 保持旧的 Java 1.4 语法,不使用 Java 5.0 的任何优秀语言特性
  2. 仅使用已知可在这些平台上运行的外部库(即:不使用 JNI 并且不依赖于违反此规则的其他库)
  3. 仅使用所有这些平台上的

我知道克服 (1) 的方法:5.0 风格的代码并自动将其转换为 1.4(retroweaver - 还没有尝试过,但看起来不错).

我认为(2)是一个我不得不接受的问题。

现在我想知道(3) 的最佳解决方法是什么,尤其是我最想念的集合类。我能想到那些:

  • 我认识的大多数程序员只是不使用SetMapList 等,而是回退到Vector 和普通数组。我认为这首先使代码变得丑陋。但我也知道,在 TreeSet/HashsetLinkedList/ArrayList 之间做出正确选择对性能至关重要,并且始终使用 Vector 和 Arrays 不能这是对的。
  • 我可以编写我自己的那些类的实现。这似乎是在重新发明轮子,我认为我做不到像其他人那样好。
  • 由于 Java 是开源的,我可以获取 J2SE 集合框架的源代码,并在为 J2ME 构建应用程序时将其包含到我的应用程序中。不过,我不知道这是否是个好主意。也许有充分的理由不这样做。
  • 也许已经有一些库重建了集合框架最重要的功能,但针对低端系统进行了优化,也许是通过不实现不常使用的功能。你知道吗?

感谢您的回答和意见!

编辑:我终于找到了一个(复杂但不错的)解决方案,我认为通过提供我自己的答案并接受它,该解决方案将在顶部可见。但恰恰相反,我的答案仍然在最底部。

最佳答案

J2ME 是残酷的,您将不得不放弃其他平台的一些优点。习惯 Hashtable 和 Vector,并在它们之上编写自己的包装器。另外,也不要错误地认为 J2ME 是标准的,因为每个制造商的 JVM 可以以截然不同的方式做事。最初我不会太担心性能,因为在 J2ME 上获得正确性就足够了。编写一个跨 J2ME、J2SE 和 Android 运行的应用程序是可能的,就像我所做的那样,但这需要大量的工作。我的一个建议是编写应用程序逻辑的核心并将其严格保留在 java.lang、java.util 和 java.io 中。在任何您要执行可能与平台交互的事情的地方,例如文件系统或网络,您都可以创建一个接口(interface),您的核心应用程序代码可以与之交互,您可以为不同的环境提供不同的实现。例如,您可以拥有一个包装 HTTP 内容的接口(interface),并在 Android 上将 javax.microedition.io.HttpConnection 与 J2ME 和 java.net.HttpURLConnection 一起使用。这很痛苦,但如果您想维护在所有这三种环境中运行的应用程序,它可以帮助您实现目标。祝你好运。

关于java - 如何处理 J2ME 上缺少的最常见的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/859449/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com