Eine Java-Applikation zu schreiben, welche auf Desktop (PC, Mac), im Embedded (z.B. Raspberry Pi) und auf Smartphone (Android, IPhone), das möglichst mit wenig Code-Anpassung laufen soll ist leider ein Wunschdenken. Das hängt zum einen damit zusammen, dass unterschiedliche Hardware (Desktop <-> Raspberry Pi) und unterschiedliche Sicherheitsarchitektur (Desktop <-> Smartphone) grossen Einfluss bei der Umsetzung haben, die ich erst verstehen und gemeinsamen Nenner finden muss.
Inhaltsverzeichnis
Stand 2.5.17:
Derzeit besteht jedoch die Herausforderung, JavaFX unter Android zum Laufen zu bringen, da Sun/Oracle die Unterstützung von JavaFX für Embeddet (Version z.B. für Raspberry Pi) und Android eingestellt hat. Es gibt zwar Community, welche sich dem angenommen hat. Für Raspberry Pi war die Ergänzung auch relative einfach aber für Android hat mich die Lösung noch nicht überzeugt. Entweder ist die Dokumentation veraltet und funktioniert nicht richtig, oder das Produkt ist recht teuer und schwächelt in der Leitung, zumindest während der Entwicklungsphase.
Android besitzt zwar auch ein recht starkes GUI-Framework, aber da müsste ich wieder mehrere Projekte unterhalten oder einen Wrapper bauen.
Stand 5.5.17:
Ich habe nun ein Tool gefunden (jfxmobile), welches vielversprechend ist und ich erste Erfolge verzeichnen konnte. Dies setzt allerdings eine etwas andere Projektstruktur auf. Dafür lässt sich der Code für die unterschiedlichen Plattformen (Desktop, Embedded, Android und IPhone) übersetzen. Allerdings ist IPhone im Augenblick für mich kein Thema, da mir die dafür notwendige Umgebung fehlt.
Stand 9.5.17:
Das besagte Tool hat doch mehr Macken als zunächst angenommen. Die Hauptproblematik ist, dass Android-SDK den neuen Java-Standard 8 noch nicht voll implementiert hat und somit mit der sogenannte Lambda-Schreibweise nicht klar kommt.
Nachdem ich die neuste Version von jfxmobile-plugin installierte, reklamierte der Java-Builder jedes Mal ein „DuplicateFileException: Duplicate files copied in APK“ die ich entsprechend behandeln muss. Da der Builder jedoch 10 Minuten dauert, zieht sich das enorm hin alle zu finden.
Stand 11.5.17:
Endlich läuft das Tool, nachdem ich Überschüssiges entfernt und Fehlendes hinzugefügt habe. Insbesondere muss ich berücksichtigen, dass Android-Java noch nicht auf Java 8 läuft. Wenn ich nun für die notwendigen Funktionen die passenden Bibliotheken gefunden habe, kann ich mit der Portierung loslegen. Die erste Bibliothek ist für die Verarbeitung der XML-Datei für die Konfiguration. Hier zeigte Simple-XML als eine gute Lösung.
Stand 15.5.17:
Die nächste Herausforderung war mein Plug-In – System: Durch die Sicherheitsarchitektur im Android funktionierte der ClassLoader vom Standart-Java nicht. Hierbei musste ich eine entsprechende Funktion von Android-SDK verwenden.
