Interview mit Niklas Therning

RoboVM – Offen für alle JVM-Sprachen

Peter Friese
©shutterstock.com/josefkubes

RoboVM ermöglicht die Ausführung von Java und anderen JVM-Sprachen auf der iOS-Plattform, also beispielsweise dem iPhone oder dem iPad. Es nutzt einen Ahead-of-Time-Compiler, der Java Bytecode in nativen ARM- oder x86-Maschienencode übersetzt. Ohne Interpretationsvorgang kann dieser Code dann auf der Ziel CPU ausgeführt werden, neben iOS-Geräten auch auf Linux- und Mac-OS-X-x86-Systemen. Unser Java-Magazin-Autor Peter Friese sprach mit Niklas über den derzeitigen Stand und die Entstehungsgeschichte des Projekts. Einen ausführlichen Artikel zu RoboVM finden Sie im kommenden Java Magazin 7.2014!

Peter Friese: Wer bist du, und was ist dein Hintergrund?

Niklas Therning: Mein Name ist Niklas Therning, ich bin 36 Jahre alt und wohne in Göteborg. Ich hatte schon immer ein Interesse für Computer. Seit Anfang der 90er Jahre, als ich meinen Amiga 500 bekam, programmiere ich. Ich habe einen Master of Science in Informatik an der Chalmers Universität in Göteborg abgelegt. Die letzten zehn Jahre arbeite ich in meiner eigenen Firma. Wir führen Auftragsarbeiten durch, vor allem Server-seitige Java- und Web-App-Entwicklung. Außerdem habe ich den SpamDrain Anti-Spam-Dienst mitgegründet – dort beschäftige ich mich nicht nur mit Frontend- und Backend-Entwicklung, sondern habe mich auch um den Support und die Server-Administration gekümmert. Seit etwa drei Jahren arbeite ich an RoboVM, zunächst als Nebenprojekt in meiner Freizeit und dann – seit zirka 1,5 Jahren – Vollzeit.

RoboVM ist Finalist des JAX Innovation Awards 2014 in der Kategorie „Most Innovative Open Technology“. Machen Sie mit! Das offene Community Voting läuft bereits – bis zum 12. Mai können Sie unter http://jax.de/awards2014/ Ihre Stimme für die innovativsten Technologien und Unternehmen abgeben!

Peter: Wer arbeitet an RoboVM?

Niklas: Derzeit hauptsächlich ich. Es gibt eine kleine Community rund um das Projekt, die RoboVM einsetzt und Feedback zu Bugs liefert. Ich denke, das ist normal für jedes junge Open-Source-Projekt. Es benötigt einfach Zeit, um eine eingeschworene Community aufzubauen. Ich muss zugeben, dass ich wohl mehr tun könnte, um neue Entwickler zu gewinnen, z.B. durch eine Dokumentation der RoboVM-Interna.

Peter: Wie wird RoboVM finanziert?

Niklas: Bisher wurde RoboVM von unserem Unternehmen, SpamDrain AB finanziert. Aber vor ein paar Wochen haben wir es geschafft, eine Startfinanzierung zu sichern. Dies sollte uns einen benötigten Schub geben und wir werden bald sogar einige Entwickler für das Projekt einstellen können.

Peter: Wie bist Du auf die Idee für RoboVM gekommen?

Niklas: Im Jahr 2010 haben wir begonnen, iOS und Android Apps für SpamDrain zu bauen. Dazu haben wir uns diverse Cross-Platform Frameworks angeschaut, die damals zur Verfügung standen. Wir wollten keine HTML5/JS/CSS App bauen, so dass wir eigentlich alle der existierenden Tools ausschließen mussten. Und da wir alle umfangreiche Java-Kenntnisse haben und Java die native Sprache für die Entwicklung von Android-Apps ist, wünschten wir uns ein Tool auf Java-Basis. Da wir aber nichts nach unserem Geschmack gefunden haben, haben wir die iOS-App erstmal mit Xcode und Objective-C entwickelt. Das hat mich dazu bewogen, mir darüber Gedanken zu machen, wie man Java auf iOS zum Laufen bringen könnte. Xamarin hatten mit MonoTouch bereits gezeigt, dass das für C# möglich ist, also warum nicht auch mit Java?

Peter: Wie ähnlich sind sich Xamarin und RoboVM?

Niklas: RoboVM ist sehr ähnlich zu Xamarin in der Art und Weise wie es funktioniert, außer dass Xamarin halt auf C# und .NET-Technlogien basiert und RoboVM eben auf Java und den dort verfügbaren Tools und Libraries.

Peter: Wie ähnlich sind sich XMLVM und RoboVM?

Niklas: Auf einem sehr abstrakten Niveau sind sich RoboVM und XMLVM sehr ähnlich in der Art wie sie Java Code in Bytecode umwandeln. Bei XMLVM sieht das so aus: Java Bytecode -> XML -> C -> Maschinencode, bei RoboVM so: Java Bytecode -> Soot Jimple -> LLVM IR -> Maschinencode.

Peter: Java ist im Vergleich zu Objective-C eine viel „geschwätzigere“ Sprache. Wo siehst Du die Sweet-Spots für RoboVM?

Niklas: Ich bin nicht der Meinung, dass Java eine umständlichere Sprache ist. Dennoch: RoboVM ist nicht auf Java beschränkt. Theoretisch könnte man jede Sprache benutzen, die auf der JVM basiert. Scala, Clojure und Kotlin sind einige der andere JVM-basierten Sprachen, die mit RoboVM funktionieren und die etliche der Defizite der Java-Sprache beheben.
Als Hauptanwendungsfall für RoboVM sehe ich die Möglichkeit, Teile des Codes einer App für Android und iOS zu teilen, so dass Java-Entwickler ihre Fähigkeiten weiterverwenden können ohne eine neue Sprache und neue Tools erlernen zu müssen.

Peter: Methodennamen in Objective-C haben einen sehr speziellen Aufbau, der nicht einfach in andere Sprachen zu übertragen ist. Wie werden die Methodennamen für RoboVM übersetzt? Verwendest Du einen manuellen Ansatz oder gibt es einen automatisierten Ansatz?

Niklas: Ich benutze einen semi-automatisierten Prozess: Ich habe ein Tool, das Objective-C Header-Dateien und eine Konfigurationsdatei liest und Java-Klassendateien daraus erzeugt. Mit der Konfigurationsdatei können Methodennamen automatisch umbenannt werden oder bestimmt werden, wo globale Funktionen landen. Methodennamen werden leicht geändert, um sie für Java-Programmierer natürlicher aussehen zu lassen (in der Regel vor dem ersten „:“ im Selektor).

Peter: Die meisten mit RoboVM umgesetzten Apps scheinen Spiele zu sein. Ist das ein Sweet Spot für RoboVM?

Niklas: Nicht wirklich. Als ich mit der Arbeit an RoboVM begann, dachte ich, dass Spiele der am wenigsten wahrscheinlichste Anwendungsfall sein würden – vor allem wegen der Garbage Collection und der Gefahr, „die Welt anzuhalten“, während der Garbage Collector läuft. Aber dann zeigte die libGDX Community ein großes Interesse an RoboVM und ich half ihnen dabei, ein RoboVM / iOS Backend auf die Beine zu stellen. Mit libGDX kann man nun mit einer einzigen Code-Basis Spiele für Android, Blackberry, Desktop, HTML5 und iOS schreiben. Und selbst mit mehr als 50 libGDX-basierten Speilen im App Store habe ich bisher kaum Beschwerden über Probleme mit der Garbage Collection gehört. Die libGDX wahr sehr aktiv beim Testen neuer Features auch in einem frühen Stadium und ich bin ihnen dafür sehr dankbar.

Peter: Was sind Deine Pläne für weitere IDE-Integrationen und andere Entwicklungstools? Derzeit gibt es eine Eclipse-Integration, aber im Forum wird oft nach einer IintelliJ-Integration gefragt.

Niklas: Ja, die IntelliJ-Integration ist das am häufigsten kommentierte Issue auf unserer Github-Seite. An einem gewissen Punkt werden wir das prüfen müssen, wenn nicht jemand aus der Community einspringt. Wir haben bereits eine Maven-Integration und die Community hat Gradle und Leinigen-Plugins zur Verfügung gestellt. Die JavaFX-Community und Oracle haben Eclipse- und Netbeans-Plugins bereitgestellt, die die Entwicklug von JavaFX-Apps für iOS erleichtern.
In Zukunft werden wir auch einen Debugger und eine JUnit-Integration anbieten müssen, und außerdem wäre eine Integration mit dem Interface-Builder hilfreich.

Peter: Wie sieht die Roadmap für RoboVM aus?

Niklas: Mein Ziel ist eine stabile Version (1.0) irgendwann spät im dritten oder Anfang des vierten Quartals. Abgesehen davon, dass RoboVM dann größtenteils fehlerfrei sein sollte, sind möglichst vollständige Bindings für CocoaTouch und eine vernünftige Dokumentation ein wichtiges Ziel. Ähnlich wie Xamarin werden wir kommerzielle Lizenzen für RoboVM anbieten, mit dem Unterschied, dass RoboVM einen vollständig nutzbaren, Open-Source-basierten Kern hat, der ohne Einschränkungen für die Entwicklung von Apps verwendet werden kann.

Peter: Vielen Dank für dieses Interview!

Niklas Therning ist Gründer des RoboVM Open-Source-Projekts und Mitbegründer von Trillian Mobile AB – dem Haupt-Contributor des RoboVM-Projekts. Seine Mission ist die Portierung von Java nach iOS. Vor RoboVM gründete er den SpamDrain Anti-Spam Service und arbeitete als Unternehmer im Bereich Java EE und Web-Entwicklung. Niklas hat einen Master-of-Science-Abschluss in Computertechnik von der Chalmers University of Technology in Göteborg, Schweden.

Aufmacherbild: Vintage tin toy robot von Shutterstock / Urheberrecht: josefkubes

Geschrieben von
Peter Friese
Peter Friese
Peter Friese arbeitet als Developer Advocate bei Google im Developer Relations Team in London. Er trägt regelmäßig zu Open-Source-Projekten bei, spricht auf Konferenzen und bloggt unter http://www.peterfriese.de. Auf Twitter findet man ihn unter @peterfriese und auf Google+ unter +PeterFriese.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: