© Excellent backgrounds/Shutterstock.com
Kolumne: EnterpriseTales

Java 8 und Enterprise - Teil 2


Im Rahmen dieser Kolumne haben wir anlässlich des Java-8-Releases eine kleine Serie gestartet, in der wir uns das Zusammenspiel von Java 8 mit Enterprise Java näher anschauen wollen. Während wir in der letzten Kolumne die Möglichkeit der Nutzung mit Servern und Frameworks betrachtet haben, wollen wir heute einen Blick auf das Zusammenspiel der Lambda Expressions und des Streaming API mit Enterprise Java werfen.

In der letzten Kolumne haben wir betrachtet, was Java 8 im Enterprise-Kontext bedeutet. Dabei lag der Fokus darauf, ob Java 8 überhaupt mit Enterprise Java zusammen funktioniert und wo die Probleme liegen. Um das Fazit der letzten Kolumne kurz zusammenzufassen: Im Java-EE-Standard lässt sich Java 8 nur mit dem Wildfly-Server verwenden. Außerhalb des EE-Standards sieht die Welt aber besser aus: Die Web-Container Tomcat und Jetty laufen beide mit Java 8. Im Frameworkbereich ist die Lage durchwachsen, aber zumindest die aktuellen Versionen von Spring und Hibernate laufen mit Java 8. Es gilt also: Java 8 kann im Enterprise-Bereich noch nicht flächendeckend eingesetzt werden, es gibt aber bereits Enterprise-Umgebungen, in denen es läuft. Grund genug für uns zu betrachten, wie die neuen Features von Java 8 im Enterprise-Umfeld eingesetzt werden können.

Enterprise Java und Lambda Expressions

Unter Verwendung von Java 8 und Lambda Expressions ist es z. B. sehr elegant möglich, Collections zu bearbeiten. Das gilt natürlich auch im Java-EE-Umfeld. So wird die Abarbeitung einer Liste von Entitäten zum Einzeiler:

entityList.forEach((MyEntity entity) -> { entity.doWork(); }) 

Interessant wird eine solche Operation, wenn man sie asynchron ausführen möchte. Ein besonderes Augenmerk muss dabei auf die Fälle gelegt werden, bei denen auf den EntityManager zugegriffen werden muss. Um nämlich in einem anderen Thread einen EntityManager zur Verfügung zu haben, muss darauf geachtet werden, dass der verwendete Thread Container-managed ist. Das gilt auch für die Verwendung von EJBs und CDI Beans (jedenfalls deren Proxies). In einem Container-managed Thread stehen einem alle EE-Features wie Dependency Injection, Transaktionen oder Security zur Verfügung. Die Ausführung in einem Container-managed Thread erreicht man entweder durch den Aufruf einer EJB-Methode, die mit @Async annotiert ist oder über die Concurrency Utilities, die im Rahmen von Java EE 7 neu hinzugekommen sind (siehe [1], wir berichteten bereits im Rahmen dieser Kolumne). Letztere funktionieren auch wunderb...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang