WAR Runner
WAR Runner ist eine experimentelle Android App, die auf einem Smartphone einen Java-Server bereitstellt, auf den im gleichen Netzwerk wie das Smartphone per Browser zugegriffen werden kann.
Demo Video
Hauptfunktionen:
- Eingebetteter Jetty: Jetty 12.1.14 mit EE11 / Servlet 6.1 direkt auf Android, auf Port 8080 (HTTP) oder 8443 (HTTPS).
- Demo-Katalog: Lädt fertige WARs - ein Hello-World-Servlet und vier Vaadin-25-Demos (Button, offizielle Dashboard-Demo, Bookstore, Adressbuch).
- Web-Admin: Passwortgeschützte Verwaltung auf Port 9443 zum Hochladen, Aktualisieren, Neustarten und Zurückrollen von WARs im Browser.
- Hintergrunddienst: Jetty läuft in als Android-Dienst, der einen Wechsel zu anderen Apps ermöglich, ohne dass der Server beendet wird.
- Download: Google Play
- WAR-Quellen & Konvertierungsanleitung: GitHub
Die Idee zu diesem Projekt ist mir vor Jahren gekommen, als ich für ein Unternehmen tätig war, das im IoT-Bereich eine Java-Lösung basierend auf Servlet-Technologie angeboten hat. Diese Software ist ohne Probleme auf einem SoC mit 256 MB gelaufen. Kunden wurden für Evaluierungszwecke die Software samt Hardware zur Verfügung gestellt.
Die Hardware hätte man sich ersparen können, wenn man die Software als APK zur Verfügung stellen hätte können. Dazu muss man aber wissen, Android basiert zwar auf Java, ist aber keine klassische Java-Standard-Plattform (JVM) - Stichwort - Android Runtime (ART), DEX-Format.
Diese Unterschiede kann man technisch überbrücken:
- Mit Hilfe des Tools
d8Java-Bytecode (.class/.jar) in das Android-DEX-Format (.dex) umwandeln - Unter der Android Runtime fehlende Klassen/Methoden ersetzen/patchen. Letzterer Punkt hat sich damals als zu aufwändig erwiesen. Aber mit Android 15 sind die Unterschiede zwischen ART und SDK kleiner geworden und die eigentlichen Konvertierungsarbeiten haben Claude/Codex umgesetzt.