RoboVM 1.0 will Java und JVM-Sprachen auf iOS bringen
Das zu größten Teile quelloffene Projekt will Entwicklern, die Sprachen wie Java, Scala, Kotlin, Groovy oder Clojure nutzen, die Chance geben, mit ihren Tools auch Anwendungen für iOS schreiben zu können.
- Julia Schmidt
Trillian Mobile konnte der Öffentlichkeit vor Kurzem die erste Hauptversion seines RoboVM-Projekts präsentieren. Ziel der Plattform ist es, Entwicklern, die Java oder JVM-Sprachen (Java Virtual Machine) nutzen, die Möglichkeit zu geben, native iOS-Apps zu schreiben, deren Code sich auch auf Android und dem Backend nutzen lässt. Zudem soll sie eine Test- und Build-Umgebung bieten, in der sich der Programmierer nicht fremd fühlt.
RoboVM setzt sich aus einem Ahead-of-time-Compiler, einer Laufzeitumgebung, einer Klassenbibliothek, Bindings für iOS APIs, einem Debugger und Integrationsmechanismen für ausgewählte Entwicklungsumgebungen und Build-Systeme (etwa Maven und Gradle) zusammen. Bis auf den Debugger stehen dabei wohl alle Komponenten quelloffen zur Verfügung. Das Kernstück des Projekts ist der AOT-Compiler. Mit ihm lässt sich das Problem umgehen, dass Apple auf iOS keine Just-in-Time-Kompilierung erlaubt, die meisten JVMs sie aber einsetzen.
(Bild: RoboVM )
RoboVM nimmt Java-8-Bytecode entgegen und parst ihn mit dem Analyse- und Umwandlungsframework Soot in eine Jimple genannte Repräsentation. Den so erzeugten Code vereinfacht und optimiert RoboVM dann, führt im Anschluss noch einige Transformationen durch, die den Umgang mit Java-8-Features wie Lambdas regeln, und setzt die projekteigene Binding Bridge Bro ein. Der so bearbeitete Jimple-Code wird später in die Intermediate Representation der Compiler-infrastruktur LLVM überführt, woraus das Tool dann eine an die angezielte Architektur angepasste Assembly-Datei generiert, die es dann wiederum in eine finale Objektdatei wandelt.
Da RoboVM Bytecode verarbeitet, kann er mit Input verschiedener JVM-Sprachen arbeiten und so wohl im Gegensatz zu Werkzeugen, die auf Java-Code setzen, JARs von Drittanbietern einfacher nutzen. Nachteilig kann sich hier allerdings auswirken, dass das Projekt Bytecode nicht zur Laufzeit laden kann.
Kommerzielles Angebot und Zukunft
Mit der Vorstellung von Version 1.0, hat das Unternehmen auch kommerzielle Lizenzen eingeführt. Für Nutzer des Open-Source-Kerns soll sich laut Bekanntmachung nichts ändern. Das Bezahlangebot ist für verschiedene Gruppenstärken verfügbar und enthält unter anderem einen mit dem Java Debug Wire Protocol kompatiblen Debugger zur Fehlersuche via Direktverbindung oder Simulator, verbesserte Absturzberichte, E-Mail-Support und die Option, JavaFX zu nutzen.
Für die Zukunft haben die Entwickler unter anderem geplant, die Dokumentation zu verbessern und User Guides und Videos zur Verfügung zu stellen. Außerdem soll nicht länger nur Eclipse als Entwicklungsumgebung unterstützt werden, sondern RobotVM soll auch mit IntelliJ IDEA oder Android Studio nutzbar sein. Auch die Möglichkeit, von RoboVM aus statisch in Objective-C-Anwendungen linken zu können, ist im Gespräch. (jul)