Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

Java EE 7 Grundkurs

Neuerungen in Java EE 7

Testen Sie unsere 2017 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Die aktuelle Version der Java Enterprise Edition beinhaltet zahlreiche neue Technologien sowie etliche Veränderungen und Erweiterungen der bestehenden Technologien.

Transkript

Wenn Sie in der Vergangenheit bereits einmal mit der Java EE Version 5 oder 6 gearbeitet haben, dann werden Sie sich natürlich fragen, was sich bei der Java EE Version 7 im Vergleich mit den Vorgängerversionen unter anderem geändert hat und was neu ist. Dem werden wir in diesem Video ein wenig auf die Schliche kommen. Es gibt einige neue Technologien im Java EE Umfeld. Beispielsweise die WebSocket Technologie. Mit deren Hilfe ist es neuerdings möglich, dass die Java EE Applikation mit einem Browser von sich aus kommunizieren kann. In der Vergangenheit war das so nicht möglich, sondern da musste der Browser immer seinerseits zur Java EE Applikation kommunizieren. WebSocket wird allerdings noch nicht von jedem Browser unterstützt. Die Concurrency Utilities, auf die wir gleich noch einmal genauer eingehen werden, erlauben es uns Parallelitäten in Java EE Applikationen zu implementieren. Dies war in der Vergangenheit nicht möglich. Auch auf JSON-P gehen wir gleich noch einmal genauer ein. JSON-P ist ein Framework mit dessen Hilfe wir JSON-Daten verarbeiten und erzeugen können. Das Java Batch-Framework erlaubt es uns einfache Schritte zu definieren in einer Applikation, die immer wieder abgelaufen werden können. Das ist eine Implementierung, die sich stark an den Funktionalitäten, wie sie bspw. das SpringBatch Framework bereitstellt, orientiert. Nicht neu, aber doch sehr wichtig ist die CDI-Unterstützung, die deutlich weitreichender als in der Vergangenheit ist. Sie ist deswegen hier aufgeführt, weil CDI außerhalb des Webkontextes bisher eigentlich keinerlei Bedeutung hatte. Inzwischen ist CDI in jedem Java EE Kontext einsetzbar. Wenn man sich die Frage stellt: "Was ist anders?" Dann wird man aufgrund der Werbetrommel die Oracle gerührt hat sicherlich zuerst darauf kommen können, dass die JavaServer Faces nunmehr HTML 5 unterstützen. Es gibt einen sehr weitreichenden HTML-5-Support, der auf verschiedenen Ebenen implementiert ist. Ebenfalls neu ist eine Technologie namens FacesFlow. Mit der können wir, kurz gesagt, bspw. sogar eine Art Assistent Funktionalität für den Benutzer bereitstellen, wo der Benutzer sich durch die verschiedenen Schritte vorwärts und rückwärts bewegen kann. Ebenfalls neu ist mehr Unterstützung vor Cross-Site-Scripting Angriffen und das Ressourcen-Handling wurde verändert. Eine neue Technologie, im Kontext von JSF, sind die sogenannten Ressource Library Contracts. Diese erlauben es, das Look and Feel einer kompletten Applikation mit sehr wenig Aufwand komplett zu ändern. Auch neu, vielleicht nicht weltbewegend, aber doch interessant, es gibt mittlerweile die Möglichkeit, dass wir einen integrierten Datei-Upload nutzen können. Hier bedarf es also nicht mehr der Verwendung von zusätzlichen Komponenten. CDI, oder in der Langform Context and Dependency Injection 1.1, ist deutlich umfangreicher als bisher nutzbar. Es gibt dabei verschiedene kleine Detail-Verbesserungen, aber das Motto lautete eher Evolution statt Revolution. Viel wichtiger als neu Funktionalitäten ist hier, dass Context and Dependency Injection nun mehr in nahezu in jedem Java EE Kontext nutzbar ist und eine Kerntechnologie geworden ist. JAX-RS ist das Framework, um auf RESTful services zuzugreifen und RESTful services bereitzustellen. Dies ist deutlich erweitert worden. Denn der Zugriff, also die Client-API, den gibt es erst neu mit JAX-RS 2.0. Das bedeutet, dass unsere Java EE Applikationen in der Lage sind andere REST Services zu nutzen und nicht nur eigene bereitzustellen. Ganz wesentlich sind die Concurrency Utilities for Java EE. Es ist nicht so, dass diese Concurrency Utilities jetzt eine komplette Neuentwicklung von Parallelität darstellen werden, sondern sie sorgen dafür, dass wir überhaupt erstmal die Möglichkeit haben parallel arbeiten zu können. Dies war in der Vergangenheit nämlich nicht der Fall. Auch wenn Parallelität, also concurrency, bereits seit Java SE 5 Sprachbestandteil ist. Auf dem Server war das bisher bestenfalls verpönt. Eigentlich war es äußerst gefährlich, denn das Erzeugen von Threads, speziell von User-Threads, kann die komplette Applikation blockieren. Mit Hilfe von Concurrency Utilities haben wir nunmehr die Möglichkeit, dass wir mit Parallelität und mit asynchronen Methodenaufrufen arbeiten können. Ich wage die Voraussage, dass dies auch in späteren Versionen noch deutlich erweitert werden wird. Das Bean Validation Framework liegt in einer neuen Version vor: Version 1.1 Hier gibt es neu die Möglichkeit, dass wir auch Überprüfungen auf Methodenebene vornehmen. Ebenfalls unterstützt Bean Validation, die Dependency Injection und integriert sich sehr weitreichend mit CDI. Dies führt dazu, dass Bean Validation nun mehr auch außerhalb des JSF Umfelds sehr intensiv und weitreichend genutzt werden kann. Die Expression Language in der aktuellen Version 3.0 ist nunmehr außerhalb des Webkontextes nutzbar. Dies gibt uns als Applikation neue Möglichkeiten, eine Art gescriptete Funktionalität bereitstellen zu können. Ebenfalls unterstützt die Expression Language neue Operatoren und wir können auf Ebene von statischen Feldern und Methoden arbeiten. Sie ist erweiterbar um eigene Typkonverter und sie unterstützt Lamda-Ausdrücke. Letztlich ist die Expression-Language 3.0 sehr umfangreich überarbeitet worden. Wir können sie auch alleinstehend verwenden, dann sieht das aus, wie in diesem Beispiel, wo wir eine Instanz eines EL Processors erzeugen und eine Anweisung auswerten lassen. Die variable Message beinhaltet dann hinterher den Text "Welcome" unter dem Namen des aktuellen Users. Ebenfalls unterstützt die Expression Language, Lambda-Ausdrücke. Lambda-Ausdrücke sind solche Ausdrücke mit Bindestrich und dem Größerzeichen und letztlich repräsentiert ein Lamda-Ausdruck eine Art anonyme Methode. So ein Lamda-Ausdruck kann dann auch direkt ausgewertet werden. Dieser letzte Ausdruck, der definiert wird als x und y für x plus y würde, wenn man den ausführt mit den Werten 3 und 4, den Wert 7 zurückgeben. Es ist eine sehr elegante Möglichkeit, kurzfristig eigene Funktionalitäten an geeigneten Stellen bereitzustellen. Die Lambda-Unterstützung beschränkt sich allerdings nicht nur auf Expression-Language 3.0, sondern ist seit dem JDK 8 in jeder Java-Sprachen Edition verfügbar. Die Java API for JSON Processing (JSON-P) ist neu dabei und sie erlaubt es uns, JSON-Daten zu generieren, zu verarbeiten und auszuparsen. Es gibt dazu die sogenannte JSON-CLASS Diese JSON-CLASS gibt uns einige Methoden, mit denen wir bspw. einen Reader erzeugen können. Mit Hilfe von JSONObject, JSONValue und dem KeySet, sind wir in der Lage JSON-Daten zu parsen. Und mit Hilfe der JSON.createObjectBuilder Methode können wir JSON-Daten erzeugen. Ein Beispiel für ein kleines JSON, sehen Sie auf dieser Folie. JSON als Datenaustausch-Format kommt übrigens aus der Java-Script Welt. Es definiert letztlich, dass wir benannte Parameter auf der linken Seite Firstname, Lastname, Age mit Werten haben. JSON selber ist nicht sonderlich kompliziert, man könnte theoretisch auch von Hand ausparsen, allerdings ist schon um einiges angenehmer, dafür eine passende API zur Verfügung zu haben und die haben wir nunmehr mit der JSON-P API. Hier wird uns ein Reader erzeugt und mit Hilfe dieses Readers können wir die Daten in Form einer JSON Structure auslesen. Und diese JSON-Structure Klasse gibt uns Möglichkeiten, auf die einzelnen enthaltenen Felder zuzugreifen. Ebenfalls einfach möglich ist es, Dateien oder JSON Repräsentationen einfach zu erzeugen. Und zwar mit Hilfe des ObjectBuilders. Dieser gibt uns eine fluente API, so dass wir letztlich die verschiedenen Felder mit ihren entsprechenden Werten sehr einfach notieren können. Das bereits gezeigte JSON-Fragment würde genau über diesem Code erzeugt werden. Die Servlet Specification 3.1 ist ebenfalls erweitert worden. Sie unterstützt nun sogenanntes Non-Blocking I/O. Das bedeutet wir können asynchron arbeiten. Ebenfalls kann das HTTP-Protokoll ausgetauscht werden. Im Moment wird ja an neuen Version des HTTP-Protokolls gearbeitet. Das Ganze ist nunmehr portable und austauschbar, so dass, unsere Java EE Applikation Server schnell auf den neusten Stand gebracht werden können. Es gibt Sicherheitserweiterungen und es gibt verschiedene Erweiterungen in den enthaltenen Methoden. So was wie ServletResponse.reset, ServletResponse.setCharacterEncoding und wir haben die Möglichkeit bei Weiterleitungen mit einer relativen URL zu arbeiten. Das war in der Vergangenheit auch nicht möglich. Der Java Message Service erfuhr seine erste grundlegende Überarbeitung seit 2002 und diese grundlegende Überarbeitung beschert uns einige neue Klassen, die wir verwenden können. Beispielsweise den JMSContext, den JMSProducer und einige andere Klassen. Diese Klassen sind von ihrer Funktionalität her gar nicht so weit weg von den originalen Klassen, aber sie bieten uns wesentlich mehr Komfort und erlauben es uns, diesselben Aufgaben in kürzerer Zeit zu erledigen. So haben wir beim JMSProducer eine fluente API. JMSConsumer ersetzt beispielsweise den alten MessageConsumer. Wichtig ist, dass beide Varianten parallel verwendbar sind. Das bedeutet Sie können Ihre JMS Nachrichten, sowohl, so wie in dieser Folie gezeigt, verfassen und versenden oder in wesentlich bequemerer Form, so wie in dieser Folie gezeigt. Das ist JMS 2.0. Die Funktionalität beider Folien ist identisch. JMS 2 legt also einen sehr starken Focus auf Vereinfachung und darauf, dass wir weniger Code für die gleiche Funktionalität verwenden können. Ebenfalls wird die Konfiguration deutlich einfacher, denn sie kann annotationsbasiert erfolgen. Ebenfalls neu bei JMS 2.0 ist, dass mehrere Consumer für einen Publisher geben kann. Und es können so Details, wie die Auslieferungsverzögerung spezifiziert werden. Nachrichten lassen sich nun auch asynchron versenden. Und es gibt zusätzliche Felder, die wir nutzen können, beispielsweise den DeliveryCount. Ebenfalls, und bereits gezeigt, ist, dass die Konfiguration auf Ebene der MessageDrivenBeans möglich ist. Sie sehen, es gibt in der Java EE in der aktuellen Version durchaus eine Menge Änderungen. Vielleicht nicht so viele neue Technologien, aber sehr viele sinnvolle Erweiterungen für existierende Technologien. Grund genug sicherlich, sich damit intensiver auseinanderzusetzen.

Java EE 7 Grundkurs

Lernen Sie die Grundlagen der Programmierung mit Java EE 7 verstehen und anwenden.

6 Std. 4 min (44 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!