1

現在の様子:

Java 対応の電話 (Android ではなく、MIDlet ベースの「ダム電話」) 用の小さなアプリケーションを作成しています。アプリケーションは次のように構成されています。

  1. コア機能を備えた「インフラストラクチャ」
  2. タイプ A のモジュール ( interface を実装するクラスModuleA)
  3. タイプ B のモジュール ( interface を実装するクラスModuleB)

タイプ A および B のモジュールは基本的に、ユーザーがリストから選択したものに基づいてインフラストラクチャでインスタンス化されるクラスであり、独自の方法で処理を行います。「戦略パターン」を考える。ユーザーがアプリケーションを使用しているとき、彼女はインフラストラクチャによって提供される画面を探索し、タイプ A のモジュールのリストに到達します (それらのタイトルを確認します)。次に、モジュールの 1 つを選択します。モジュールはインスタンス化され、彼女のために何かを行います。

私が望んでいること

インフラストラクチャ全体を JAR ファイルにパッケージ化することが可能かどうか (可能であればその方法) を考えていましたが、タイプ A のモジュールとタイプ B のモジュールを他の JAR ファイルに保持し、将来デバイスにインストールできるようにします (インフラストラクチャのアドオンなど)。私はこのシナリオを考えています:

  1. ユーザーがインフラストラクチャをインストール
  2. ユーザーは、インフラストラクチャと同時に利用できる「スターター」アドオンをインストールします
  3. 数週間後、ユーザーがインストールできる「特別なクリスマス モジュール」などの新しいアドオンが開発者によって作成されるため、既にデバイスにインストールされているインフラストラクチャは、アドオン内のモジュールを一覧表示します。
  4. 1 年後、他の機能やアイデアを備えたモジュールを含む別のアドオンが公開されました

まず、そのようなアドオンをモバイル デバイスにインストールできますか? MIDlet クラスを含める必要がありますか (何もしないか、インフラストラクチャに通知します)? インフラストラクチャは、アプリケーションのアドオンを含む JAR を検出できますか? または、インフラストラクチャは、他の JAR にパックされたクラスと対話できますか?

注: 有用な MIDlet クラスを含むのはインフラストラクチャ JAR だけです。また、アドオンには、タイプ A のモジュールとタイプ B のモジュールの任意の組み合わせが含まれます。

可能な解決策?(不完全ですが)

おそらくアドオンは、デバイス自体の MIDlet アプリケーションのように見え、動作し、匂いがするので、通常の MIDlet アプリケーションとしてインストールできます。アドオンは、インフラストラクチャと同じスイートの一部として自身を宣言できるため、そのレコード ストレージに書き込むことでインフラストラクチャに存在を通知できます (MIDletスイートごとにレコード ストレージがあることは理解しています)。インフラストラクチャは新しいレコードを読み取り、追加のモジュールがあることを認識します。アドオン MIDlet JAR にバンドルされているクラスにアクセスしてインスタンス化できますか?

4

1 に答える 1

1

あなたが達成しようとしていることは、MIDP 仕様ではサポートされていません。特に、同じ MIDlet スイートに属する複数の JAR を持つことはできません。

ある種のモジュール性を実現したい場合は、別のランタイムを使用する必要があります。自分で定義し、1 つの MIDlet 内に実装できるもの。

バイナリ ファイルが利用可能になったときにダウンロードする MIDlet を作成できます。同じ MIDlet がこれらのバイナリ ファイルを解釈できます。バイナリ ファイルには、MIDlet の動作を変更するコマンドを含めることができます。MIDlet は、バイナリ ファイルが実行を要求する可能性のあるすべてのアクションをサポートする必要があります (ただし、MIDlet はアップグレードできます)。

基本的に、MIDlet 内で、定義する新しいプログラミング言語のランタイムの実装である仮想マシンをコーディングする必要があります。

これには多くの作業が必要です。多くの電話機にインストールするには大きすぎる MIDlet を作成することになる可能性があります。

于 2012-08-15T05:41:51.187 に答える