Im Gespräch mit Roman Kennke

Caciocavallo: Portierbare Java-GUI-Backends – oder wie Sie Java-Apps auf das iPad bringen

Hartmut Schlosser

Mit Caciocavallo 1.1 hat sich ein neues Projekt angekündigt, das die Portierung des Java Graphics Stacks – Java2D, AWT, Swing – erleichtert. Mit Caciocavallo wird es sogar möglich, Java-Anwendungen auf Geräten zu betreiben, die sonst kein Java unterstützen, wie beispielsweise iPads. Wir sprachen mit Caciocavallo-Entwickler Roman Kennke über Scope und Ziele des Projektes.

JAXenter: Caciocavallo ist ja nicht nur ein leckerer italienischer Käse, sondern auch ein Projekt zur Verbesserung des OpenJDK Graphics Stack. Worum geht es dabei genau?

Roman Kennke: Allgemein gesagt geht es darum, die Portierung von Java2D, AWT und Swing auf neue Plattformen zu erleichtern. Das dürfte insbesondere für Embedded Plattformen interessant sein, insbesondere mit der neuen ARM Portierung von OpenJDK/IcedTea. Zu diesem Zweck haben wir in Caciocavallo ein Framework, das den Großteil von AWT auf der Basis von Swing implementiert. Damit entfällt für eine Portierung der komplette AWT-Widgets-Teil, der ansonsten sehr viel Aufwand bedeutet, bzw.
unmöglich ist, da auf vielen Embedded Plattformen gar keine nativen Widgets existieren. Das einzige, was bei einer Portierung bleibt, ist die Implementierung einer Java2D Pipeline, für die man sehr viel existierende Komponenten von OpenJDK verwenden kann. Einfache Implementierungen kann man so innerhalb weniger Tage erstellen.

Caciocavallo kommt mit einer speziellen Implementierung, die insbesondere auch für normale Java-Entwickler interessant sein dürfte:
Cacio-TTA (von Caciotta — auch ein Käse). Diese Grafik-Implementierung rendert nur in BufferedImages, und die Events werden komplett vom AWT Robot gesteuert. Damit eignet sie sich hervorragend für GUI Test-Umgebungen und Headless-Einsätze auf Servern ohne Grafik oder X-Server. Wir setzen es selbst für Continuous-Integration-Umgebungen ein, um vollständig vorhersehbare Test-Umgebungen für GUI-Tests zu schaffen, was mit normalen Windows oder X-Server Umgebungen nicht oder nur sehr schwierig zu realisieren ist.

JAXenter: Gerade ist Version 1.1 von Caciocavallo erschienen. Was ist neu an der 1.1?

Roman Kennke: Alles! Es ist der erste Release von Caciocavallo überhaupt. Aus technischen Gründen gab es kein 1.0 Release. Caciocavallo war 4 Jahre in der Entwicklung. Der Release enthält das Kern-Framework und Cacio-TTA wie oben beschrieben, sowie Cacio-Web, eine weitere Grafik-Implementierung, die Java-in-der-Cloud ermöglicht. Damit kann man Swing-Anwendungen auf einem Server laufen lassen, die direkt auf den Anwender-Browser rendern. Wobei der Browser nur HTML5 unterstützen muss, d.h. es ist auf Client-Seite kein Java notwendig. Das erleichtert das Deployment sehr, und ermöglicht überhaupt erst Java-Anwendungen auf Geräten, die sonst kein Java unterstützen, wie iPads.

JAXenter: Zurzeit bahnt sich mit JavaFX ja so etwas wie eine Ablösung von Swing an – zumindest aber eine starke Alternative für die Entwicklung grafischer Oberflächen. In welchem Verhältnis steht Caciocavallo zu JavaFX?

Roman Kennke: Wir verfolgen die Entwicklung von JavaFX sehr genau. Zur Zeit können wir kein ähnliches Framework für JavaFX entwickeln, da der Quellcode von JavaFX noch nicht vollständig veröffentlicht wurde. Wir stehen in engem Kontakt mit den JavaFX-Entwicklern, und soweit wir das verstehen, wird so etwas wie Caciocavallo für JavaFX eventuell nicht nötig sein, da die Architektur von JavaFX besser durchdacht und für Portierungen vorbereitet ist.

Andererseits kann JavaFX auf einer Java2D Pipeline aufsetzen, das ermöglicht zumindest den Einsatz von JavaFX auf Plattformen mit einem Standard Java-GUI Stack (z.B. basierend auf Caciocavallo).

JAXenter: Welche nächsten Schritte sind für Caciocavallo geplant?

Roman Kennke: Wir möchten gern Caciocavallo mit OpenJDK integrieren, um komplette JDKs für Test-Umgebungen (Cacio-TTA) und Cloud-Deployments (CacioWeb) bereitzustellen, und mit dem Java TCK zu zertifizieren. Desweiteren haben wir eine Reihe Grafik-Portierungen in Arbeit, die Java Grafik auf SDL und DirectFB und anderen Plattformen ermöglichen.

JAXenter: Vielen Dank für dieses Interview!

Roman Kennke ist seit 2005 Open-Source-Entwickler. Er war maßgeblich an GNU Classpath und seit seiner Veröffentlichung 2007 bei OpenJDK beteiligt. 2008 gewann er zusammen mit Mario Torre den Bronze-Preis bei der OpenJDK Innovator Challenge für Caciocavallo. Roman war von 2005 bis
2009 bei aicas in Karlsruhe beschäftigt, mit Schwerpunkt auf embedded/realtime Java-Entwicklung. Von 2009 bis 2010 entwickelte er als Software Engineer im Java Team bei Sun Microsystems, danach von 2010 bis Ende 2011 als Consultant bei JP Morgan Chase, wo er sich für agile und Test-driven Entwicklungsmethoden und Open Source / Open Standards einsetzte. Er arbeitet nun seit Anfang 2012 als Principal Software Engineer für Red Hat an OpenJDK und Hotspot.
Geschrieben von
Hartmut Schlosser
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.