Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Azure bietet Teams zahlreiche Optionen zum Erstellen und Bereitstellen von Java-Anwendungen. Dieser Artikel enthält Informationen zu allgemeinen Szenarien für Java in Azure sowie allgemeine Planungsvorschläge und Überlegungen.
Apache®, Apache Kafka, ApacheStruts, Apache Tomcat und das Flammenlogo sind entweder eingetragene Marken oder Marken der Apache Software Foundation in den USA und/oder anderen Ländern. Die Verwendung dieser Markierungen impliziert kein Endorsement durch die Apache Software Foundation.
Plattform
Ermitteln Sie zunächst die Plattform, bevor Sie ein Cloudszenario für Ihre Java-Anwendung auswählen. Von den meisten Java-Anwendungen wird eine der folgenden Plattformen verwendet:
Spring Boot-JAR-Anwendungen
Spring Boot-JAR-Anwendungen werden in der Regel direkt über die Befehlszeile aufgerufen. Sie verarbeiten Webanforderungen. Anstatt sich bei der Verarbeitung von HTTP-Anforderungen auf einen Anwendungsserver zu verlassen, integrieren diese Anwendungen die HTTP-Kommunikation und andere Abhängigkeiten direkt in das Anwendungspaket. Solche Anwendungen werden häufig mit Frameworks wie Spring Boot, Dropwizard, Micronaut, MicroProfile und Vert.x erstellt.
Diese Anwendungen werden in Archive gepackt, die über die .jar Erweiterung verfügen, die als JAR-Dateien bezeichnet wird.
Spring Cloud-Anwendungen
Der Architekturstil von Microservice ist ein Ansatz für die Entwicklung einer einzelnen Anwendung als Eine Suite kleiner Dienste. Diese Dienste werden jeweils als eigener Prozess ausgeführt und kommunizieren über einfache Mechanismen – häufig mit einer HTTP-Ressourcen-API. Diese Dienste basieren auf den Geschäftsfunktionen.
Die Microservices werden mittels automatisierter Prozesse unabhängig voneinander bereitgestellt. Der Aufwand für die zentralisierte Verwaltung ist minimal, und es können verschiedene Programmiersprachen sowie unterschiedliche Speichertechnologien genutzt werden. Solche Dienste werden häufig mit Frameworks wie Spring Cloud erstellt.
Diese Dienste werden in mehreren Anwendungen als JAR-Dateien verpackt.
Webanwendungen
Webanwendungen werden in einem Servlet-Container ausgeführt. Einige verwenden Servlet-APIs direkt, während andere Frameworks verwenden, die Servlet-APIs kapseln, z. B. Apache Struts, Spring MVC und JavaServer Faces.
Webanwendungen werden in Archive gepackt, die die WAR-Erweiterung haben, die als WAR-Dateien bezeichnet wird.
Jakarta EE-Anwendungen
Jakarta EE-Anwendungen (Jakarta Enterprise Edition) können einige, alle oder keine Elemente von Webanwendungen enthalten. Sie können auch zahlreiche weitere Komponenten enthalten und nutzen, die über die Jakarta EE-Spezifikation definiert sind. Jakarta EE-Anwendungen wurden früher als Java EE-Anwendungen oder J2EE-Anwendungen bezeichnet.
Jakarta EE-Anwendungen können als WAR-Dateien oder als Archive verpackt werden, die die EAR-Erweiterung haben, die als EAR-Dateien bezeichnet werden.
Jakarta EE-Anwendungen müssen auf Anwendungsservern bereitgestellt werden, die mit Jakarta EE kompatibel sind. Beispiele sind WebLogic, WebSphere, WildFly, GlassFish und Payara.
Anwendungen, die nur auf den Features der Jakarta EE-Spezifikation basieren, können zwischen konformen Anwendungsservern migriert werden. Falls Ihre Anwendung von einem bestimmten Anwendungsserver abhängig ist, müssen Sie ggf. ein Azure-Dienstziel auswählen, an dem Sie den Anwendungsserver hosten können.
Plattformoptionen
Anhand der folgenden Tabelle können Sie potenzielle Plattformen für Ihren Anwendungstyp ermitteln:
| Azure App Service Java SE | App Service Tomcat | App Service JBoss EAP | Azure Container Apps – ein Dienst für containerbasierte Anwendungen | AKS | Azure-virtuelle Maschinen | |
|---|---|---|---|---|---|---|
| Spring Boot / JAR-Anwendungen | ✔ | ✔ | ✔ | ✔ | ✔ | |
| Spring Cloud-Anwendungen | ✔ | ✔ | ✔ | |||
| Webanwendungen | ✔ | ✔ | ✔ | ✔ | ✔ | |
| Jakarta EE-Anwendungen | ✔ | ✔ | ✔ | |||
| Verfügbarkeit von Azure-Regionen | Details | Details | Details | Details | Details | Details |
Von Azure Kubernetes Service (AKS) und Virtual Machines werden zwar alle Anwendungstypen unterstützt, Ihr Team muss jedoch mehr Aufgaben übernehmen, wie im nächsten Abschnitt beschrieben.
Support-Fähigkeit
Neben den Plattformoptionen müssen für moderne Java-Anwendungen ggf. noch weitere andere Unterstützbarkeitsanforderungen erfüllt werden. Hierzu zählen beispielsweise:
Batchaufträge oder geplante Aufträge
Anstatt auf Anforderungen oder Benutzereingaben zu warten, werden einige Anwendungen kurz ausgeführt und nach dem Ausführen einer bestimmten Workload wieder beendet. Diese Aufträge müssen teils nur einmal, teils aber auch in regelmäßigen geplanten Intervallen ausgeführt werden. In lokalen Umgebungen werden diese Aufträge häufig über die cron-Tabelle eines Servers aufgerufen.
Diese Anwendungen werden als JAR-Dateien verpackt.
Hinweis
Wenn für Ihre Anwendung ein Planer wie Spring Batch oder Quartz zum Ausführen von geplanten Aufgaben genutzt wird, sollten diese Aufgaben unbedingt außerhalb der Anwendung ausgeführt werden. Wenn Ihre Anwendung auf mehrere Instanzen in der Cloud skaliert wird, kann der gleiche Auftrag mehrmals ausgeführt werden. Falls für Ihren Planungsmechanismus die lokale Zeitzone des Hosts genutzt wird, kann es beim regionsübergreifenden Skalieren einer Anwendung zu unerwünschtem Verhalten kommen.
Integration in ein virtuelles Netzwerk
Wenn Sie eine Java-Anwendung in Ihrem virtuellen Netzwerk bereitstellen, verfügt der Dienst über ausgehende Abhängigkeiten von Diensten außerhalb des virtuellen Netzwerks. Für die Verwaltung und den Betrieb benötigt Ihr Projekt Zugriff auf bestimmte Ports und vollqualifizierte Domänennamen. Mit virtuellen Azure-Netzwerken können Sie viele Ihrer Azure-Ressourcen in einem Netzwerk platzieren, das nicht über das Internet geroutet werden kann. Mit dem Feature für die Integration virtueller Netzwerke können Ihre Anwendungen auf Ressourcen in oder über ein virtuelles Netzwerk zugreifen. Die VNet-Integration ermöglicht keinen privaten Zugriff auf Ihre Anwendungen.
Serverloses Entwicklungsmodell
Das serverlose Entwicklungsmodell ist ein cloudnatives Entwicklungsmodell, mit dem Entwickler Anwendungen ohne Serververwaltung erstellen und ausführen können. Bei serverlosen Anwendungen übernimmt der Cloud-Dienstanbieter automatisch die Bereitstellung, Skalierung und Verwaltung der für die Ausführung des Codes erforderlichen Infrastruktur. Server sind im serverlosen Modell weiterhin vorhanden. Sie werden bei der Anwendungsentwicklung lediglich abstrahiert.
Containerisierung
Als Containerisierung wird das Zusammenfassen von Softwarecode mit allen erforderlichen Komponenten wie Bibliotheken, Frameworks und anderen Abhängigkeiten in Paketen bezeichnet. Die Anwendung wird in einem eigenen Container isoliert.
CI/CD
Continuous Integration und Continuous Delivery (CI/CD) ist eine Methode zur häufigen Bereitstellung von Anwendungen für Kunden durch Integration von Automatisierung in die Phasen der Anwendungsentwicklung. Die wichtigsten Konzepte in CI/CD sind kontinuierliche Integration, kontinuierliche Bereitstellung und kontinuierliche Bereitstellung. Bei allen Azure-Optionen wird der Großteil der CI/CD-Tools unterstützt. Beispielsweise können Sie Lösungen wie Azure Pipelines oder Jenkins verwenden.
Open-Source-Suchmaschine
Suchvorgänge sind ein integraler Bestandteil jeder Anwendung. Wenn Geschwindigkeit, Leistung und Hochverfügbarkeit entscheidend sind, können Suchvorgänge mit Terabytes und Petabytes an Daten eine Herausforderung darstellen. Planen Sie beim Hosten von Java-Anwendungen in Azure das Hosten Ihrer zugehörigen Solr- und Elasticsearch-Instanzen ein. Alternativ können Sie die Migration zu Azure AI Search in Betracht ziehen.
Big-Data-Tools
Big Data-Tools ermöglichen die Automatisierung des Datenflusses zwischen den Softwaresystemen. Sie unterstützen skalierbare, robuste und optimierte Datenroutinggraphen sowie Systemvermittlungslogik. Sie werden verwendet, um Livedatenflusspipelinen und Streamanwendungen zu erstellen. Erfahren Sie, wie Apache Kafka auf Azure für Ihre Bedürfnisse geeignet sein könnte.
Unterstützbarkeitsoptionen
Anhand der folgenden Tabelle können Sie potenzielle Optionen für Ihren Anwendungstyp ermitteln: Von AKS und Virtual Machines werden alle Anwendungstypen unterstützt, Ihr Team muss jedoch mehr Aufgaben übernehmen.
| App Service Java SE | App Service Tomcat | App Service JBoss EAP | Azure Container Apps – ein Dienst für containerbasierte Anwendungen | AKS | Virtuelle Computer | |
|---|---|---|---|---|---|---|
| Batchaufträge oder geplante Aufträge | ✔ | ✔ | ✔ | |||
| Integration virtueller Netzwerke | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
| Serverlos | ✔ | ✔ | ✔ | |||
| Containerisierung | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
| Verfügbarkeit von Azure-Regionen | Details | Details | Details | Details | Details | Details |
Weitere Informationen finden Sie in der folgenden Entscheidungsstruktur.
Laden Sie eine Visio-Datei dieses Diagramms herunter.
Erstellen oder Migrieren von Java-Anwendungen
Ermitteln Sie die Java-Plattform Ihrer Anwendungen, um die Java-Anwendungen zu erstellen oder zu migrieren. Einige beliebte Plattformen sind Java SE, Jakarta EE und MicroProfile.
Java SE
Java Platform, Standard Edition (Java SE) ist eine Computingplattform für die Entwicklung und Bereitstellung von portierbarem Code für Desktop- und Serverumgebungen. Beliebte Projekte auf Java SE basieren auf Spring Boot, Spring Cloud, Spring Framework und Apache Tomcat.
Jakarta EE
Jakarta EE ist die Open Source-Zukunft von cloudnativem Java für Unternehmen. Hierbei handelt sich um eine Reihe von Spezifikationen, die Java SE um Unternehmensfeatures wie verteiltes Computing und Webdienste erweitern. Jakarta EE-Anwendungen führen Referenzruntimes aus. Diese Runtimes können Microservices oder Anwendungsserver sein. Sie kümmern sich um Transaktionen, Sicherheit, Skalierbarkeit, Parallelität und die Verwaltung der von der Anwendung bereitgestellten Komponenten.
Mikroprofil
Das MicroProfile-Projekt bietet eine Sammlung von Spezifikationen, die Entwickler bei der Erstellung cloudnativer Microservices für Enterprise Java unterstützen. Quarkus und Open Liberty sind beliebte Implementierungen von MicroProfile.
Zusammenfassung zur Erstellung oder Migration
Die folgende Tabelle enthält nach Anwendungstyp und Azure-Dienst aufgeschlüsselte Erstellungs- bzw. Migrationsinformationen:
| type | Java SE | Mikroprofil | JakartaSE | |
|---|---|---|---|---|
| Virtuelle Maschine | IaaS | ✔ | ✔ | ✔ |
| VMware Tanzu | IaaS | ✔ | ||
| Azure Kubernetes-Dienst | Behälter | ✔ | ✔ | ✔ |
| Red Hat OpenShift | Behälter | ✔ | ✔ | ✔ |
| Azure-Container-App | PaaS (Platform-as-a-Service) | ✔ | ✔ | |
| JBoss EAP | PaaS-App-Dienst | ✔ | ✔ | |
| Apache Tomcat | PaaS-App-Dienst | ✔ | ||
| Java SE | PaaS-App-Dienst | ✔ | ✔ |
Beitragende
Dieser Artikel wird von Microsoft gepflegt. Er wurde ursprünglich von folgenden Mitwirkenden geschrieben:
Hauptautoren:
- Asir Vedamuthu Selvasingh | Hauptprogramm-Manager
- Hang Wang | Produktmanager
- Xinyi Zhang | Haupt-PM-Manager
Um nicht öffentliche LinkedIn-Profile anzuzeigen, melden Sie sich bei LinkedIn an.
Nächste Schritte
- Übersicht über Azure-Container-Apps
- Azure Kubernetes-Dienst
- Azure Virtual Network Integration
- Virtuelle Computer in Azure