Umstellung von Java 7 auf Java 8

Dieser Artikel enthält eine allgemeine Anleitung für die Migration Ihrer Anwendung von Java 7 zu Java 8. Auf die Nutzung von Java 8-Features wird hier nicht eingegangen.

Für die Umstellung des Codes von Java 7 auf Java 8 gibt es keine Universallösung. In der Regel fällt für den Wechsel von Java 7 zu Java 8 nur ein geringer Arbeitsaufwand an. Potenzielle Probleme können einige geänderte APIs, die Festlegung des Typrückschlusses in javac, Änderungen von Klassenladeprogrammen und Änderungen von permgen (Teil der Garbage Collection) betreffen.

Im Allgemeinen besteht der beste Ansatz darin, nach Möglichkeit die Ausführung unter Java 8 zu versuchen, ohne zuerst neu zu kompilieren. Bei diesem Ansatz kann Ihre Anwendung so schnell wie möglich in Betrieb genommen werden. Für eine Bibliothek ist Ihr Ziel die Veröffentlichung eines Artefakts, das mit JDK 8 kompiliert und getestet wird.

Ende der Lebensdauer von Java 7

Der Communitysupport endet, wenn für Java 7 am 29. Juli 2022 das Ende der Lebensdauer (End of Life, EOL) erreicht wird. Alle Anwendungen, die unter Java 7 ausgeführt werden, können auch weiterhin ausgeführt werden, aber für Java 7 selbst werden keine Updates oder Sicherheitspatches mehr bereitgestellt. Führen Sie je nach Ihren Workloadanforderungen für Ihre Anwendungen das Upgrade von Java 8 oder 11 durch, um das allgemeine Risiko bzw. potenzielle Sicherheitsrisiken zu minimieren.

Befolgen Sie hierfür den kanonischen Migrationsleitfaden für Oracle JDK. Im Migrationsleitfaden werden alle Inkompatibilitäten der Java-Spezifikation und Inkompatibilitäten der JDK-Implementierung behandelt. Die meisten dieser Inkompatibilitäten sind Grenzfälle, und wenn eine Warnung angezeigt wird oder ein Fehler auftritt, sollten Sie dies untersuchen.

Ausführen unter Java 8

Die meisten Anwendungen sollten ohne Änderungen unter Java 8 ausgeführt werden können. Als Erstes sollten Sie es mit der Ausführung unter Java 8 versuchen, ohne den Code erneut zu kompilieren. Mit dieser Ausführung soll ermittelt werden, welche Warnungen und Fehler sich dabei ergeben. Bei diesem Ansatz
kann eine Anwendung unter Java 8 schneller ausgeführt werden, indem erst einmal nur die mindestens erforderlichen Maßnahmen ergriffen werden.

Die meisten ggf. auftretenden Probleme können behoben werden, ohne dass der Code neu kompiliert werden muss. Wenn Sie im Code ein Problem beheben müssen, sollten Sie dies durchführen, aber die Kompilierung mit JDK 7 fortsetzen. Versuchen Sie, nach Möglichkeit die Anwendung mit java-Version 8 auszuführen, bevor Sie mit JDK 8 kompilieren.

Kompilieren mit Java 8

Für das Kompilieren mit JDK 8 sind ggf. Updates erforderlich, um Skripts, Tools, Testframeworks und die zugehörigen Bibliotheken zu erstellen. Verwenden Sie die Option -Xlint:unchecked für javac, um die Details zur Nutzung der internen JDK-API und zu anderen Warnungen zu erhalten.

Migration von Java 7 für Azure App Service

Gehen Sie wie folgt vor, um Ihre App Services-Instanz von Java 7 zu Java 8 oder 11 zu migrieren: Melden Sie sich beim Azure-Portal an, navigieren Sie zu den Web-Apps, die Sie aktualisieren möchten, und wählen Sie dann Konfiguration>Einstellungen>Stapeleinstellungen aus. Es werden Dropdownlisten für die Java-Haupt- und -Nebenversionen sowie die Tomcat-Version angezeigt, sofern Sie Tomcat verwenden. Wählen Sie Java 8 oder 11 aus. Beachten Sie, dass Sie diese Konfigurationsänderung in einem Bereitstellungsslot durchführen können, um die Änderung auf sichere Weise zu testen. Führen Sie für die neue Umgebung anschließend die Umstellung auf die Produktion durch. (Java 7 ist unter Umständen ausgeblendet, um zu verhindern, dass Kunden Abhängigkeiten von alten Runtimes verwenden.) Weitere Informationen finden Sie unter Einrichten von Stagingumgebungen in Azure App Service.

Use the selector to change your Java version

Sie können die App-Einstellung JAVA_TOOLS verwenden, wenn Sie neue Runtimeoptionen angeben müssen. Diese werden dann angewendet, wenn Ihre Anwendung gestartet wird. Weitere Informationen finden Sie unter Konfigurieren einer Java-App für Azure App Service. Weitere Informationen zu Supportrichtlinien für Runtimes in App Service finden Sie im Abschnitt Integrierte Sprachen und Frameworks der App Service-Übersicht.

Nächste Schritte

Nachdem Ihre Anwendung unter Java 8 ausgeführt werden kann, empfehlen wir Ihnen, dem Java-Modernisierungspfad zu Java 11 zu folgen, indem Sie die folgenden Leitfäden verwenden.