Gavin King über Ceylon 1.0

Ceylon-Entwickler Gavin King im Interview: "Wir wollen Teil der Java-Welt sein"

Die JVM-Sprache Ceylon ist letzte Woche in ihrer ersten Major-Version erschienen. Wir unterhielten uns mit Ceylon-Chefentwickler Gavin King (Red Hat) über Gründe, Ausrichtung und Ziele von Ceylon. Es ging tatsächlich um mehr, als den Kaffee-Liebhabern aus dem Java-Lager die Tee-Variante Ceylon entgegenzusetzen….

JAXenter: Hallo Gavin, herzlichen Glückwunsch für die Veröffentlichung von Ceylon 1.0! Was waren die Beweggründe für die Entwicklung von Ceylon?

Gavin King: Vielen Dank! Nun, zu der Zeit, als die Sprache konzipiert wurde, war ich innerhalb des JCP stark mit der Java EE Plattform beschäftigt und hatte seit einigen Jahren schon mit Dingen wie EJB, CDI und anderen Plattform-Technologien zu tun. Ich arbeitete damals also an CDI und kam dabei an einen Punkt, wo ich den Eindruck hatte, dass diese inkrementellen Verbesserungen, die wir dem Programmiermodell und der User-Experience hinzufügten, irgendwie immer weniger Mehrwert brachten.

Die Probleme, für die ich mich zu interessierten begann – und die mich wirklich immer mehr frustrierten -, waren Dinge, die sich eher auf Sprach-Niveau abspielten. Diese Begrenzungen, an die ich stieß, ließen sich nicht mehr auf der Ebene der Librarys und Frameworks lösen.

Es begann also mit einer Reihe von Ideen, um ein besseres Programmiermodell zu schaffen, und das besonders für Leute, die Frameworks, Librarys und mehr generischen Code entwickeln wollten. Natürlich hat sich das Konzept seit diesen Tagen in verschiedenen Aspekten weiterentwickelt – aber ich glaube, der ursprüngliche Impetus macht immer noch einen Großteil von Ceylon aus.

JAXenter: Was waren die größten Probleme, die du mit Ceylon überwinden wolltest?

Gavin King: Eines der größten Hindernisse besteht in der Tatsache, dass, sobald du in der Java-Welt etwas wie ein User Interface oder eine Art strukturierter Daten-Konfiguration definieren oder bauen willst, du gezwungen bist, die Java-Sprache zu verlassen und eine andere Sprache, sagen wir XML, zu verwenden. Und es wird sogar schlimmer, wenn man einen für den User sichtbaren Code für den Web Browser schreiben möchte, da hier das ganze „Write Once, run Anywhere“ Paradigma sofort scheitert.  

Java war extrem erfolgreich und ist eine fantastische Sprache – doch die ursprüngliche Vision scheiterte quasi schon bei der Ankunft. Also musste man, um die Lücke zu einem Web-basierten Client zu schließen, die Java-Sprache verlassen und so etwas wie JavaScript verwenden. Java-Anwendungen sind demzufolge heute aus vielen verschiedenen Sprachen zusammengesetzt, die miteinander funktionieren. Nun ist das nicht notwendigerweise eine schlechte Sache. Aber das Problem ist, dass man so Dinge wie die statische Typisierung und den Tooling-Support verliert.

Java-Entwickler wie ich sind sehr stark darauf bedacht, ein gutes Tooling zur Verfügung zu haben – Werkzeuge, die dabei helfen, den Code zu unterhalten, zu refaktorisieren und anzupassen. Sobald man hier Java verlässt und mit XML oder JavaScript arbeiten muss, vermissen wir doch schmerzlich diesen Support auf Tooling-Niveau.

[ header = Seite 2: Ceylon – der Java Killer? ]

JAXenter: Viele Kommentatoren nannten Ceylon diese Woche einen „Java Killer“. Das ist ein Begriff von früher – aber kannst du dir vorstellen, warum Leute Ceylon heute noch so nennen?

Gavin King: Nun, zum einen steht Ceylon offensichtlich in einem gewissen Wettbewerb mit Java als Sprache – und sogar weitergehend mit Java als Plattform für Librarys. Aber es wäre ja fast auf absurde Art und Weise  arrogant zu sagen: „Wir sind als Wettbewerber gegen Java angetreten.“ Java ist ein großartiges Ökosystem bestehend aus vielen unterschiedlichen Technologien, die miteinander harmonieren.    

Ceylon sehe ich deshalb lieber als Teil dieses Java-Ökosystems. Sicher gehen wir ein wenig darüber hinaus, indem wir auch im JavaScript-Umfeld tätig sind – aber wir sehen uns selbst immer noch als Teil des JVM-Ökosystems so wie viele andere Sprachen auch.

Für uns ist die Interoperabilität mit anderen Sprachen also sehr wichtig – angefangen bei Java und JavaScript. Und wir hoffen, die Interoperabilität weiter auf JRuby und Groovy ausbauen zu können. Wir wollen Teil dieser Java-Welt sein und mit anderen Technologien kooperieren. Realistischerweise dürfte jede Ceylon-Anwendung der nahen Zukunft aus einer Mischung aus Java, Ceylon und JavaScript bestehen.

JAXenter: Du sagst, die Sprache ist eher komplementär als ein Rivale – warum hast du dich aber für den Namen Ceylon entschieden?

Gavin King: Ceylon startete als geheimes Projekt innerhalb von Red Hat. Es ist natürlich ein Wortspiel mit Java,  der indonesischen Insel, auf der in der Kolonialzeit viel Kaffee angebaut wurde. Ceylon ist hingegen die Insel im indischen Ozean, die für ihren Tee bekannt ist. Mit diesem einfachen Wortspiel begann alles.

Indes war Ceylon niemals gedacht als Bezeichnung für eine Programmiersprache – aber irgendwie blieb der Name dann hängen. Und als ich vorschlug, den Namen zu ändern, wehrten sich die Kollegen: „Nein, nein, nein! Wir mögen Ceylon! Bitte nicht ändern! Und so weiter.“

JAXenter: Abgesehen von dem Namensproblemen – was war die größte Herausforderung bei der Entwicklung von Ceylon?

Gavin King: Wie man sich vorstellen kann, liegen vier Jahre äußert harter Arbeit hinter uns, und es war eine riesige Ingenieurs-Aufgabe in Sachen Software-Entwicklung. Es gab da diverse Schwierigkeiten. Da ist beispielsweise die Definition eines Typensystems für eine statisch typisierte Sprache. Will man eine moderne, statisch-typisierte Sprache, muss eine Menge konzeptueller Vorarbeit geleistet werden – für Ceylon waren wirklich tiefgründige technische Überlegungen nötig, und das über mehrere Jahre hinweg.  

Was die tatsächliche Entwicklung und das Schreiben des Codes betrifft, war der bei weiten schwierigste Part der Teil des Compilers, der das Modell des Ceylon Codes in eine Abstraktion für Java verwandelt, die vom javac-Compiler zur Generierung des JVM-Codes genutzt werden konnte. Diese Transformation also, dieses Mapping zwischen der Ceylon-Sprache und dem Modell für die JVM, war definitiv die größte Herausforderung, und wir sind unendlich erleichtert, dass wir es schließlich geschafft haben. Das war eine Aufgabe, die uns zwei Jahre lang beschäftigt hat.

JAXenter: Jetzt ist also das grundlegende Tooling abgeschlossen – welche Pläne habt Ihr für die nächsten Releases?

Gavin King: Im Ceylon 1.1 Release wird es um Performance-Verbesserungen gehen. Wir wollten so schnell wie möglich ein funktionierendes Release der Sprache herausbringen, und so hatten wir keine Zeit, uns auf einige Performance-kritische Probleme zu konzentrieren. Das nächste Release planen wir in etwa drei oder vier Monaten, also Anfang nächsten Jahres. Es wird um Performance-Optimierungen in Bezug auf den generierten Code und auch hinsichtlich des Compilers gehen, insbesondere bei der Build-Geschwindigkeit innerhalb unserer IDE.

Für Entwickler ist es sehr wichtig, dass sie unkompliziert und schnell Code innerhalb einer IDE schreiben und bauen können. Und hier ist noch Raum für Verbesserungen.

Zweitens werden wir den Fokus nun verlegen weg von der Entwicklung der Sprache hin zur Entwicklung der Librarys und Frameworks, mit denen die Leute ihre Anwendungen programmieren. Offensichtlich haben wir hier schon einige grundlegende Dinge bereit gestellt, aber jetzt wird eine ganze Menge mehr Arbeit in diesen Bereich fließen.

Große Teile unseres SDK wurden bereits von Nicht-Red-Hat-Mitarbeitern aus der Community beigesteuert, die an uns herangetreten sind und sich sehr interessiert gezeigt haben, an einem Problem mitzuarbeiten, beispielsweise dem Build-System. In dieser Richtung ist noch mehr zu erwarten. Aber es wird auch weitere Investitionen von Seiten Red Hats geben, die auch Leute außerhalb des Ceylon-Teams betreffen werden.

[ header = Seite 3: Was macht Ceylon aus? ]

JAXenter: In einigen Punkten ist Ceylon ja Java nicht so unähnlich. Was ist aus deiner Sicht das Charakteristische an Ceylon im Vergleich zu anderen JVM-Sprachen?

Gavin King: Bei dieser Frage mache ich immer gerne auf drei Aspekte aufmerksam: Am wichtigsten ist sicherlich, dass die meisten JVM-Sprachen dynamisch typisiert sind – zumindest die meisten populären. Ceylon ist hingegen eine stark statisch typisierte Sprache mit einer sehr großen Typensicherheit – mehr noch als viele andere statisch typisierten Sprachen.

Zweitens verfügt Ceylon über eine eingebaute Modularität, was etwas ist, das Java schon seit einer langen Zeit umzusetzen versucht. Die letzten Neuigkeiten von der Devoxx hierzu scheinen darauf hinzudeuten, dass der Plan, echte Modularität für Java-Entwickler anzubieten, aufgegeben wurde. Wenn wir das richtig verstehen, dann wird sich die angestrebte Modularität nur auf das Java SDK selbst beziehen. Ursprünglich hatten wir ja erwartet, dass Java 8 die Modularität auf Plattform-Niveau bringt – und das ist nicht passiert. Und jetzt sieht es so aus, dass es niemals passieren wird. Ceylon bietet an dieser Stelle als einzige Sprache Modularität auf Sprachniveau, inklusive IDE- und Runtime-Support.

In Ceylon von Modulen Gebrauch zu machen, ist so viel einfacher als bei den anderen Optionen, die derzeit zur Verfügung stehen. Um etwa eine modularisierte Java-Anwendung mit Maven, OSGi und Eclipse zum Laufen zu bringen, muss man mit einer Woche verlorener Produktivität rechnen. Mit Ceylon bekommt man hingegen alles schon frei Haus geliefert.

Und als dritten Punkt haben wir ein wirklich spezielles Typensystem, das einfach, sehr ausdrucksstark und mächtig ist. Wir glauben, die Leute werden es wirklich lieben. 

[ header = Seite 4: Wie geht es weiter mit Ceylon? ]

JAXenter: Abschließend noch die Frage: Glaubst du, dass RedHat selbst mehr in Ceylon entwickeln wird.

Gavin King: Der erste Schritt für uns wird sein, einige unserer Komponenten in das JBoss-Ökosystem einzubringen; Teile des Applikationsservers herzunehmen, neu zu paketieren und sie modular zu machen – also Module für die Ceylon Plattform zu entwickeln.

Gleichzeitig werden wir für Ceylon Deployments für Openshift ermöglichen. Wenn wir die Möglichkeiten in JBoss auch für Ceylon umgesetzt haben, wird es viel spannender werden – was können wir mit Ceylon tun, das wir derzeit nicht im JBoss können?

Die Leute fragen mich oft: Verwendet Red Hat Ceylon, um interne Projekte zu entwickeln? Und ich verstehe dann immer nicht so recht, was die meinen. Wir haben keine internen Projekte! Wir sind eine Produkt-Company!

JAXenter: Gavin, vielen Dank für dieses Gespräch! 

Das Interview wurde in englischer Sprache von Lucy Carey geführt und von der Redaktion ins Deutsche übersetzt.

Kommentare

Schreibe einen Kommentar

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