Wir haben von Java 6 auf Java 7 migriert . Das Projekt ist in Verzug und es besteht die Gefahr, dass es fallengelassen wird. In diesem Fall wird Java 6 weiterhin verwendet.
Was sind die spezifischen Verbesserungen in Java 7, mit denen wir zu unserem Manager zurückkehren und ihn davon überzeugen könnten, dass es wichtig ist, JDK 7 zu verwenden? Suchen Sie nach Fehlerkorrekturen, die ich in Oracle Java 7 (in Bezug auf Java 6) hervorheben könnte. In meinem Fall sind Korrekturen in Bezug auf Sicherheit, Leistung, Java 2D / Drucken usw. besser zu verkaufen. Compiler-Fixes werden zum Beispiel nicht viel nützen.
[Ich gehe viele Websites durch, wie den Oracle Adoptionsleitfaden , die Fehlerdatenbank und Fragen zum Stapelüberlauf].
Update: Danke für die Antworten. Wir haben das Update auf die nächste Version verschoben. Das nächste, was wir bekamen, war die Sicherheit. Akzeptiere die Antwort mit der höchsten Bewertung.
Antworten:
Java 6 hat EOL im Februar dieses Jahres erreicht und wird keine öffentlichen Updates (einschließlich Sicherheit) mehr erhalten, es sei denn, Sie kaufen sehr teuren Unternehmens-Support.
Das sollte der Grund sein, der gebraucht wird.
Außerdem deuten überwältigende Beweise darauf hin, dass die Abwärtskompatibilität für Java-Laufzeiten ausgezeichnet ist. Möglicherweise müssen Sie nur die Java 6-Installationen durch Java 7 ersetzen, und alle Anwendungen funktionieren problemlos weiter. Dies ist natürlich nicht garantiert und es werden umfangreiche Tests empfohlen, um sicherzustellen, dass es tatsächlich keine Probleme gibt.
quelle
Im Allgemeinen gibt es eine Reihe ziemlich umfangreicher Änderungen, um dem Programmierer die Arbeit zu erleichtern. Ihr Vorgesetzter mag sich nicht allzu sehr um solche Dinge kümmern, aber Programmierer sollten weniger Zeit damit verbringen, sich mit dem Boilerplate-Code zu befassen, und somit mehr Zeit haben, über das eigentliche Ziel der Implementierung nachzudenken, die Effizienz zu steigern, Fehler zu verringern usw. Das kann ein sehr starkes Argument sein. Oracle hat eine ziemlich umfangreiche Liste von Änderungen , die jedoch ziemlich lang ist, sodass ich so viel wie möglich zusammenfassen werde.
Sprachfunktionen umfassen:
Map<String, String> myMap = new HashMap<String, String>();
kann auf reduziert werdenMap<String, String> myMap = new HashMap<>()
. Der Compiler kann die benötigten generischen Typen auf der rechten Seite von links ableiten, sodass Ihr Code etwas kürzer und schneller lesbar wird..equals()
Methode anstelle von verwendet wird==
.Throwable.getSuppressed
.int n = 1000000000
eine viel besser lesbare werden könnenint n = 1_000_000_000
, was einfacher als eine Milliarde zu analysieren und schwieriger ist, falsch zu schreiben, ohne es zu bemerken. Außerdem sind binäre Literale im Formular zulässig0b10110101
, wodurch Code, der mit Bitfeldern arbeitet, etwas besser lesbar ist.Jede dieser Änderungen ist etwas, das Ihrem Manager möglicherweise nicht direkt am Herzen liegt, aber sie erleichtern es Ihnen ein wenig, korrekten Code ohne viel Aufwand und Gedanken zu schreiben zu implementieren, und sie machen es auch ein wenig einfacher, Code später zu lesen, was das Debuggen etwas schneller macht.
Auf der API-Seite sind auch eine Reihe von API-Aktualisierungen aufgetreten:
quelle
String.equals
Methode verwenden" (aus dem Dokument, mit dem Sie verlinkt haben). In der Realität kann der Compiler frei optimieren, sodass erString.equals
nicht verwendet wird ... vorausgesetzt, der Nettoeffekt ist der gleiche. (Und ich würde erwarten, dass esString.hashcode
über eine bestimmte Anzahl von Schalter Fällen verwenden würde.)try-with-resources ist eine Funktion, für die es sich lohnt, ein Upgrade auf Java 7 durchzuführen. Ressourcenlecks / Speicherverluste sind ein großes Risiko in der Java-Entwicklung, und TWR reduziert dieses Risiko erheblich.
Ich füge hinzu, dass die neuen Funktionen für NIO.2-Dateiabstraktion und Asynchronität ebenfalls einen Umstieg wert sind, wenn Ihre Anwendung über Datei- / Netzwerk-E / A-Funktionen verfügt.
quelle
Es kann einen Grund geben, warum Sie nicht auf Java 7 wechseln sollten : Wenn Sie die VM von Oracle verwenden müssen und Ihre Software entweder auf eingebetteter Hardware ausgeführt wird oder Sie sie mit eingebetteter Hardware verteilen: Oracle hat die JRE-Lizenz so geändert, dass sie nicht lizenziert ist, falls dies oben angegeben ist Bedingungen sind erfüllt; Sie müssen kaufen eine Java SE Embedded - Lizenz. Siehe Was bedeutet "Allzwecksystem" für Java SE Embedded?
quelle