为MIDlet创建“扩展包”或“附加组件”?

时间:2012-07-29 15:23:56

标签: java mobile midlet

目前情况如何:

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

  1. “基础设施”,具有核心功能
  2. A类模块(实现接口ModuleA的类)
  3. B类模块(实现接口ModuleB的类)
  4. 类型A和B的模块基本上是基于用户从列表中选择的内容在基础结构中实例化的类,并且它们以自己特定的方式执行操作。想想“战略模式”。当用户使用该应用程序时,她会浏览基础结构提供的屏幕,然后进入A类模块列表(查看其标题)。然后她挑选了一个模块,这个模块被实例化并为她做了一些事情。

    我想要的是什么

    我想知道是否有可能(如果是,如何)将整个基础设施打包到JAR文件中,但是将类型A的模块和类型B的模块保存在其他JAR文件中,这些文件可以安装在设备上未来(如基础设施的附加组件)。我正在考虑这种情况:

    1. 用户安装基础架构
    2. 用户安装“Starter”插件,该插件可与Infrastructure
    3. 同时使用
    4. 几周之后,开发人员创建了一个新的附加组件,例如用户可以安装的“特殊圣诞节模块”,因此基础设施已安装在她的设备上将列出附加组件中的模块
    5. 一年后,发布了另一个附加组件,其中包含具有其他功能和想法的模块
    6. 首先,可以在移动设备上安装此类附加组件吗?他们是否必须包含MIDlet类(什么都不做或通知基础设施)?基础设施能否检测到包含我的应用程序附加组件的JAR?或者基础设施是否可以与其他JAR中包含的类进行交互?

      注意:只有Infrastructure JAR包含有用的MIDlet类。此外,附加组件将包含A类模块和B类模块的任意组合。

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

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

1 个答案:

答案 0 :(得分:1)

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

如果要实现某种模块化,则需要使用不同的运行时。您自己定义的,可以在一个MIDlet中实现的。

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

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

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