Frage

Wie es derzeit ist:

Ich mache eine kleine Anwendung für Java-fähige Telefone (MIDlet-basierte "Dumb-Phones", nicht Android).Die Anwendung ist folgendermaßen aufgebaut:

  1. "Infrastruktur", mit Kernfunktionalität
  2. Module vom Typ A (Klassen, die die Schnittstelle implementieren ModuleA)
  3. Module vom Typ B (Klassen, die die Schnittstelle implementieren ModuleB)

Module vom Typ A und B sind im Grunde Klassen, die in der Infrastruktur instanziiert werden, basierend auf dem, was der Benutzer aus einer Liste auswählt, und sie machen Dinge auf ihre eigene Weise.Denken Sie an "Strategiemuster".Wenn der Benutzer die Anwendung verwendet, durchsucht er die von der Infrastruktur bereitgestellten Bildschirme und gelangt dann zu einer Liste von Modulen vom Typ A (siehe deren Titel).Dann wählt sie eines der Module aus, das instanziiert wird und etwas für sie tut.

Was ich mir wünsche

Ich habe mich gefragt, ob es möglich ist (und wenn ja, wie), die gesamte Infrastruktur in eine JAR-Datei zu packen, aber Module vom Typ A und Module vom Typ B in anderen JAR-Dateien zu behalten, die in Zukunft auf dem Gerät installiert werden können (wie Add-Ons für die Infrastruktur).Ich denke an dieses Szenario:

  1. Benutzer installiert die Infrastruktur
  2. Benutzer installiert das Add-On "Starter", das gleichzeitig mit der Infrastruktur verfügbar ist
  3. Wochen später wird vom Entwickler ein neues Add-On erstellt, wie "Spezielle Weihnachtsmodule", die der Benutzer installieren könnte, also die Infrastruktur, bereits auf ihrem Gerät installiert, listet die Module im Add-On auf
  4. Ein Jahr später erscheint ein weiteres Add-On, das Module mit anderen Funktionen und Ideen enthält

Erstens, können solche Add-Ons auf einem mobilen Gerät installiert werden?Müssen sie eine MIDlet-Klasse enthalten (nichts tun oder die Infrastruktur benachrichtigen)?Könnte die Infrastruktur die JARs erkennen, die Add-Ons für meine Anwendung enthalten?Oder könnte die Infrastruktur mit den Klassen interagieren, die in anderen Gläsern verpackt sind?

Beachten:nur das Infrastruktur-JAR würde eine nützliche MIDlet-Klasse enthalten.Außerdem würden Add-Ons eine beliebige Kombination von Modulen des Typs A und Modulen des Typs B enthalten.

Mögliche Lösung?(allerdings unvollständig)

Möglicherweise können die Add-Ons wie eine MIDlet-Anwendung für das Gerät selbst aussehen, sich verhalten und riechen, sodass sie wie jede normale MIDlet-Anwendung installiert werden können.Die Add-Ons könnten sich als Teil derselben Suite wie die Infrastruktur deklarieren, sodass sie ihre Anwesenheit der Infrastruktur mitteilen können, indem sie in ihren Datensatzspeicher schreiben (ich verstehe, dass es einen Datensatzspeicher pro MIDlet gibt Suite).Die Infrastruktur liest die neuen Datensätze und weiß, dass sie jetzt zusätzliche Module hat.Könnte es auf die in den Add-On-MIDlet-Gläsern gebündelten Klassen zugreifen und sie instanziieren?

War es hilfreich?

Lösung

Was Sie beschreiben, wird von den MIDP-Spezifikationen nicht unterstützt.Unter anderem können Sie nicht mehrere Gläser haben, die zu derselben MIDlet-Suite gehören.

Wenn Sie eine Modularität erreichen möchten, müssen Sie eine andere Laufzeit verwenden.Eine, die Sie selbst definieren und die in einem MIDlet implementiert werden kann.

Sie können ein MIDlet schreiben, das Binärdateien herunterlädt, sobald sie verfügbar sind.Dasselbe MIDlet kann diese Binärdateien interpretieren.Die Binärdateien können Befehle enthalten, die das Verhalten des MIDlets ändern.Das MIDlet muss alle möglichen Aktionen unterstützen, die von den Binärdateien angefordert werden (ein MIDlet kann jedoch aktualisiert werden).

Grundsätzlich müssen Sie in Ihrem MIDlet eine virtuelle Maschine codieren, die eine Implementierung einer Laufzeit für die von Ihnen definierte neue Programmiersprache ist.

Das wird eine Menge Arbeit.Möglicherweise erstellen Sie am Ende ein MIDlet, das zu groß ist, um auf vielen Telefonen installiert zu werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top