16. Dezember 2015 | 3 min lesezeit

JSR 370 – JAX-RS 2.1

RESTful APIs, RESTful URLs, RESTful Applications, … REST ist ‚der‘ Architektur Ansatz des World Wide Web. Und als solcher hat REST in den letzten Jahren in allen Bereichen vernetzter Anwendungen eine führende Rolle übernommen. Die gewachsene Bedeutung zeigt sich auch im Java Community Process. Mit Java EE 8 erscheint die nächste Version der Java API for RESTful Web Services – JAX-RS 2.1 

REST ist ‚der‘ Architektur Ansatz des World Wide Web. Und als solcher hat REST in den letzten Jahren in allen Bereichen vernetzter Anwendungen eine führende Rolle übernommen. Bei CRUD Anwendungen, Microservices oder einer service-orientierten Architektur (SOA) wird REST zur Datenübertragung (u.a. Formulardaten), zur Kommunikation mit anderen Anwendungen oder zum Übermitteln wie zur Abfrage von Statusinformationen (Service Discovery, Monitoring).

JAX-RS ist nicht erst seit der Version 2.0 ein großer Erfolg und wichtiger Bestandteil der Java EE Plattform. Und obwohl sich Vielfach noch die Version 1.x im Einsatz befindet, ist das Ende der Entwicklung ist bei weitem noch nicht erreicht. Für JAX-RS 2.1 sind eine Vielzahl neuer Features und Verbesserungen geplant. So soll die Version 2.1 als eine der ersten APIs von Java 8 Sprachfeatures wie Lambda-Expressions, Streams oder auch CompletableFuture profitieren.

Ein zentrales Thema der Version 2.1 wird eine engere Integration mit CDI und JSON-B sein. Schon seit der ersten Version bietet JAX-RS eine nahtlose Unterstützung für JAXB. Der selbe Weg wird nun mit JSON-B verfolgt. Modellklassen mit JSON-B Annotationen sollen zukünftig ohne weiteres zutun in JSON und vice versa konvertiert werden.

CDI soll wie bereits bei JSF den internen Injektion-Mechanismus ersetzen. JAX-RS ist zwar ein Enterprise Standard, aber über seine Implementierungen Jersey und RESTEasy auch außerhalb eines Applikationsservers nutzbar. Damit dies auch weiterhin so bleibt, hängt die CDI Integration maßgeblich von CDI 2.0 (JSR 365) und seiner Unterstützung für Java SE ab.

Als ein neues Feature ist u.a. die Unterstützung für Server-Sent Events (SSE) vorgesehen. SSE beschreibt eine Browserfunktionalität, die es ermöglicht über eine HTTP Verbindung Push Benachrichtigungen in Form von DOM Events zu erhalten, quasi eine Art Mittelweg zwischen HTTP und WebSockets. Die zugehörige EventSource API wurde vom W3C als Teil von HTML5 standardisiert und nach Meinung von über 75% der Teilnehmer der Community Umfrage soll eine standardisierte API für SSE in Java EE 8 integriert werden.

Als weitere Punkte finden sich Non-Blocking Interceptoren und Filter, eine Hypermedia API die Entwicklern die Umsetzung von REST Anwendungen nach dem HATEOAS Prinzip erleichtern soll, sowie eine Security API, die die deklarativen Angabe von Sicherheitsrichtlinien auch außerhalb der Java EE Plattform ermöglicht, auf der Agenda. Das ebenfalls über eine Reactive API diskutiert wird, ist nach den Entwicklungen in diesem Bereich und der wachsenden Popularität von reaktiven Frameworks wie Akka und RxJava oder JavaFX Bindings keine wirkliche Überraschung.

JAX-RS spielt auch eine zentrale Rolle bei der Entwicklung von MVC 1.0 (JSR 371). Da jeder Controller gleichzeitig auch eine JAX-RS Ressource ist, erfolgen zentrale Anpassungen für MVC in JAX-RS. Für die nötige Abstimmung zwischen den beiden Exert-Groups sorgt Santiago Pericas-Geertsen (Oracle), der sich als Spec Lead sowohl für JAX-RS 2.1 als auch für MVC 1.0 verantwortlich zeigt.

Wie man sehen kann profitiert JAX-RS 2.1 direkt von den Neuerungen in Java 8 und anderen Standards wie JSON-B und CDI 2.0. Gleichzeitig bildet es die Basis für MVC 1.0. Man darf also gespannt sein wie die Entwicklung in den nächsten Monaten weitergeht. Weitere Informationen zum JSR 370 finden sich unter https://jcp.org/en/jsr/detail?id=370.


Keine Kommentare

Kontakt

OPEN KNOWLEDGE GmbH

Standort Oldenburg:
Poststraße 1, 26122 Oldenburg

Standort Essen:
II. Hagen 7, 45127 Essen