Zu Abschnitt

Was ist Java-Anwendungsmodernisierung?

URL kopieren

Java™ ist seit über 27 Jahren eine der beliebtesten Programmiersprachen für die Entwicklung von Unternehmenssoftware. Weltweit wurden unzählige Systeme mit dieser weithin bekannten Sprache entwickelt.

Traditionelle Java-Anwendungen sind Monolithen. Sie enthalten die für die Anwendungsausführung erforderlichen Komponenten in ihrem Paket, aber aufgrund der monolithischen Bauweise fehlt den Entwicklungsteams die Agilität bei Änderungen. Um eine einzige Änderung vorzunehmen müssen Entwicklerinnen und Entwickler im Grunde die vorhandenen Anwendungen neu kompilieren, testen und erneut bereitstellen. 

Mit der Anwendungsmodernisierung können Entwicklungsteams die Agilität von Legacy-Anwendungen, die beispielsweise in Java erstellt wurden, wiederherstellen. Dazu migrieren sie die Apps zu einer modernen Plattform, zerlegen Monolithen in kleinere, leichter zu verwaltende Komponenten wie Microservices, wenden moderne Verfahren zur Softwareentwicklung und Bereitstellung an und integrieren Altes in Neues.

Durch die Modernisierung dieser Anwendungen können Unternehmen Zeit und Geld sparen, indem sie herkömmliche Anwendungen aktualisieren, anstatt den vorhandenen Anwendungscode neu zu schreiben. Durch die Einführung von cloudnativen und Microservice-Architekturen können Entwicklungsteams Java-Anwendungen effizienter gestalten, und Unternehmen können mehr in zukünftige Initiativen investieren.

Java-Anwendungen basieren traditionell auf einer monolithischen Architektur, was langfristig zu einem erheblichen Mehraufwand für Support und Management führt.  Die Modernisierung von Java-Anwendungen für die Cloud und für Container ist eine Möglichkeit, den Wert dieser Anwendungen weiter zu steigern und gleichzeitig Performance, Skalierbarkeit und Kosten zu optimieren.

Aufgrund der Portierbarkeit und des umfangreichen IT-Ökosystems wird Java seit Jahrzehnten bevorzugt in Unternehmensumgebungen eingesetzt, da es objektorientiert, plattformunabhängig, stabil und abwärtskompatibel ist. Java bietet zahlreiche APIs, umfangreiche Entwicklungstools und ist leicht zu erlernen.

Vor kurzem hat sich bei der Anwendungsentwicklung ein entscheidender Wandel von traditionellen, monolithischen Architekturmustern hin zu einfacheren und modularen Services und Funktionen vollzogen. Häufig werden diese auf Basis von Cloud Computing und Container-Orchestrierungsplattformen wie Kubernetes entwickelt. Dieser Ansatz wird in der Regel als „cloudnatives Java“ bezeichnet.

Da Java ursprünglich nicht für schnelle Startzeiten, geringen Speicherbedarf oder Container konzipiert war, musste es weiterentwickelt werden. Die gute Nachricht? Die Vorteile von Java können dank der Modernisierung auch in Cloud-Umgebungen genutzt werden.

Vorteile

  • Optimiertes Entwicklungserlebnis: In Cloud-Umgebungen können Entwicklungsteams Ressourcen innerhalb von Minuten auf Knopfdruck bereitstellen. Außerdem gibt es gut integrierte Tools zur Konfiguration von Netzwerken, Storage und anderen Services, die vorkonfiguriert und einsatzbereit sind.
  • Hohe Verfügbarkeit und Unterstützung durch Cloud-Anbieter: Cloud-Anbieter garantieren hohe Verfügbarkeit und unterstützen Service Level Agreements (SLAs), die in einem privaten Rechenzentrum nur mit erheblichem Aufwand und Kosten erreicht werden können. Das macht Cloud-Services zu einer attraktiven Option für diejenigen, die verschiedene Arten von Anwendungen betreiben wollen, ohne ihre eigene Infrastruktur verwalten zu müssen.
  • Skalierbarkeit und Elastizität: Skalierbarkeit ist einer der wichtigsten Gründe für Entwicklungsteams, auf Cloud Computing umzusteigen, da sie damit ihre Ressourcen je nach Bedarf erhöhen oder verringern können. Das gleiche Maß an Skalierbarkeit in einer Nicht-Cloud-Umgebung wäre in vielen Fällen unerschwinglich.
  • Globale Reichweite und gemanagte Verfügbarkeitszonen: Cloud-Umgebungen ermöglichen eine globale Reichweite und bieten Services mit niedrigen Latenzzeiten auf der ganzen Welt. Durch strategisch platzierte Rechenzentren können Cloud-Nutzende die Reichweite ihrer eigenen Anwendungen erweitern und sie für Kunden in verschiedenen Teilen der Welt bereitstellen, was zuvor vielleicht nicht praktikabel, wirtschaftlich oder gar möglich gewesen wäre.
  • Niedrige Kosten: Für Cloud Computing sind keine großen Vorleistungen erforderlich. So können die anfallenden Kosten für den Betrieb der Hardware, wie Strom, Platzbedarf und Wartung, eingespart werden. Das Cloud-Deployment ist schnell und problemlos, und die Cloud-Umgebung ist leicht zugänglich und leicht zu erlernen, was die Produktivität der Entwicklungsteams und die Zeit bis zur Markteinführung beschleunigt und die Kosten weiter reduziert.

Cloudnative Java-Anwendungen sind Anwendungen oder Microservices, die nicht auf einem lokalen Rechner, sondern in der Cloud entwickelt, bereitgestellt und gemanagt werden. Dank dieses modernisierten Ansatzes für die Softwareentwicklung können Unternehmen Software entwickeln, die flexibler und skalierbarer ist, und Verbesserungen beschleunigen, ohne dass die Performance oder Sicherheit darunter leidet. 

Cloudnatives Java basiert auf verschiedenen Cloud-Methoden, um die Entwicklung zu ermöglichen, darunter:

  • Verwendung von Containern anstelle von virtuellen Maschinen, um Anwendungen mit ihrer Runtime-Umgebung zu paketieren und zu isolieren. Eine Java-Anwendung in einem Container verfügt im Idealfall über die für den Betrieb erforderlichen Komponenten und sorgt so für mehr Effizienz, Geschwindigkeit und ein besseres Benutzererlebnis. Mit Containern können Java-Anwendungen auf einer beliebigen Anzahl von Betriebssystemen in der Cloud ausgeführt werden. 
  • Verwendung von CI/CD (Continuous Integration/Continuous Delivery), um durch Automatisierung die Notwendigkeit für menschliche Eingriffe zu minimieren und Nutzenden regelmäßige Updates bereitzustellen. Mit einer zuverlässigen CI/CD-Pipeline können Entwicklungsteams, die an verschiedenen Bereichen einer Anwendung arbeiten, sicherstellen, dass ihre Änderungen vor dem Deployment wieder in einer einzigen Version zusammengeführt werden. Mithilfe der Automatisierung entfällt der zeitaufwendige Abgleich von Änderungen aus verschiedenen IDEs (Individual Development Environments).
  • Ein DevOps-Framework, bei dem Entwicklung und IT-Operations die Servicebereitstellung mit einer Vielzahl von gemeinsamen Praktiken angehen, um Ideen schnell in App-Verbesserungen umzusetzen. Dies ist besonders wichtig bei der cloudnativen Entwicklung mit Containern, die eine einheitliche Umgebung für Entwicklung, Bereitstellung, Integration und Automatisierung bieten.

Es gibt eine Vielzahl von Ansätzen für cloudnatives Java, darunter:

Java Virtual Machines in Linux-Containern

Mit Java Virtual Machines (JVMs) können Java-Programme standortunabhängig ausgeführt werden, auch in Linux-Containern. Bei diesem Ansatz gibt es mehrere mögliche Konfigurationen: ein Hypervisor-Host-Betriebssystem, das auf einem Cloud-Server in der Cloud ausgeführt wird; ein Gast-Betriebssystem, das auf einer Hypervisor-VM ausgeführt wird; ein Docker-Container, der auf dem Gast-Betriebssystem ausgeführt wird; eine JVM, die Java-Bytecode auf der Host-CPU innerhalb des Docker-Containers ausführt; oder alle Container auf demselben Host, die einen Kernel gemeinsam verwenden. Dieser Ansatz kann in einigen Konfigurationen zu Problemen beim Speichermanagement führen. 

MicroProfile

Dieser Ansatz, der von Frameworks wie Quarkus unterstützt wird, ist schlanker als andere, erfordert jedoch Kenntnisse über Kubernetes, das für die Bewältigung von Cloud-Aufgaben verwendet wird. MicroProfile ist eine anbieterunabhängige, communitybasierte Spezifikation, die für Microservice-Architekturen optimiert ist und wegen ihrer zahlreichen Integrationsmöglichkeiten mit anderen cloudnativen Technologien geschätzt wird. 

Native Images 

Mit der Native Image-Technologie kann Java-Code vorzeitig in einer ausführbaren Standalone-Datei kompiliert werden, die Vorteile wie nahezu sofortige Startzeiten, geringe Speichernutzung und Portierbarkeit zwischen Systemen bietet. Bei diesem Ansatz wird häufig das Liberica Native Image Kit (NIK) als Compiler verwendet, das Java-Bytecode in Binärcode umwandelt. Mit dem NIK kann allerdings nicht jedes Programm optimiert werden. Spring Boot 3, das das experimentelle Spring Native abgelöst hat, ist Teil des gängigen Spring-Frameworks und kompiliert Java-Anwendungen in ausführbare Dateien. 

Wenn Sie an der cloudnativen Java-Anwendungsentwicklung interessiert sind, gibt es mehrere Frameworks, mit denen Sie sich mehr beschäftigen sollten. Einige Beispiele: 

Quarkus ist ein Kubernetes-natives Full-Stack Java Framework für JVMs und native Kompilierung, mit dem Java speziell für Container optimiert wird. Es bietet eine effektive Plattform für Serverless-, Cloud- und Kubernetes-Umgebungen.

Micronaut ist ein JVM-basiertes Framework mit besonderem Augenmerk auf Geschwindigkeit und Modularität. Da Micronaut seine Dependency Injections zur Kompilierzeit und nicht zur Runtime durchführt, bietet es im Vergleich zu anderen Frameworks schnellere Startup-Zeiten und einen geringeren Arbeitsspeicherbedarf.

Spring Cloud Functions ist eine neue Version des langjährigen Spring-Entwicklungs-Frameworks, die diesmal auf Cloud-Deployments abgestimmt ist. Die Cloud-Funktionen in diesem Framework können eine Kombination aus reaktivem und imperativem Stil unterstützen und sind für eine Vielzahl von Einsatzmöglichkeiten vorgesehen, von Webservices bis hin zu Hintergrundarbeiten.

Eclipse Vert.x bietet eine Vielzahl von Tools für das Entwickeln reaktiver Anwendungen auf JVMs, die je nach Workload-Anforderungen horizontal oder vertikal skaliert werden können. Der Fokus liegt dabei auf Effizienz, indem ein asynchrones Programmiermodell verwendet wird, um gleichzeitige Workloads mithilfe von Event-Loops zu verarbeiten.

Dropwizard ist ein ausgereiftes Framework, das für seine Stabilität und seine Out-of-the-Box-Unterstützung für Konfiguration, Anwendungsmetriken, Protokollierung und operative Tools bekannt ist. Dropwizard eignet sich hervorragend für das Überarbeiten bestehender Anwendungen, da seine Struktur gut mit älteren Java-Entwicklungsansätzen harmoniert. 

Schließlich bieten sowohl Google als auch Microsoft Java-Einsteiger-Frameworks für grundlegende Funktionen an. Wenn Ihre Anforderungen relativ unkompliziert sind, könnten diese Open Source-Frameworks möglicherweise ausreichen.

Nicht alle Anwendungen müssen auf die gleiche Art modernisiert werden. Entwicklungsteams können den Ansatz wählen, der am besten zu den Merkmalen der jeweiligen Anwendung sowie zu den aktuellen und erwarteten Anforderungen des Unternehmens passt.

Wenn Sie also darüber nachdenken, Ihre Java-Anwendungen zu modernisieren, und sich von monolithischen Architekturen lösen wollen, um die Vorteile des Cloud-Bereitstellungsmodells zu nutzen, gibt es drei Möglichkeiten zur Modernisierung von Java-Anwendungen: Rehosting, Replatforming und Refactoring.

Rehosting – Virtualisierung

Beim Rehosting, auch bekannt als Lift-and-Shift, wird Ihre bestehende Anwendung unverändert auf einer virtuellen Maschine (VM) bereitgestellt. Mit dem Rehosting-Ansatz werden Java-Anwendungen, die auf herkömmlichen Anwendungsservern laufen, per Lift-and-Shift in VMs verschoben, die auf einer Hybrid Cloud-Plattform ausgeführt werden. Monolithische Anwendungen bleiben unverändert auf Ihrem Anwendungsserver und behalten alle bestehenden Integrationen und Abhängigkeiten bei.

Replatforming – OpenShift

Beim Replatforming werden Ihre Anwendungen in einem Container auf einer Kubernetes-basierten Cloud-Plattform wie Red Hat® OpenShift® bereitgestellt.

Durch ein Replatforming von Java-Anwendungen auf OpenShift können Sie die gesamte Funktionalität der Plattform nutzen, beispielsweise eine verbesserte Ressourcennutzung durch Bin Packing, horizontale Skalierung, CI/CD-Integrationstools, integrierte Überwachungstools und mehr. OpenShift bietet umfangreiche Tools zur Optimierung des Erstellungs- und Bereitstellungsprozesses von Java-Anwendungs-Images und ermöglicht die Einführung moderner cloudnativer Entwicklungstechniken durch die Einführung von MicroProfile und Content Trimming.

Refactoring – OpenShift Application Foundations

Beim Refactoring werden Ihre Anwendung in Microservices transformiert, neue Technologien integriert und auf einer Cloud-Plattform bereitgestellt. Das Refactoring umfasst die Neuentwicklung von Java-Anwendungsservices als Microservices, die in einem Service Mesh auf einer Hybrid Cloud-Plattform bereitgestellt werden. Services können nach und nach umstrukturiert werden, um Funktionen von der alten auf die neue Anwendungsarchitektur zu übertragen. Mithilfe des Strangler Patterns können Monolithen nach und nach in Microservices transformiert werden. So können neue Services hinzugefügt werden, während ältere Services refaktorisiert werden.

Red Hat OpenShift mit Application Foundations bietet eine Plattform, mit der die Ausführung über den gesamten Lifecycle einer Anwendung optimiert wird. Durch diese Kombination können Entwicklungsteams Anwendungen unter Berücksichtigung der Sicherheit und in großem Umfang in der Hybrid Cloud entwickeln, bereitstellen und nutzen.

Cover des E-Books „Planung der Java-Anwendungsmodernisierung“

Planung der Java-Anwendungsmodernisierung

Als Experte für Open Source Java und Kubernetes kann Red Hat Sie bei der Modernisierung Ihrer Java-Anwendungen und beim Aufbau einer agilen, cloudnativen IT-Umgebung unterstützen, um sich ändernde Geschäftsanforderungen zu erfüllen. Wir bieten eine vollständige, einheitliche Open Hybrid Cloud-Basis für Ihre Anwendungsmodernisierung.

Viele Unternehmen verlassen sich seit über 20 Jahren auf Java als bewährte Entwicklungsplattform, um eine Vielzahl von Umgebungen zu unterstützen. Mit Red Hat konnten zahlreiche Entwicklerinnen und Entwickler bestehende Java-Anwendungen erhalten und verbessern, sie für cloudnative Umgebungen umgestalten und neue Innovationen in getesteten Frameworks bereitstellen.

Die Plattformen von Red Hat bieten Ihnen die Flexibilität, Interoperabilität und Konsistenz, die Sie für die Anwendungsmodernisierung benötigen. Red Hat OpenShift® ist eine sicherheitsorientierte Hybrid Cloud-Plattform, mit der Sie Ihre Anwendungen in verschiedenen Umgebungen entwickeln, bereitstellen und verwalten können. Darüber hinaus können Sie mit dem Migrations-Toolkit für Anwendungen (MTA) von Red Hat Java-Anwendungen auf ihre Cloud-Tauglichkeit hin überprüfen. Damit erhalten Sie Tools, Berichte und Informationen, mit denen Entwicklungsteams Projekte zur Anwendungsmodernisierung und -migration beschleunigen können.

Wenden Sie sich an Red Hat, um mehr über die Anwendungsmodernisierung zu erfahren und sich über zukünftige Events in Ihrer Nähe zu informieren, bei denen Sie die Technologie von Red Hat hautnah erleben können.

Cover des E-Books „Modernisierung von Java für Unternehmen“

E-Book von O’Reilly über die Modernisierung von Java für Unternehmen

Weiterlesen

Artikel

Was sind Red Hat OpenShift Operatoren?

Red Hat OpenShift Operatoren automatisieren die Erstellung, Konfiguration und Verwaltung von Instanzen Kubernetes-nativer Anwendungen.

Artikel

Was für Red Hat OpenShift Serverless spricht

Red Hat OpenShift Serverless erweitert Kubernetes auf die Bereitstellung und Verwaltung serverloser Workloads.

Artikel

Warum Red Hat OpenShift Service Mesh?

Mit dem Red Hat OpenShift Service Mesh können Sie Anwendungen, die auf Microservices basieren, auf einheitliche Weise verbinden, verwalten und überwachen.

Mehr über OpenShift erfahren

Produkte

Eine Plattform, die es Ihnen ermöglicht, Anwendungen in Ihrem Unternehmen schnell und effizient über die von Ihnen gewünschte Infrastruktur bereitzustellen.

Softwaredefinierter Storage sorgt für einen permanenten Datenspeicher, während Container in mehreren Umgebungen hoch- und heruntergefahren werden.

Eine KI-Plattform, die Tools zum schnellen Entwickeln, Trainieren, Bereitstellen und Überwachen von Modellen und KI-gestützten Anwendungen bietet.

Eine zentrale Konsole mit integrierten Sicherheitsrichtlinien, mit der Sie Kubernetes-Cluster und -Anwendungen verwalten können.

Ressourcen

Training

Kostenloser Trainingskurs

Running Containers with Red Hat Technical Overview

Kostenloser Trainingskurs

Developing Cloud-Native Applications with Microservices Architectures

Kostenloser Trainingskurs

Containers, Kubernetes and Red Hat OpenShift Technical Overview