J'ai vu que Java 1.2 est également connu sous le nom Java 2. Faites "Java 1.x" et "Java x" (par exemple "Java 1.6" et "Java 6") fait référence à la même version de Java?
Et si oui, pourquoi la nécessité de cette dualité?
Sun Microsystems avait à l'époque une mauvaise habitude de subir de nombreux changements de nom pour ses produits et d'utiliser un nom déroutant pour commencer.
À l'origine, le terme "Java" était utilisé pour décrire sans discernement:
En ce qui concerne les numéros de version, comme d'autres l'ont souligné, c'était en partie à cause du marketing et en partie parce qu'ils avaient simplement l'impression que Java avait fait de tels progrès, une mise à niveau majeure de la version était mieux adaptée (pour Java 1.2/Java 2, et lorsque Java 1.5/Java 5).
Donc, ce que nous appelons Java 2 était en fait Java 1,2 à 1,4. Java 3 et Java 4 n'ont jamais existé, et nous sommes passés directement à Java 5, comme ils ont essayé d'expliquer ici (à partir de ce page sur dénomination et versioning ).
J'étais aussi probablement un peu aussi bien pour ne pas jouer avec leur numérotation interne utilisée dans leurs systèmes de suivi et de développement. J'ai tendance à penser à cela comme 1.x = version linguistique et X = langue et version du produit. Cela a du sens, car les utilisateurs normaux n'ont pas à se soucier des incréments et des mises à jour mineurs, car ils encouragent les mises à jour automatiques, et ceux-ci ne doivent pas introduire de modifications dans la langue ou le bytecode.
Notez également que cela devient plus étrange lorsque vous regardez les versions mineures et les numéros de mise à jour. Par exemple, nous avions un Java 1.3.1 et plus tard Java 1.4.1 et 1.4.2.
Cependant, il n'y a pas eu de 1.x.y depuis, il a toujours été 1.x.0_UPDATE:
Notez également que vous verrez également des mises à jour référencées avec l'une de ces conventions de dénomination:
Et pour plus de confusion et pour suivre la tradition de Sun Microsystems, Oracle abandonne désormais des annonces comme celle-ci.
Notez également que non seulement ils ont pris l'habitude de changer la numérotation, mais aussi les noms des offres de produits. Ainsi, Java 2 ont J2SE (Java 2 Standard Edition), J2EE (Java 2 Enterprise Edition) et J2ME (Java 2 Mobile Edition). Depuis l'introduction de Java 5, ces conventions et acronymes ont été abandonnés (bien que certains aient une résilience incroyablement longue, principalement grâce aux agences de recrutement stupides qui n'ont aucune idée de ce dont ils parlent) en faveur de Java SE, Java EE et Java ME, qui sont parfois abrégés - mais ne devraient pas officiellement - en JSE, JEE (assez courant) et JME.
Vous pouvez lire cette page pour plus d'informations sur le système de versioning actuel utilisé par Sun Microsystems et maintenant Oracle depuis Java 1.3.1 .
(Pour les points bonus, essayez de consulter l'historique de NetBeans maintenant pour voir qu'il a également été renommé plusieurs fois).
Ils ont également du mal à décider s'ils doivent ou non mettre à jour les références existantes. Par exemple, cette page sur les anciennes versions utilise l'ancien système de numérotation pour les anciennes versions, mais les noms de produits plus récents (Java SE 1.1, 1.2, 1.3 et 1.4 n'ont pas été publiés avec cette convention de dénomination).
Peut-être qu'ils se contentent de nous baiser pour le plaisir. Qui sait?
Bien sûr, ils s'amusaient aussi à nommer et à numéroter.
Java Language Specification était publié avec un système de versioning "édition" du livre, suivant les numéros de produit. Donc:
Jusqu'ici tout va bien.
Sauf que la "spécification du langage Java" n'a été rééditée plus tard que lorsque des changements de langue ont été introduits dans Java 5 (ce qui est logique, vous ne publierez pas de nouvelles éditions de livres juste pour le plaisir). Comme c'était la 3ème fois qu'ils l'éditaient, ils l'ont appelé (tada!) "Java Langauge Specification, 3rd edition".
Mais évidemment, les gens ont commencé à se demander pourquoi les versions 1.3 et 1.4 n'avaient pas de spécification de langue, ou pourquoi Java 5 était associé à une 3e édition de la spécification de langue.
Ainsi, Java 7 ne fait désormais que l'appeler "Java Language Specification, Java SE 7 Edition", bien que nous l'appelions souvent JLS7 par raccourci et pour éviter RSI.
Pour plus de plaisir, regardez l'échec de la dénomination de Microsoft Windows RT, ou la folie de la dénomination et de la numérotation d'Apple avec les iPhones, iPads ou même iPods.
La réponse courte: le marketing.
Une réponse plus longue: La forme courte (par exemple Java 6) est la soi-disant "version du produit" et comment Java est commercialisé auprès des utilisateurs et sous presse) versions, etc.
La forme la plus longue (par exemple Java 1.6.0) est la "version développeur". Elle est utilisée en interne et sera également rencontrée par Java développeurs (par exemple Le Java.version
la propriété système utilise la forme longue).
Consultez ces pages pour plus d'informations:
Parce que le livre avec le titre "Learn Shiny New Java 3" sera vendu plus tôt que le livre avec le titre "What's new in Java 1.3").
Alors oui, c'est principalement pour des raisons de marketing. D'un autre côté, je ne vois pas de crime grave ici. Après tout, dans certains produits, comme Mozilla ou Chrome, le numéro de build majeur est constamment incrémenté, et d'autres s'en tiennent à l'incrémentation du numéro de build mineur, bien que, parfois, de grandes modifications surviennent à chaque nouvelle version.
Certains, comme Apple, ne veulent pas nous quitter, utilisateurs, avec des noms ternes comme "Mac OS 10.6".
Et Sun était OK avec l'alias N au lieu d'introduire la version "Java Green Diplodocus".
TheServerSide explique le changement de "Java 1.x" à "Java x" comme suit :
Sun a coupé le "1". pour changer J2SE 1.5.0 en J2SE 5.0. La raison du changement? Sun affirme que "c'est la mise à niveau la plus importante de la plate-forme Java et du langage de programmation depuis sa sortie initiale il y a près d'une décennie") et que cette version en vaut la peine.
Apparemment, il y avait des pourparlers pour renommer "J5SE", mais on pensait que la marque J2EE signifie trop de choses à changer.
Les numéros de version ne sont-ils pas amusants?
Lire le communiqué de presse: Sun présente le plus important et le plus avancé Java version de la plateforme dans 5 ans
Notez que le lien dans la citation ci-dessus est tué par Oracle . Pour autant que je sache, il est disponible à prnewswire :
Sun Microsystems, Inc. (Nasdaq: SUNW), le créateur
et grand défenseur de la technologie Java (TM), a présenté aujourd'hui la plateforme Java 2
Standard Edition (J2SE (TM)) 5.0, la mise à niveau la plus importante de Java
plateforme et langage de programmation depuis sa sortie initiale près d'une décennie
depuis. Connue sous le nom de Project Tiger, cette plateforme mise à jour Java offre une grande facilité
de développement, de nouvelles fonctionnalités de surveillance et de gestion des applications, un
focus dédié sur le support client riche pour le bureau PC et le record
performance...
Par souci d'exhaustivité, notez que le style de la version 1.X n'a pas été complètement supprimé .
"Version 1.5.0" utilisée par les développeurs
J2SE conserve également le numéro de version 1.5.0 (ou 1.5) à certains endroits qui ne sont visibles que par les développeurs, ou où le numéro de version est analysé par les programmes. Comme mentionné, 1.5.0 se réfère exactement à la même plate-forme et aux produits numérotés 5.0 ...
Notez également que comme pointé dans les commentaires le terme "J2SE" utilisé ci-dessus a été changé plus tard en "Java SE".