Java-Technologien
In dieser Lerneinheit wird der Unterschied zwischen den verschiedenen Typen von Java-Frameworks, -Servern und -Plattformen erläutert.
Spring Framework
Das Spring Framework ist ein Anwendungsframework und ein Inversion-of-Control-Container (IoC). Spring wird traditionell als Ergänzung zum Enterprise JavaBeans-Modell (EJB) verwendet. Die wichtigsten Funktionen sind:
- Dependency Injection
- Aspektorientierte Programmierung
- Geschäftsabstraktion
Spring Boot
Spring Boot wird auf dem Spring-Framework ausgeführt und verfügt über eine dogmatische automatische Konfiguration. Spring Boot-Anwendungen werden eigenständig ausgeführt und sind perfekt für Microservices geeignet.
Spring Data
Spring Data vereinfacht den Zugriff auf Daten für relationale und nicht relationale Datenbanken, MapReduce-Frameworks und cloudbasierte Datendienste.
Spring Security
Spring Security ist faktisch der Standard für den Schutz Spring-basierter Anwendungen. Dieses Framework bietet ein hohes Maß an Authentifizierungs- und Zugriffssteuerung. Spring Security lässt sich beispielsweise gut mit Active Directory integrieren.
Spring Cloud
Spring Cloud wird für verteilte Systeme verwendet. Spring Cloud bietet Funktionen für die Dienstermittlung, Konfigurationsverwaltung und Überwachung sowie die für Entwickler erforderlichen Funktionen.
Spring Batch
Spring Batch ist ein einfaches Framework für stabile Batchanwendungen, die essenziell für den täglichen Betrieb sind.
MicroProfile und Jakarta EE
MicroProfile und Jakarta Enterprise Edition (EE) können als Open-Source-Folgeprojekte der Java EE-Spezifikationen angesehen werden.
Bei MicroProfile handelt es sich um eine Reihe von Spezifikationen für Microservicearchitekturen. Laut Selbstverständnis handelt es sich um ein offenes Forum zur Optimierung von Java Enterprise für Microservicearchitekturen. MicroProfile zielt darauf ab, Innovationen für mehrere Implementierungen zu schaffen und in gemeinsamen Interessensgebieten zusammenzuarbeiten.
Bei Jakarta EE handelt es sich um Spezifikationen zum Erstellen von Unternehmensanwendungen. Die modularisierte Struktur ermöglicht es Entwicklern, effiziente Softwarelösungen zu entwickeln. Jakarta EE-Anwendungen können als EAR- oder WAR-Dateien gepackt werden.
WebProfile ist ein Teil von Jakarta EE, der für Back-End-Dienste mit Fokus auf das Web geschaffen wurde. Aber keine Sorge: Sie können bestimmte APIs der Enterprise-Plattform zusätzlich hinzufügen.
Anwendungsserver
Java EE-Anwendungen müssen auf Java EE-kompatiblen Anwendungsservern (WebLogic, WebSphere, WildFly, GlassFish, Payara etc.) bereitgestellt werden.
Bei Apache Tomcat handelt es sich um einen HTTP-Server und einen Java-Servlet-Container. Tomcat implementiert die Spezifikationen für das Servlet, Java Server Pages (JSP), Java Expression Language und Java WebSocket.
Oracle WebLogic Server ist eine einheitliche und erweiterbare Plattform für die Entwicklung, Bereitstellung und Ausführung von Unternehmensanwendungen. WebLogic Server bietet eine stabile, ausgereifte Implementierung von Java EE und Jakarta EE.
Red Hat JBoss Enterprise Application Platform bietet Sicherheit auf Unternehmensniveau sowie eine hohe Leistung für lokale und virtuelle Implementierungen sowie in privaten oder öffentlichen Clouds und Hybrid Clouds.
WildFly ist der Open-Source-Upstream für JBoss EAP. Diese von der Community weiterentwickelte Variante eignet sich hervorragend für die Entwicklung und für Tests.
IBM WebSphere Application Server (WAS) ist eine flexible und sehr sichere Java-Serverruntimeumgebung für Unternehmensanwendungen. Der Fokus liegt auf hoher Zuverlässigkeit. WAS unterstützt Microservices und auf Standards basierende Programmiermodelle. Sie können die Modernisierung in eigener Geschwindigkeit vorantreiben, erhalten bessere Einblicke in Ihre Workloads, können Unternehmensanwendungen analysieren und Ihre Migration zu Kubernetes weiter fortsetzen.
Open Liberty ist die von der Community weiterentwickelte Open-Source-Version von WAS.
Oracle GlassFish ist die Referenzimplementierung vieler Java EE-Webstandards (einschließlich Servlet und JSP).
Weitere Frameworks für Microservicearchitekturen
Netty ist ein nicht blockierendes E/A-Client-Server-Framework (NIO). Dieses Framework ermöglicht eine schnelle und einfache Entwicklung von Netzwerkanwendungen wie Protokollservern und -clients. Es vereinfacht und optimiert die Netzwerkprogrammierung erheblich. Beispiele sind TCP- und UDP-Socketserver. Netty ist ein asynchrones ereignisorientiertes Netzwerkanwendungsframework für die schnelle Entwicklung verwaltbarer Hochleistungsprotokollserver und -clients.
Quarkus ist ein für OpenJDK HotSpot und GraalVM optimierter Kubernetes-nativer Java-Stapel. Quarkus nimmer immer mehr an Fahrt auf. Es gibt weitere Frameworks, bei denen der Fokus eher auf der Leistung liegt. Beispiele sind Vert.x, Helidon, Payara Micro und KumuluzEE.
Micronaut ist ein modernes JVM-basiertes Framework für den gesamten Stapel, mit dem modulare und leicht testbare Microserviceanwendungen und serverlose Anwendungen erstellt werden können. Micronaut unterstützt eine Runtime für Abhängigkeitsinjektion und aspektorientierte Programmierung, für die keine Reflexion verwendet wird. Das vereinfacht die Ausführung von Micronaut-Anwendungen auf GraalVM-Instanzen.