Java als universelle Programmiersprache

Seite 3: Mobile und Kleinstgeräte

Inhaltsverzeichnis

Für die mobilen Anwendungen ("Apps") auf Smartphones und Tablets gibt es heute praktisch nur noch zwei Betriebssysteme (iOS und Android), die sich den Markt aufteilen. Aus ihnen abgeleitet werden Derivate wie watchOS, tvOS, CarPlay sowie Android Wear, TV, Auto umgesetzt. Um mobile Anwendungen zu implementieren, gibt es zwei Wege mit diversen Varianten: hybride Anwendungen auf Basis von HTML, CSS und JavaScript und native mobile Anwendungen. (Echte Webanwendungen ignorieren die Autoren hier, da sie sich aus technischer Sicht nicht von Webanwendungen auf dem Desktop unterscheiden.)

  1. Hybride Anwendungen auf Basis von HTML, CSS und JavaScript: Sie laufen auf einer sogenannten Webview beziehungsweise einem Webcontainer, also einem eingebetteten Webbrowser. Sie findet man auf allen mobilen Geräten, die Webview (HTML, CSS und JavaScript) unterstützen. Hier spielen Techniken wie Apache Cordova und Adobes PhoneGap (basierend auf Cordova) eine große Rolle. Ähnlich wie bei den anderen Webanwendungen existieren im mobilen Umfeld Angebote mit Java statt JavaScript. Die Open-Source-Produkte mGWT beziehungsweise mGWT Phonegap sind ein Beispiel. Einer der gravierenden Nachteile einer hybriden Anwendung ist das Look-and-feel der Benutzeroberfläche, die sich oft nicht "nativ" anfühlt. Zwar ist es möglich, geräteabhängige Verhaltensweisen zu implementieren, allerdings geht dann schnell die durch den hybriden Ansatz eingesparte Zeit wieder verloren.
  2. Native mobile Anwendung: In der Android-Welt ist Java zu Hause, und gleichzeitig ist Android dank Java so erfolgreich. Quellcode in Java aus Standalone- und Webanwendungen lässt sich relativ leicht in nativen Android-Anwendungen wiederverwenden. Geschäftslogik kann theoretisch einfach neu kompiliert werden, auch wenn sich die Architektur auf einem mobilen Gerät in aller Regel von derjenigen einer herkömmlichen Anwendung unterscheiden wird. Die Benutzeroberfläche ist in jedem Fall neu zu programmieren.

Für das Betriebssystem iOS gibt es einige Frameworks für die Implementierung einer nativen Anwendung mit Java:

Produkt Typ Bemerkung
Titanium4J JavaScript-basierende plattformübergreifende Laufzeitumgebung Titanium4J basiert auf dem Produkt Titanium. Vergleich zwischen Phonegap und Titanium
Gluon JavaFX-basierende Plattform für alle Betriebssysteme inkl. Android und iOS Architekturdokumentation von Gluon-Anwendungen
J2ObjC Java-zu-Objective-C-Transpiler Mit J2ObjC können keine komplett nativen Anwendungen für iOS geschrieben werden. Dieser Transpiler dient zur Wiederverwendung von Java-Logik-Code in Objective-C. Sämtliche Benutzeroberflächen müssen immer noch in Objective-C bzw. Swift geschrieben werden. Dieses Framework vereint natives Look-and-feel und Wiederverwendung von Java-Quellcode. Eine Erklärung, wie Google Java für Web (GWT), Android und iOS (J2ObjC) nutzt, findet sich hier.
JUniversal Java-zu-C#-Transpiler Möchte jemand für die Windows Plattform entwickeln, steht JUniversal von Microsoft für die Umsetzung mit Java zur Verfügung. Das Konzept ähnelt demjenigen von J2ObjC. Einführungsartikel zu diesem Thema

Die ständige Weiterentwicklung der Webbrowser im Desktop und mobilen Umfeld bringt derzeit eine neue Alternative für die Entwicklung hervor: Progressive Web Apps (PWA). Sie lassen sich sowohl für Desktop- als auch für mobile Webapplikationen, die jedoch Charakteristiken einer nativen mobilen Anwendung besitzen.

Konzept der Progressive Web Apps im Überblick (Abb. 1)

Es ist zu sehen, dass Mobile-Entwickler mit HTML, CSS und Java für die Zielplattformen Android und iOS auskommen. Falls natives Look-and-feel benötigt wird, können Entwickler die Wiederverwendung von Java-Code mit Transpilern wie J2ObjC erhöhen. Allerdings zeigen Entwicklungen wie PWA, dass sich JavaScript im Browser ganz zu Hause fühlt. Mit Transpilern wie GWT lässt sich PWA ebenfalls in Java implementieren.

Internet of Things (IoT) ist derzeit in aller Munde. Hier spielt Java ebenfalls eine große Rolle. Eclipse IoT bietet zum Beispiel eine Sammlung von Open-Source-Projekten, die für IoT-Umgebungen wie Raspberry Pi gedacht sind. Für LEGO-Fans gibt es das Projekt Lejos (Java for LEGO Mindstorms). Zwar wird Java -- insbesondere der JVM – immer wieder nachgesagt, Ressourcen zu verschwenden, trotzdem findet sie auch in Bereichen mit wirklich eingeschränkten Kapazitäten Verwendung. Offensichtlich überwiegen die Vorteile der weitreichenden Möglichkeiten den Einschränkungen, welche die limitierte Hardware mit sich bringt.