Warum wird Java Version 1.X als Java X bezeichnet?

58

Ich habe gesehen, dass Java 1.2 auch als Java 2 bekannt ist. Verweisen "Java 1.x" und "Java x" (zum Beispiel "Java 1.6" und "Java 6") auf dieselbe Java-Version?

Und wenn ja, warum ist diese Dualität notwendig?

Federico Zancan
quelle
7
Marketing-Gründe?
14
Immer noch besser als Mozilla Firefox. 10+ Hauptversionen in weniger als zwei Jahren.
Andrzej Bobak
2
Ja, aus Marketinggründen. Diese SO-Frage betrifft dasselbe Thema.
Joachim Sauer
2
Man könnte es anders formulieren: Warum hat Sun (und jetzt Oracle) wichtige Updates (Java 5, 6, 7 und bald 8) als Point Releases (1.5, 1.6, 1.7 und bald 1.8) veröffentlicht?
Joachim Sauer
3
@AndrzejBobak Google Chrome ist schlimmer, es nähert sich 20 Versionen in 2 Jahren
Izkata

Antworten:

64

Sun Microsystems hatte damals die schlechte Angewohnheit, zahlreiche Namensänderungen für seine Produkte vorzunehmen und zunächst verwirrende Namen zu verwenden.

Was ist in einem Namen oder was bedeutet "Java"?

Ursprünglich wurde der Begriff "Java" verwendet, um unterschiedslos zu beschreiben:

  • die Sprache ,
  • die Plattform ,
  • und einige andere bezeichnen die JVM und die Java Class Lib ebenfalls als nur Java.

Interne und externe Nummer

Was die Versionsnummern betrifft, so wurde darauf hingewiesen, dass dies zum Teil aus Marketinggründen und zum Teil nur aus Gründen des Fortschritts von Java geschah. Ein umfangreiches Versions-Upgrade war besser geeignet (für Java 1.2 / Java 2 und für Java 1.5 / Java) 5).

Was wir Java 2 nennen, war Java 1.2 bis 1.4. Java 3 und Java 4 gab es nie, und wir sind direkt zu Java 5 übergegangen, da hier versucht wurde, dies zu erklären (ab dieser Seite zur Benennung und Versionierung ).

Ich war wahrscheinlich auch ein wenig in der Lage, mich nicht an der internen Nummerierung zu stören, die in ihren Tracking- und Entwicklungssystemen verwendet wird. Ich neige dazu, es als 1.x = Sprachversion und X = Sprach- und Produktversion zu betrachten. Dies ist sinnvoll, da sich normale Benutzer nicht um geringfügige Inkremente und Aktualisierungen kümmern müssen, da sie zu automatischen Aktualisierungen auffordern und diese keine Änderungen an der Sprache oder dem Bytecode hervorrufen sollten.

Beachten Sie auch, dass es seltsamer wird, wenn Sie kleinere Versionen und Aktualisierungsnummern betrachten. Zum Beispiel hatten wir Java 1.3.1 und später Java 1.4.1 und 1.4.2.

Aktualisierung

Es gab jedoch keine 1.xy seitdem, es war immer 1.x.0_UPDATE:

Beachten Sie auch, dass Sie auch Aktualisierungen sehen, auf die mit einer der folgenden Namenskonventionen verwiesen wird:

  • wie 1.5.0_22 oder 1.7.0_04 (beachten Sie die Auffüllungs-Nullen in der Update-Version, die auf zwei Ziffern ausgerichtet sind),
  • aber auch 1.5.0u22 oder 1.7.0u4 (beachten Sie, dass die Auffüllungs-Nullen weg sind, yay!).

Und um noch mehr Verwirrung zu stiften und mit der Tradition von Sun Microsystems Schritt zu halten, gibt Oracle solche Ankündigungen ab.

Produktnamen

Beachten Sie auch, dass sie es sich nicht nur zur Gewohnheit gemacht haben, die Nummerierung, sondern auch die Namen der Produktangebote zu ändern. Java 2 hat also J2SE (Java 2 Standard Edition), J2EE (Java 2 Enterprise Edition) und J2ME (Java 2 Mobile Edition). Seit der Einführung von Java 5 wurden diese Konventionen und Akronyme zugunsten von Java SE, Java EE und Java ME gestrichen (obwohl einige eine unglaublich lange Ausfallsicherheit aufweisen, hauptsächlich dank dummer Personalagenturen, die keine Ahnung haben, wovon sie sprechen) , die manchmal mit JSE, JEE (ziemlich häufig) und JME abgekürzt werden - aber offiziell nicht sollten.

Auf dieser Seite finden Sie weitere Informationen zum aktuellen Versionssystem, das von Sun Microsystems und jetzt Oracle seit Java 1.3.1 verwendet wird .

(Um Bonuspunkte zu erhalten, versuchen Sie, die Geschichte von NetBeans nachzuschlagen, um festzustellen, dass sie auch einige Male umbenannt wurde.)

Sie kennen sich nicht

Sie haben auch Schwierigkeiten zu entscheiden, ob sie vorhandene Referenzen aktualisieren sollen oder nicht. Zum Beispiel diese Seite über ältere Versionen verwendet das alte Nummerierungssystem für alte Versionen, aber die neueren Produktnamen (Java SE 1.1, 1.2, 1.3 und 1.4 wurden nicht mit dieser Namenskonvention veröffentlicht).

Vielleicht machen sie nur Spaß mit uns. Wer weiß?

Was ist mit JVMS und JLS?

Natürlich hatten sie auch dort Spaß beim Benennen und Nummerieren.

Die Java-Sprachspezifikation wurde früher mit einem Buch "Edition" -Versionssystem veröffentlicht, das die folgenden Produktnummern enthält. Damit:

  • Java 1 hatte seine "Java Language Specification",
  • Java 2 hatte seine "Java Language Specification, 2nd Edition".

So weit, ist es gut.

Mit der Ausnahme, dass die "Java-Sprachspezifikation" später erst überarbeitet wurde, als Sprachänderungen in Java 5 eingeführt wurden (was Sinn macht, Sie werden neue Bucheditionen nicht nur zum Spaß veröffentlichen). Da dies das dritte Mal war, dass sie es bearbeiteten, nannten sie es (tada!) "Java Langauge Specification, 3rd edition".

Aber offensichtlich fragten sich die Leute, warum 1.3 und 1.4 keine Sprachspezifikation hatten oder warum Java 5 mit einer 3. Ausgabe der Sprachspezifikation abgeglichen wurde.

Java 7 nennt es jetzt einfach "Java Language Specification, Java SE 7 Edition", obwohl wir es häufig als JLS7 bezeichnen, um Abkürzungen zu verwenden und RSI zu vermeiden.


Sie sind nicht die Einzigen ...

Für zusätzlichen Spaß schauen Sie sich die Namensfehler von Microsoft Windows RT oder den Wahnsinn von Apple bei der Benennung und Nummerierung von iPhones, iPads oder sogar iPods an.

Haylem
quelle
"beachte die nachgestellten 0en" Welche nachgestellten 0en?
Samuel Edwin Ward
@SamuelEdwinWard: Entschuldigung, Sprachverwechslung. Ich meine das Präfix 0s nach dem _ zwischen der Versionsnummer und der Update-Nummer.
Haylem
Ich denke nicht wirklich, dass Porte-Manteau oder Portmanteau das bedeuten.
Grady Player
@GradyPlayer: Eigentlich hast du vollkommen recht. Vielen Dank für den Hinweis. (edit: Header aktualisiert, das war ja ziemlich doof von mir).
Haylem
5

Die kurze Antwort: Marketing.

Eine längere Antwort: Die Kurzform (z. B. Java 6) ist die sogenannte "Produktversion" und beschreibt, wie Java an Benutzer und in Pressemitteilungen usw. vermarktet wird.

Die längere Form (zB Java 1.6.0) ist die "Entwicklerversion". Es wird intern verwendet und wird auch von Java-Entwicklern verwendet (z. B. Die java.versionSystemeigenschaft verwendet die Langform).

Weitere Informationen finden Sie auf diesen Seiten:

GenericJon
quelle
2

Weil das Buch mit dem Titel "Learn Shiny New Java 3" früher ausverkauft ist als das Buch mit dem Titel "What's new in Java 1.3".

Also ja, es sind hauptsächlich Marketinggründe. Andererseits sehe ich hier kein schweres Verbrechen. Schließlich wird in einigen Produkten wie Mozilla oder Chrome die Haupt-Build-Nummer ständig erhöht, und andere bleiben bei der Erhöhung der Neben-Build-Nummer, obwohl manchmal mit jeder neuen Version große Änderungen einhergehen.

Einige, wie Apple, möchten uns nicht verlassen, Benutzer mit langweiligen Namen wie "Mac OS 10.6".

Und früher war Sun mit N-Alias ​​einverstanden, anstatt das Release "Java Green Diplodocus" einzuführen.

shabunc
quelle
4
Anmerkung: Es gab nie Java 3, es war Java 2 SE 1.3 (oder J2SE 1.3). Erst mit Java 1.5 / 5.0 / 5 wurden die "1.x" -Nummern im Marketing beseitigt. Ja, obwohl Java 1.2 (und 1.3 und 1.4!) "Java 2" genannt wurden ... Marketing, yay!
Joachim Sauer
1

TheServerSide erklärt den Wechsel von "Java 1.x" zu "Java x" wie folgt :

Sonne hat die "1" abgeschnitten J2SE 1.5.0 auf J2SE 5.0 ändern. Der Grund für die Änderung? Sun behauptet, dass "dies das bedeutendste Upgrade der Java-Plattform und der Programmiersprache seit ihrer Erstveröffentlichung vor fast einem Jahrzehnt ist", und dass diese Version es wert ist.

Anscheinend gab es Gespräche, die in "J5SE" umbenannt werden sollten, aber es wurde angenommen, dass die Marke J2EE zu viel bedeutet, um geändert zu werden.

Machen Versionsnummern keinen Spaß?

Pressemitteilung lesen: Sun führt die bedeutendste und fortschrittlichste Java-Plattform-Version seit 5 Jahren ein

Hinweis Link im obigen Zitat wird von Oracle getötet . Soweit ich das beurteilen kann, ist es bei prnewswire erhältlich :

Sun Microsystems, Inc. (Nasdaq: SUNW), der Erfinder
und führende Verfechter der Java (TM) -Technologie, stellte heute die Java 2 Platform
Standard Edition (J2SE (TM)) 5.0 vor, das bedeutendste Upgrade der Java-
Plattform und der Programmiersprache seitdem seine erste Veröffentlichung vor fast einem Jahrzehnt
. Diese aktualisierte Java-Plattform, die als Project Tiger bekannt ist, bietet eine einfache
Entwicklung, neue Funktionen zur Anwendungsüberwachung und -verwaltung, eine umfassende
Client-Unterstützung für den PC-Desktop und eine rekordverdächtige
Leistung ...


Der Vollständigkeit halber sei angemerkt, dass der 1.X-Versionsstil nicht vollständig entfernt wurde .

"Version 1.5.0" Wird von Entwicklern verwendet

J2SE behält die Versionsnummer 1.5.0 (oder 1.5) auch an einigen Stellen bei, die nur für Entwickler sichtbar sind oder an denen die Versionsnummer von Programmen analysiert wird. Wie bereits erwähnt, bezieht sich 1.5.0 auf genau dieselbe Plattform und Produkte mit der Nummer 5.0 ...

Beachten Sie auch, dass der in den Kommentaren erwähnte Begriff "J2SE" später in "Java SE" geändert wurde.

Mücke
quelle
4
Glücklicherweise ließen sie die Namen "J2SE" (und später "J2EE") zugunsten von "Java SE" und "Java EE" fallen. "J2SE 5.0" war nur albern.
Joachim Sauer