gpt4 book ai didi

java - 为 MIDlet 创建 "expansion packs"或 "add-ons"?

转载 作者:太空宇宙 更新时间:2023-11-04 08:08:15 25 4
gpt4 key购买 nike

目前情况:

我正在为支持 Java 的手机(基于 MIDlet 的“哑手机”,而不是 Android)制作一个小型应用程序。该应用程序的结构如下:

  1. “基础设施”,具有核心功能
  2. A 类型的模块(实现接口(interface) ModuleA 的类)
  3. B 类型的模块(实现接口(interface) ModuleB 的类)

类型 A 和 B 的模块基本上是类,它们根据用户从列表中选择的内容在基础结构中实例化,并且它们以自己的特定方式执行操作。思考“策略模式”。当用户使用该应用程序时,她会浏览基础设施提供的屏幕,然后看到 A 类型的模块列表(查看它们的标题)。然后她选择其中一个模块,该模块被实例化并为她做一些事情。

我的愿望

我想知道是否可以(如果可以,如何)将整个基础设施打包在一个 JAR 文件中,但将 A 类型的模块和 B 类型的模块保留在其他 JAR 文件中,以便将来可以安装在设备上(例如基础设施的附加组件)。我正在考虑这个场景:

  1. 用户安装基础设施
  2. 用户安装“Starter”插件,该插件与基础架构同时可用
  3. 几周后,开发人员创建了一个新的附加组件,例如用户可以安装的“特殊圣诞节模块”,因此基础设施(已安装在她的设备上)将列出附加组件中的模块
  4. 一年后,发布了另一个附加组件,其中包含具有其他功能和想法的模块

首先,这样的插件可以安装在移动设备上吗?它们是否必须包含 MIDlet 类(不执行任何操作或通知基础结构)?基础设施能否检测到那些包含我的应用程序附加组件的 JAR?或者基础设施可以与其他 JAR 中打包的类进行交互吗?

注意:只有基础结构 JAR 才会包含有用的 MIDlet 类。此外,附加组件将包含 A 类型模块和 B 类型模块的任意组合。

可能的解决方案? (虽然不完整)

也许这些附加组件在外观、行为和气味上都像设备本身的 MIDlet 应用程序,因此它们可以像任何普通的 MIDlet 应用程序一样安装。附加组件可以将自己声明为与基础设施相同的套件的一部分,因此它们可以通过写入基础设施的记录存储来通知其存在(据我所知,每个 MIDlet 套件都有一个记录存储)。基础设施读取新记录并知道它现在有额外的模块。它可以访问附加 MIDlet JAR 中捆绑的类并实例化它们吗?

最佳答案

MIDP 规范不支持您所描述的实现。除此之外,您不能拥有属于同一个 MIDlet 套件的多个 JAR。

如果你想实现某种模块化,你需要使用不同的运行时。一种由您自己定义并可以在一个 MIDlet 内实现的方法。

您可以编写一个 MIDlet,在二进制文件可用时下载它们。同一个 MIDlet 可以解释这些二进制文件。二进制文件可以包含更改 MIDlet 行为的命令。 MIDlet 需要支持二进制文件要求它执行的所有可能的操作(不过,MIDlet 可以升级)。

基本上,在 MIDlet 内部,您需要编写一个虚拟机代码,该虚拟机是您定义的任何新编程语言的运行时实现。

这将是一项艰巨的工作。您很可能最终会制作一个太大而无法安装在很多手机上的 MIDlet。

关于java - 为 MIDlet 创建 "expansion packs"或 "add-ons"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11710420/

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