Die erste Frage lautet: "Wird die Java-Version auf dem Computer unterstützt?" Während die Aktualisierung der JRE eine Sache ist, kann es sein, dass das zugrunde liegende Betriebssystem nicht unterstützt wird, wenn die neue Version von Java ausgeführt wird (unterstützte Zertifizierungen und Supportverträge und dergleichen, die viele Unternehmensumgebungen gerne haben).
Viele Java-Produktionsumgebungen werden tatsächlich auf einem Anwendungsserver ausgeführt . Dies wäre die nächste Überlegung. Der Wikipedia-Vergleich von Java EE-App-Servern zeigt, welche Version von Java EE unterstützt wird. Dies ist in der JavaEE-Kompatibilitätsübersicht von Oracle zu sehen . Die getestete Konfiguration für JBoss Enterprise Application Platform 6 ist für Java SE 6.0 Update 6u30. Java SE 6.0 Update 6u30 ist auch die getestete Konfiguration für JBoss Application Server 7.1.0 Final . Diese funktionieren möglicherweise in Java 7, es handelt sich jedoch nicht um getestete Konfigurationen.
Auf dem Anwendungsserver befinden sich Tools zur Live-Code-Analyse , mit denen das Debuggen nachträglich durchgeführt werden kann. Omniscient Debugger (siehe auch) und Dynatrace sind zwei Beispiele dafür. Diese Anwendungen arbeiten, indem sie den Live-Byte-Code von Java instrumentieren (ändern), der ausgeführt wird, um ihm einen Bericht zu erstatten. Da diese Anwendungen durch Ändern des Bytecodes funktionieren, funktionieren sie nicht, wenn sich der Bytecode auf eine Weise ändert, mit der sie nicht arbeiten können (z. B. in einer neuen JRE).
Als nächstes folgen die Frameworks . Ein Beispiel hierfür ist JAXB, das mit Java geliefert wird, und Spring, das es verwendet. Durch die Umstellung auf Java 7 wurde JAXB aktualisiert, wodurch Code generiert wurde, der mit einigen Frameworks nicht kompatibel war (für den eine Aktualisierung erforderlich ist und deren Abhängigkeiten aktualisiert werden müssten ...).
Als nächstes stehen Build-Tools auf der Liste. Man müsste sicherstellen, dass die Build-Umgebung die richtige Version von Java verwendet. Das Schreiben von Code für Java 7, jedoch nicht das Aktualisieren der von Maven oder Ant verwendeten Version, würde dann Probleme verursachen. Es gibt Zeiten, in denen die Build-Tools selbst stark an eine Version mit bestimmten Plugins gebunden sind.
Werkzeuge testen . Dinge wie PMD, Findbugs und Checkstyle erkennen möglicherweise keine neuen Strukturen in einer neuen Java-Version - diese werden möglicherweise sehr verwirrt mit Anweisungen für Zeichenfolgenwechsel oder zusammengesetzten Abfragen. Tools, die sich mit Instrumenten wie der Codeabdeckung befassen, funktionieren in der neuen JVM möglicherweise nicht. Im Kontext von Java 7 wurden Cobertura und Emma nicht auf die neue JRE aktualisiert (diese Anwendungen ändern wiederum den Bytecode, um zu sehen, welcher Code ausgeführt wird und welcher nicht) (siehe Open Source Code Coverage-Bibliotheken für jdk7 ). Dies kann eine Änderung der Build-Skripte erforderlich machen, um von einem zum anderen zu wechseln.
Dann ist da noch die IDE . Man müsste die IDE auf eine Version aktualisieren, die die neuen Strukturen in der Sprache kennt. Die Ankündigung von Eclipse, Java 7 zu unterstützen, zeigt diese Probleme.
Last and not least ist der Entwickler . Es ist Sache des Entwicklers, den neuen Code zu schreiben und sich darüber im Klaren zu sein, wie Code umstrukturiert werden kann. Von Java 1.4 bis 1.5 wurden Vorlagen und Anmerkungen eingeführt, und die Entwickler brauchten einige Zeit, um sich mit den neuen Strukturen vertraut zu machen. Ebenso wurden die Sammlungen in 1.2 überarbeitet und Entwickler von der Verwendung von HashTable und Vector abgehalten. Die Aktualisierung der Version sollte mit einigen Schulungen in den neuen Sprachstrukturen einhergehen.