Nous migrions de Java 6 vers Java 7 . Le projet est en retard et risque d'être abandonné, auquel cas il continuera d'utiliser Java 6.
Quelles sont les améliorations spécifiques de Java 7 avec lesquelles nous pourrions revenir à notre responsable et le convaincre qu'il est important d'utiliser JDK 7? Vous cherchez des corrections de bugs que je pourrais mettre en évidence dans Oracle Java 7 (par rapport à Java 6). Les correctifs de sécurité, de performances, Java 2D / impression, etc. seront plus vendables dans mon cas. Les correctifs du compilateur, par exemple, ne seront pas très utiles.
[Je passe par de nombreux sites comme le guide d'adoption Oracle , la base de données de bogues, les questions sur Stack Overflow].
Mise à jour: Merci pour les réponses. Nous avons reporté la mise à jour à la prochaine version. Au plus près, nous avons eu la sécurité. Accepter la réponse votée la plus élevée.
Réponses:
Java 6 a atteint EOL en février de cette année et ne recevra plus de mises à jour publiques (y compris la sécurité) à moins que vous n'achetiez un support d'entreprise très coûteux.
Cela devrait être toute la raison nécessaire.
En outre, des preuves accablantes suggèrent que la compatibilité descendante pour les runtimes Java est excellente. Il y a de fortes chances que vous ayez juste à remplacer les installations Java 6 par Java 7 et toutes les applications continueront de fonctionner sans aucun problème. Bien sûr, cela n'est pas garanti et des tests approfondis sont recommandés pour confirmer qu'il n'y aura en effet aucun problème.
la source
En général, il y a un certain nombre de changements assez larges pour faciliter les choses sur le programmeur. Votre gestionnaire ne se soucie peut-être pas trop de ces choses, mais faire en sorte que les programmeurs passent moins de temps à penser au code passe-partout, et ont donc plus de temps pour réfléchir à l'objectif réel de ce qu'ils implémentent, devrait augmenter l'efficacité, réduire les bogues, etc., ce qui peut être un argument très puissant. Oracle a une liste assez complète de changements , mais elle est assez longue, je vais donc résumer autant que possible.
Les fonctionnalités linguistiques incluent:
Map<String, String> myMap = new HashMap<String, String>();
peut être réduit àMap<String, String> myMap = new HashMap<>()
. Le compilateur peut déduire les types génériques nécessaires sur le côté droit à partir de la gauche, de sorte que votre code devient un peu plus court et plus rapide à lire..equals()
méthode au lieu de==
.Throwable.getSuppressed
.int n = 1000000000
peuvent être transformées en un texte beaucoup plus lisibleint n = 1_000_000_000
, qui est beaucoup plus facile à analyser comme étant un milliard, et plus difficile à taper à tort sans le remarquer. De plus, les littéraux binaires sont autorisés dans le formulaire0b10110101
, ce qui rend le code qui fonctionne avec les champs binaires un peu plus agréable à lire.Chacun de ces changements est quelque chose que votre gestionnaire ne peut pas directement s'intéresser, mais ils facilitent un peu l'écriture du code correct sans autant d'effort et de réflexion, libérant votre esprit pour se concentrer un peu plus sur la logique réelle que vous essayez à implémenter, et ils facilitent également la lecture du code plus tard, ce qui rend le débogage un peu plus rapide.
Côté API, un certain nombre de mises à jour d'API ont également eu lieu:
la source
String.equals
méthode" (à partir du document auquel vous avez lié). En réalité, le compilateur est libre d'optimiser ce quiString.equals
n'est pas utilisé ... à condition que l'effet net soit le même. (Et, je m'attends à ce qu'il utiliseString.hashcode
au-dessus d'un certain nombre de boîtiers de commutation.)try-with-resources est une fonctionnalité qui mérite une mise à niveau vers Java 7 pour, toute seule. Les fuites de ressources / fuites de mémoire sont un gros risque dans le développement Java et TWR réduit ce risque de manière significative.
J'ajouterai que la nouvelle abstraction de fichiers NIO.2 et les capacités asynchrones valent également la peine d'être déplacées si votre application dispose de fonctionnalités d'E / S de fichier / réseau.
la source
Il peut y avoir une raison pour laquelle vous ne devriez pas passer à Java 7: si vous devez utiliser la machine virtuelle d'Oracle et que votre logiciel fonctionne sur du matériel intégré ou que vous le distribuerez avec du matériel intégré: Oracle a modifié la licence de JRE afin qu'elle ne soit pas concédée si ci-dessus les conditions sont remplies; vous devrez acheter une licence intégrée Java SE. Voir Que signifie "système à usage général" pour Java SE Embedded?
la source