JAX-RS 2.0: Das neue Gesicht der RESTful Web Services

JAXenter: Welche Neuerungen sind sonst noch geplant?

Markus Karg: Viele Anwendungen, die derzeit Unterstützung für das REST-Paradigma für sich in Anspruch nehmen, sind genau genommen gar nicht RESTful (es wurde sogar schon einmal darüber diskutiert, für diese Anwendungen ein eigenes Schlagwort zu definieren), da sie einen wichtigen Aspekt nicht erfüllen: HATEOAS (Hypermedia As The Engine Of Application State). JAX-RS 2.0 wird Unterstützung für Hypermedia bringen und es Anwendungen beispielsweise erlauben, Beziehungen (URIs) in Entitäten zu injizieren oder diese als Link-Header an den Client zu senden. Hierdurch lernt der Client aus dem empfangenen Response, was eine Beziehung bedeutet, und kann dieser folgen, um einen bestimmten Prozess anzustoßen. Ganz ähnlich, wie ein Browser dem Anwender sagen kann: „Klicke auf diesen Link, um die Bestellung abzusetzen“, kann ein RESTful Client damit die gleiche Information erhalten, aber eben in maschinentauglicher Form. Somit wird es erst möglich, komplexe Prozesse abzubilden, ohne diese statisch im Client abzulegen.

Durch HATEOAS verlagert sich die Kontrolle darüber, welcher Schritt als nächster zu tun ist bzw. in welchem Status ein Prozess derzeit ist, von den beteiligten Clients / Servern in das übersendete Medium an sich. Client und Server brauchen sich nichts mehr zu merken, sie erfahren alles Notwendige aus der Analyse des Mediums und manipulieren es entsprechend ihrer Intension. Ich halte dies neben der Client API für die wichtigste Neuerung.

Oracle hat jedoch noch weitere Punkte auf die Agenda gesetzt, wie Unterstützung für MVC, d.h. die Nutzung von JAX-RS Ressourcen als Controller, Parametervalidierung, den Ersatz eigener Annotations durch CDI (und dadurch eine engere Einbindung in Java EE) und viele andere Punkte mehr. Die komplette, von Oracle vorgeschlagene Liste kann übrigens öffentlich auf JCP.org eingesehen werden, da das Projekt eine transparente Informationspolitik verfolgt.

Und nicht zu vergessen sind natürlich noch eine ganze Liste einzelner, kleiner Diskussionspunkten, die uns die Anwender im Laufe der Zeit in den Tracker diktiert haben und die selbstverständlich ebenfalls von der Expertengruppe bewertet werden müssen. Gerade das Lösen jener Punkte stellt für viele Anwender einen höheren Wert da, als große Neuerungen wie HATEOAS oder COMET. Daher hat Oracle versprochen, zumindest all jene Punkte umzusetzen, die unstrittig als Fehler der bisherigen Spezifikation JAX-RS 1.1 angesehen werden.

JAXenter: Die Referenzimplementierung für JAX-RS ist das Jersey-Projekt. Wie ist die Beziehung zwischen der Expertengruppe und den Jersey-Entwicklern?

Markus Karg: Grundsätzlich ist der JCP als demokratisch anzusehen und die Expertengruppe ist unabhängig von den Jersey-Entwicklern. Offiziell legt die Expertengruppe die Spezifikation fest, und die Jersey-Entwickler setzen diese in Java-Code um. Klar ist jedoch, dass die Jersey-Entwickler Angestellte Oracles sind, Oracle die Arbeitsgruppe leitet, die Agenda festlegt und zu den meisten genannten Punkten auch bereits eine Lösung parat hat, da Jersey viele dieser Punkte bereits beherrscht.

In der Vergangenheit haben die Jersey-Entwickler einen offenen und konstruktiven Dialog mit Anwendern und Konkurrenten gepflegt. Teilweise sind Ideen und Code aus anderen Projekten in Jersey eingeflossen, auch direkt von den Experten. Ich bin gespannt, ob sich dies auch nach dem Weggang der bisherigen Spec Leads Marc Hadley und Paul Sandoz von Oracle (beides ehemalige Sun-Angestellte) fortsetzt. Im Sinne des bestmöglichen und am weitesten unterstützten Standards würde ich es mir wünschen, denn mit einseitigem Durchpeitschen des eigenen Produktes wäre letztendlich niemandem geholfen, auch Oracle nicht, da Konkurrenzimplementierungen wie beispielsweise RestEasy und Wink eine hohe Beliebtheit haben.

Leider ist aber auch in diesem JSR deutlich geworden, dass einige ehemalige Experten aus teilweise politischen Gründen fernbleiben, was die Situation für die verbleibenden nicht zwingend verbessert. Ich bin selbst gespannt, wie sich die nächsten Monate entwickeln.

JAXenter: Welche nächsten Schritte stehen nun an?

Markus Karg: Der bisherige Co Spec Lead Paul Sandoz wird Oracle im Februar verlassen. Nach den Statuten des JCP wird Oracle einen Nachfolger bestellen und, da es sich gleichfalls um die zentrale Figur im Jersey-Projekt handelt, einen neuen Entwickler in das Projekt einsetzen. Dies geht natürlich nicht über Nacht.

Sobald dies geschehen ist, wird Oracle die weitere Arbeit der Expertengruppe koordinieren, d.h. eine Agenda vorlegen, wann welches Thema besprochen wird und in welcher Form. Bis dahin kann die Expertengruppe zwar „unter sich“ diskutieren, jedoch keine echten Beschlüsse fassen. Wir warten also derzeit kurz gesagt auf Oracle.

JAXenter: Und wann darf mit der finalen Version von JAX-RS 2.0 bzw. der Referenzimplementierung gerechnet werden?

Markus Karg: Wenn es eine Konstante im Software-Universum gibt, dann die Tatsache, dass ein Release-Termin niemals eingehalten wird. Oracle hat uns im JSR 339 einen engen Zeitplan und viele Diskussionsthemen vorgelegt. Da wir nicht vorhaben, den bestehenden Jersey Code einfach nur durchzuwinken (was ich Oracle auch nicht unterstellen möchte), wage ich es, den von Oracle vorgeschlagenen Release-Termin 2. Quartal 2012 zumindest als „sehr ambitioniert“ zu bezeichnen.

Es haben schon kleinere Projekte größere Zeitrahmen gesprengt. Ich würde mich wirklich freuen, wenn der Termin wirklich klappt, aber da hier mehrere bestehende Produkte auf einen gemeinsamen Nenner gebracht werden müssen und die Mitglieder der Expertengruppe ja auch noch andere Projekte abzuarbeiten haben, wird es nicht ohne Reibungsverluste abgehen, auch in terminlicher und thematischer Hinsicht.

Die absolute Deadline bildet hierbei jedoch aber faktisch der Release-Termin für Java EE 7, denn diese Plattform soll JAX-RS 2.0 enthalten. Und hierfür gibt es noch nicht einmal einen JSR bislang.

JAXenter: Vielen Dank für dieses Gespräch!

Markus Karg (markus[at]headcrashing.eu) ist Staatlich geprüfter Informatiker und befasst sich seit 1997 mit verteilten Systemen. Die JAX-RS Spezifikation beeinflusst er seit deren Kindertagen. 2008 startete er ein Jersey-Schwesterprojekt zur Unterstützung der WebDAV-Protokollfamilie. Hauptberuflich verantwortet er den Bereich Implementierung & Design bei der QUALITY QUALITY GmbH & Co KG.
Kommentare

Schreibe einen Kommentar

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