Interview mit Anil Gaur von Oracle

Java EE 7 im Fokus

© Anil Gaur

Es ist soweit: Heute wurde der Java-EE-7-Standard offiziell freigegeben. Zu diesem feierlichen Anlass sprachen wir mit Anil Gaur, Vice President Software Development bei Oracle, über die Hintergründe und Highlights  der neuen Java-Enterprise-Plattform. Im ersten Teil des Interviews geht es um die große Community-Leistung, die Leitthemen in Java EE 7 und das neue WebSocket API.

JAXenter: Heute wird der Java EE 7 Standard offiziell freigegeben. Wie viele Entwickler standen eigentlich hinter dem Release?

Anil Gaur: Das Java EE 7 Release ist eine Leistung der Community. Die vier neuen und die 10 aktualisierten JSRs wurden insgesamt von 16 Spec Leads, 32 Unternehmen und 187 Java-Experten entwickelt. Darüber hinaus hat eine große Anzahl von IT-Ingenieuren Beiträge zur Referenz-Implementierung und TCK-Entwicklung geleistet.
      
JAXenter: Was waren die wichtigsten Design-Ziele von Java EE 7? Beispielsweise scheint ein großer Fokus auf der Webentwicklung gelegen zu haben.

Anil Gaur: Tatsächlich gab es drei Hauptthemen, die in Java EE 7 zum Tragen kommen:

Erstens: Das Bereitstellen von dynamischen, skalierbaren HTML5-Anwendungen.

Um die schnelle Adoption von HTML5 zu vereinfachen und im Browser Anwendungen mit einer besseren User Experience zu ermöglichen, wurde der Support für WebSockets eingebaut, eine Technologie für die latenzfreie, bi-direktionale Kommunikation. Außerdem haben wir ein asynchrones API eingeführt, um die Skalierbarkeit zu verbessern, indem eine RESTful Business-Logik im Hintergrund ausgeführt wird und man nicht in einem Thread gefangen bleibt. In ähnlicher Weise kann ein JAX-RS Client asynchron sein, wodurch er während des Wartens auf eine Server-Antwort an anderen Aufgaben arbeiten kann. RESTful Services tauschen Information oft über JSON aus. Java EE 7 führt das JSON Processing API ein, um JSON-formatierte Daten mittels Streaming oder einem Objekt-Model-API zu parsen. Auch JSF verfügt jetzt über sogenanntes „HTML5-friendly“ Markup, was bedeutet, das Markup wie Typen oder Datenattribute nun direkt in einem Web Browser gerendert werden können, ohne vorher die Attribute zu kennen.  

Zweitens: Die Steigerung der Entwickler-Produktivität

Java EE 7 bietet eine Reihe von Produktivitätsverbesserungen für Entwickler. Überflüssiger Boilerplate Code, der bisher vor dem eigentlichen Schreiben der Kern-Business-Logik stand, kann reduziert werden. Beispielsweise nutzt JMS 2.0 Annotationen, Dependency Injection, AutoCloseable, Default Ressourcen-Definitionen und ein vereinfachtes API, um den Programmier-Aufwand für etwas Einfaches wie das Einstellen einer Message in eine Queue auf einige Zeilen Quellcode zu beschränken. Ein oft gefordertes Feature, das wir nun mit aufgenommen haben, ist ein Standard RESTful Client API, über das Entwickler effizient RESTful-Aufrufe machen können, ohne ein proprietäres Client API nutzen zu müssen. Ressourcen-Definitionen wie JMS Connection Factories und Data Sources haben eine Default Definition erhalten, sodass das Deployment einer Anwendung in eine Java-EE-Laufzeitumgebung in standardisierter Art und Weise geregelt ist und viel weniger Konfigurierungsaufwand nötig ist. Viel Arbeit floss auch in die Verbesserung der Integration von JSRs, um Java EE 7 zu einer noch besser abgestimmten Plattform zu machen.   Beispielsweise kann Bean Validation nun in Methoden-Deklarationen genutzt werden, um Parameter zu validieren und Werte zurückzugeben. Container-Transaktionen sind nun nicht mehr nur in EJBs und transaktionale Interceptors verfügbar. Außerdem gibt es die neue @Transactional Annotation, die es ermöglicht, Transaktionen auf beliebige Managed-Bean-Methoden anzuwenden und so transaktional zu machen. CDI ist per Default aktiviert, sodass eine beans.xml nicht mehr benötigt wird, um einfach CDI Beans zu nutzen.

Wir haben auch einige neue CDI Scopes wie @TransactionScoped and @FlowScoped hinzugefügt. Selbst existierende JSF Scopes, wie ViewScoped, wurden als CDI Scope umgeschrieben.

Und drittens: Die Umsetzung relevanter Enterprise-Anforderungen

Zwei neue JSRs zielen darauf ab, einige ziemlich wichtige Enterprise-Anforderungen zu erfüllen. Java EE ist eine Managed-Umgebung, d.h. Anwendungen können keine eigenen Threads erzeugen. Das Concurrency Utility API erlaubt es Entwicklern nun, Thread Pools einzurichten und so Aufgaben parallel auszuführen. Außerdem gibt es das neue Batch API, welches maßgeblich von IBM entwickelt wurde und sich am besten eignet für nicht-interaktive, Bulk-orientierte und langlaufende, rechenintensive Aufgaben. Wir erwarten, dass dieses API recht populär bei Enterprise-Kunden wird.

JAXenter: Es gibt ja verschiedene neue Bestandteile von Java EE. Eine davon ist der schon erwähnte JSR 352 – Batch Applications for the Java Platform 1.0. Wofür kommt kann diese Komponente typischerweise zum Einsatz kommen?

Anil Gaur: Das Modul „Batch Application for Java Platform 1.0“ erlaubt es den Usern, eine Reihe von Aufgaben auszuführen, die für nicht-interaktive, Bulk-orientierte und langlaufende Tasks geeignet sind. Typische Beispiele sind das Erstellen von Bank-Auszügen zum Ende eines Monats oder Extract-transform-load in einer Datenbank.

Die Jobs werden in einer Job Spezifikationssprache definiert, die wir „Job XML“ nennen. Jeder Job kann mehrere Schritte enthalten; jeder Schritt wiederum ist ein sogenannter „Chunk“ oder „Batchlet“. Chunks beziehen sich auf eine Item-orientierte Bearbeitung, bei der ein Chunk von Items gelesen, ausgeführt und ausgeschrieben werden, alles innerhalb einer Transaktion. Es gibt  zudem Checkpoint-Mechanismen falls während der Aktion Fehler auftreten. Batchlets hingegen sind auf ein Task-orientieres Bearbeiten ausgerichtet und erlauben es, eigene Batch-Muster zu verwenden. 

Diese Jobs können dann von jeder Java-EE-Komponente aufgerufen werden, was eine nahtlose Integration in die eigene Anwendung ermöglicht.
 
JAXenter: Eine Menge Entwickler sind begeistert von WebSockets. Wie wichtig ist diese neue Komponente für Java EE 7?

Anil Gaur: Mit WebSocket lassen sich Full-Duplex Kommunikationskanäle über eine einzelne TCP-Verbindung erstellen. Entwickler können so via Standard Java EE APIs Anwendungen ohne große Latenzzeiten bauen, beispielsweise solche, die einen hohen Interaktionsgrad erfordern. Es handelt sich um eine der signifikantesten neuen Technologien der Java-EE-7-Plattform, und wir erwarten, dass Entwickler innovative Anwendungen bauen und das API auf vielfältige Art und Weise nutzen werden, die wir noch gar nicht voraussehen können.

Lesen Sie morgen den zweiten Teil des Interviews mit Anil Gaur!

Kommentare

Schreibe einen Kommentar

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