32 votes

Mise à jour 151 ou 152 de Java 8 ?

Il y a deux Téléchargements de Java 8 sur la page Oracle .

El notes de version de 152 noter deux choses sur 151 :

  • Amélioration des performances de BigInteger
  • Les compilateurs acceptent la modification des champs finaux en dehors des méthodes d'initialisation.

Ce dernier ressemble davantage à un commentaire du type "c'est un bogue mais il n'est pas corrigé dans la version 8 ; il le sera dans Java 9". Cela s'applique donc également à la version 151, même si cela n'est pas mentionné.

Je ne suis pas sûr de la première. Pourquoi n'est-ce pas dans la 151 ? Je trouve cela très frustrant. Deux versions sans indication claire de celle qui est "meilleure" ou la version "préférée" de la plupart des développeurs.

D'où ma question : Est-il préférable d'utiliser 152 en production ou 151 ? Y a-t-il des indicateurs que je pourrais ou devrais utiliser pour décider ?

53voto

varren Points 4621

L'idée générale est que

  • 8u151 (tag jdk8u151-b12 ) est une version de mise à jour de correctif critique (CPU)
  • 8u152 (tag jdk8u152-b16 ) est une version du Patch Set Update (PSU)

Du site officiel d'Oracle Explication des libérations de CPU et PSU

À partir de la publication de la mise à jour 71 de Java SE 7 (Java SE 7u71) en octobre 2014, Oracle publiera un Patch Update critique (CPU) en même temps qu'un Patch Set Update (PSU) correspondant pour Java SE 7. en même temps qu'une mise à jour de l'ensemble de correctifs (PSU) correspondante pour Java SE 7.

Quelle version de Java dois-je choisir : le CPU ou le PSU ? Oracle recommande fortement à tous les utilisateurs de Java SE d'effectuer une mise à niveau vers la dernière version du CPU disponible pour une famille de versions. La plupart des utilisateurs devraient choisir la version du CPU.

Les utilisateurs ne doivent utiliser la version correspondante du PSU que s'ils sont touchés par l'un des bogues supplémentaires corrigés dans cette version. impactés par l'un des bogues supplémentaires corrigés dans cette version, comme indiqué dans les notes de version.

La version suivante du CPU contiendra tous les correctifs de la PSU actuel. Pour cette raison, les organisations devraient tester l'actuel PSU actuel dans leur environnement en prévision de l'inclusion de ces corrections dans la prochaine CPU.

Quelle est la différence entre un CPU Java et une version PSU ? Java SE Les mises à jour de patchs critiques (CPU) contiennent des corrections de vulnérabilités de sécurité et des corrections de bogues critiques. Oracle recommande fortement à tous les utilisateurs de Java SE de passer aux dernières versions CPU dès qu'elles sont disponibles. Les versions CPU de Java SE sont des versions à numérotation impaire (par exemple, 7u71, 7u65 - cf. plus d'informations sur les schémas de numérotation des versions de Java SE ici).

Les mises à jour de l'ensemble des correctifs de Java SE (PSU) contiennent tous les correctifs du CPU correspondant, ainsi que des correctifs supplémentaires non critiques. Les versions PSU de Java ne doivent être utilisées que si vous êtes affecté par un des bogues supplémentaires bogues supplémentaires corrigés dans cette version. Les notes de version indiquent les corrections supplémentaires disponibles dans les versions Java SE PSU.

Les versions PSU permettent aux organisations et aux développeurs d'avoir accès aux non critiques en plus des correctifs critiques contenus dans les CPU correspondant.

Lire aussi Quelle est la différence entre les mises à jour Java impaires et paires ?


Pour trouver la liste complète des corrections de bogues publiques, vous devez ouvrir la page des corrections de bogues au bas des notes de publication.


Il y a donc 238 corrections de bogues dans le PSU (8u152) (pas seulement les améliorations des performances de BigInteger). Et il y a une forte probabilité que vous obteniez la plupart d'entre eux de toute façon dans la prochaine version du CPU. Il est donc recommandé de mettre à jour aussi vite que possible vers la 8u151 et de tester/ajuster votre code pour le rendre comparable à la 8u152. Vous pouvez mettre à jour vers la 8u152 si vous avez besoin d'une correction de bogue.

6voto

jayaram S Points 76

Par les pages de téléchargement d'Oracle

Java SE 8u151 comprend d'importantes corrections de bogues. Oracle recommande vivement à tous les utilisateurs de Java SE 8 de passer à cette version. Java SE 8u152 est une mise à jour de l'ensemble des correctifs, comprenant tous les éléments de 8u151 plus des fonctionnalités supplémentaires (décrites dans les notes de mise à jour).

En pratique, cela signifie que si votre application dépend de jdk8u144, vous pouvez passer à la version 151 et vous attendre à ce que rien ne soit cassé.

Mais si vous comptez effectuer une mise à niveau et que vous ne vous souciez pas particulièrement des améliorations incluses dans la version 152, vous pouvez y aller.

Si votre application repose sur BigInteger, comme c'est le cas dans certaines applications financières, cela peut être un problème important et justifier un certain niveau de tests d'intégration.

3voto

Aaron Digulla Points 143830

J'ai deux raisons de préférer le 8u151 :

  1. Le programme de mise à jour de Java pour Windows met à jour la version 8u151 lorsque je lui demande de vérifier les mises à jour. J'interprète cela comme "Oracle pense que c'est la version que la plupart des gens veulent/devraient avoir".

  2. L'amélioration des performances de BigInteger semble être la seule différence entre 151 et 152. Si ce changement avait été bien testé et prêt pour la production, Oracle l'aurait intégré dans la version 151 pour éviter toute confusion. Ils ne l'ont pas fait.

3voto

Stephen C Points 255558

En général, voici comment je pense que l'on devrait choisir entre un CPU ou un PSU ... sur la base de l'Oracle. Explication des libérations de CPU et PSU page (citée ci-dessus).

  • Si vous avez des applications Java critiques 1 Dans un premier temps, choisissez le processeur plutôt que le bloc d'alimentation. Un processeur présente moins de risques que la mise à niveau casse votre application.

    Vous devriez alors prévoir de mettre à niveau le PSU bientôt . La raison en est que la prochaine version du CPU le plus probable incluent les améliorations apportées à ce PSU. Si vous ne tenez pas compte du bloc d'alimentation dans ce cycle de mise à niveau, vous reportez la recherche/réparation de toute panne inattendue jusqu'au prochain CPU (obligatoire). Vous ne pouvez pas prévoir si cela posera des problèmes.

  • Sinon, si vous avez besoin des améliorations listées pour le PSU, choisissez le PSU plutôt que le CPU.

  • Si aucun des deux cas ci-dessus ne s'applique, le choix n'a pas d'importance.

Notez qu'il s'agit de l'image si vous n'avez pas de contrat d'assistance. Si vous avez un contrat de support, il y a peut être d'autres options ; par exemple, payer pour qu'Oracle vous fournisse des correctifs de sécurité personnalisés qui pourraient vous permettre de reporter l'installation des améliorations ... indéfiniment.

Notez également qu'il s'agit d'un processus décisionnel idéalisé. Dans la pratique, les ingénieurs logiciels / devops doivent souvent trouver un équilibre entre des risques et des calendriers concurrents sans disposer des ressources nécessaires pour faire un travail correct.


A propos de la raison pour laquelle Oracle ne peut pas vous donner de conseils clairs ....

  • Ils ne peuvent pas savoir avec certitude que le BigInteger les mises à niveau de performance ne casseront pas votre code.

  • Ils savent que le compilateur corrige podría changer le comportement du code (cassé) de certaines personnes. Mais il n'y a pas de moyen facile d'identifier ce code cassé. a priori .

Dans les deux cas, ils ne savent pas si les changements de PSU vont affecter vous . Les informations se trouvent dans les notes de mise à jour pour vous permettre de décider. Ils ne vous ont pas fourni d'arbre de décision explicite ... mais étant donné la nature des changements, l'approche la plus pratique est de "l'essayer".

Et cela explique aussi pourquoi "le groupe de personnes le plus compétent sur Terre 2 " ne peut pas non plus donner de conseils clairs. Il n'y a pas de réponse définitive.


1 - Critique peut signifier critique pour la sûreté, critique pour la sécurité, critique pour l'activité de votre organisation, critique pour l'activité de vos clients. À vous de décider.

2 - Tirez l'autre : il y a des cloches !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X