JCP bestätigt JAX-RS 2.0 und Bean Validation 1.1

Hartmut Schlosser

Zwei wichtige Java Specification Requests (JSR) wurden vom JCP Exekutiv-Komitee bestätigt. Ohne Gegenstimmen angenommen wurden die Spezifikationen für JSR 349 – Bean Validation 1.1 und JSR 339 – JAX-RS 2.0: The Java API for RESTful Web Services.

Beide Specs sind Ecksteine für das kommende Java Enterprise Release 7, das für 2013 geplant ist. Zur Abstimmung standen die jeweiligen Entwurfspapiere, die zuvor einer öffentlichen Review-Phase ausgesetzt waren.

In der Bean Validation 1.1 Spezifikation geht es um die Implementierung einer Runtime-Engine zur Validierung von Objekten sowie um einen einheitlichen Weg, um Constraints für Objektmodelle zu deklarieren. Projektleiter Emmanuel Bernard hat just heute auch die Verfügbarkeit der Beta 2 bekannt gegeben.

Allgemein sind in der Version 1.1 u.a. folgende Features geplant:

  • Integration mit weiteren APIs: bessere Integration in weitere JSRs wie JAX-RS, JAXB, EJB sowie JPA und CDI
  • Method-Level Validation: Validierung von Methodenparametern und -rückgabewerten
  • Dependency Injection: CDI-Support für Bean Validation Components (MessageInterpolator, ConstraintValidatorFactory und ConstraintValidator)
  • Constraint Composition: Erweiterung der Komposition von bestehenden Constraints durch OR-Verknüpfungen. Aktuell sind Kompositionen automatisch AND-Verknüpfungen.
  • Group Propagation: Überführung einer Constraint-Gruppe in eine andere Gruppe bei kaskadierenden Validierungen
  • Constraints für Collection-Elemente: Aktuell werden lediglich Constraints auf einer Collection selbst oder kaskadierende Constraints auf den enthaltenen Elementen unterstützt. Zukünftig soll auch die direkte Angabe von Constraints auf Collection-Element-Ebene möglich sein, wodurch zum Beispiel die Validierung von nativen Typen unterstützt werden wird. Dies ist eigentlich nur ein Workaround für die nach wie vor fehlende Unterstützung von Annotationen auf Java-Typen (JSR 308 – Early Draft).

Die JSR-339-JAX-RS-Spezifikation ermöglicht die Realisierung von RESTful Web Services mittels annotierter POJOs. Hatte sich die unter JSR 311 erarbeitete Vorgänger-Spezifikation JAX-RS 1.1 ausschließlich auf den Serverbereich konzentriert, kommt JAX-RS-2.0 nun mit einem neuen Client API daher. Serverseitiges, asynchrones HTTP kann nun zur Implementierung von long-polling Interfaces oder zum serverseitigen Push genutzt werden. Der Support hierfür ist Annotations-getrieben und funktioniert analog zu der Art, wie die Servlet-3.0-Spezifikation über das AsyncContext Interface mit asynchronem HTTP umgeht.

Zu den weiteren Neuerungen gehören Filter und Interceptoren hinzu. So gibt es ein Interceptor API, über das man Authentification, Caching oder Encoding hinzufügen kann, ohne den Anwendungscode zu beeinträchtigen.

Die Spezifikationspapiere können in ihrem aktuellen Stand auf den Public-Review-Seiten eingesehen werden. Bis zur Finalisierung der Specs zum Java EE 7 Release hin sind nur noch Detailveränderungen zu erwarten.

JSR-000339 The JavaTM API for RESTful Web Services.

JSR-000349 Bean Validation 1.1 .

Geschrieben von
Hartmut Schlosser
Kommentare

Schreibe einen Kommentar

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