416 votes

Liste des principaux numéros de version du format de fichier de la classe Java ?

J'ai vu cette liste des numéros de version majeure de Java dans un autre article :

  • Java 1.2 utilise la version majeure 46
  • Java 1.3 utilise la version majeure 47
  • Java 1.4 utilise la version majeure 48
  • Java 5 utilise la version majeure 49
  • Java 6 utilise la version majeure 50
  • Java 7 utilise la version majeure 51
  • Java 8 utilise la version majeure 52
  • Java 9 utilise la version majeure 53
  • Java 10 utilise la version majeure 54
  • Java 11 utilise la version majeure 55
  • Java 12 utilise la version majeure 56
  • Java 13 utilise la version majeure 57
  • Java 14 utilise la version majeure 58
  • Java 15 utilise la version majeure 59
  • Java 16 utilise la version majeure 60
  • Java 17 utilise la version majeure 61
  • Java 18 utilise la version majeure 62
  • Java 19 utilise la version majeure 63

D'où vient cette liste ? Existe-t-il une référence spécifique à ce sujet ? De préférence quelque chose qui indique également les versions mineures ?

2voto

Scott Carlson Points 951

J'utilise javap dans mon .lessfilter pour les classes, afin de pouvoir décompiler et savoir directement avec quelle version elles ont été compilées.

*.class)
echo "/** "
javap -verbose "$1" | grep version | sed -e 's/50/Java6/' -e 's/51/Java7/' -e 's/52/Java8/' -e 's/53/Java9/' -e 's/54/Java10/' -e 's/55/Java11/' -e 's/56/Java12/' -e 's/57/Java13/'
echo " **/"
java -jar ~/bin/cfr-0.150.jar "$1" | enscript --color --language=ansi --highlight=java -o - -q
;;

(j'ai essayé d'ajouter un commentaire à la réponse précédente, mais je n'ai pas réussi à formater le code, et j'ai pensé que cela pourrait être utile à d'autres).

2voto

Ian W Points 1089

(Il s'agit plus d'un long commentaire que d'une réponse )

La question portait sur "l'origine de la liste des versions".

Cette question a été traitée dans cette réponse qui fait référence à la spécification JAVA SE sur : "Le class Format de fichier " . Il semble que cela fasse plutôt autorité (il est également référencé dans la Wiki pour les valeurs de l'octet 6 (version majeure)) et devrait être la réponse acceptée.


Plusieurs réponses semblent se concentrer sur la façon de déterminer la valeur en utilisant javap ou de ne pas l'utiliser. Ces questions devraient être distinctes. Néanmoins, un non javap Le moyen de trouver la version est la commande unix file . file lit le magic qui est spécifié dans le Structure de ClassFile .

ie : file myClass.class ou plus élégamment, file -b myClass.class | awk -F',' '{print $NF}'

eg :

$ find * -name "*.class" -exec file -b {} \; | awk -F',' '{print $NF}' | sort -u
 version 45.3
 version 50.0 (Java 1.6)
 version 52.0 (Java 1.8)

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