当前的情况:
我正在为支持Java的手机(基于MIDlet的“哑巴手机”,而不是Android)开发一个小应用程序。应用程序的结构如下:
ModuleA的类)ModuleB的类)A和B类型的模块基本上是根据用户从列表中选择的内容在基础设施中实例化的类,它们以自己特定的方式执行任务。想想“战略模式”。当用户使用应用程序时,她探索了基础设施提供的屏幕,然后看了A类型模块的列表(见它们的标题)。然后,她选择其中一个模块,该模块被实例化,并为她做一些事情。
我所希望的
我想知道是否有可能(如果是,如何)将整个基础设施打包到一个JAR文件中,但是将A类型的模块和B类型的模块保存在其他JAR文件中,这些模块将来可以安装在设备上(比如基础设施的附加组件)。我在想这个场景:
首先,这样的附加功能可以安装在移动设备上吗?它们是否必须包含MIDlet类(不做任何操作或通知基础设施)?基础设施能检测到那些包含我的应用程序附加组件的JAR吗?或者,基础设施能否与其他JAR中的类进行交互?
注意:只有Infrastructure会包含一个有用的MIDlet类。此外,加载项将包含A型模块和B型模块的任何组合。
可能的解决方案?(但不完整)
也许这些附加组件看起来、行为和气味都像设备本身的MIDlet应用程序,因此它们可以作为任何普通的MIDlet应用程序安装。加载项可以声明为与基础设施相同的套件的一部分,因此他们可以通过写信到基础设施记录存储(我知道每个MIDlet套件都有一个记录存储)通知他们的存在。基础设施读取新的记录,并知道它现在有额外的模块。它能访问打包在外接MIDlet JAR中的类并实例化它们吗?
发布于 2012-08-15 05:41:51
MIDP规范不支持您所描述的实现目标。除其他外,您不能拥有属于同一MIDlet套件的几个JAR。
如果您想实现某种模块化,则需要使用不同的运行时。一个可以在一个MIDlet中实现的定义自己的方法。
当二进制文件可用时,您可以编写一个下载二进制文件的MIDlet。相同的MIDlet可以解释这些二进制文件。二进制文件可以包含更改MIDlet行为的命令。MIDlet需要支持二进制文件要求它执行的所有可能的操作(不过,MIDlet可以升级)。
基本上,在您的MIDlet中,您需要为您定义的任何新编程语言编写一个虚拟机,它是运行时的实现。
这将是一项艰巨的工作。你很可能最终会制造一个大到不能安装在很多手机上的MIDlet。
https://stackoverflow.com/questions/11710420
复制相似问题