Perché Java versione 1.X viene chiamato Java X?


58

Ho visto che Java 1.2 è anche noto come Java 2. "Java 1.x" e "Java x" (ad esempio "Java 1.6" e "Java 6") si riferiscono alla stessa versione di Java?

E se sì, perché la necessità di questa dualità?


7
Ragioni di marketing?

14
Ancora meglio di Mozilla Firefox. 10+ versioni principali in meno di due anni.
Andrzej Bobak,

2
Sì, ragioni di marketing. Questa domanda SO riguarda lo stesso argomento.
Joachim Sauer

2
Si potrebbe dire diversamente: perché Sun (e ora Oracle) ha rilasciato importanti aggiornamenti (Java 5, 6, 7 e presto 8) come rilasci puntuali (1.5, 1.6, 1.7 e presto 1.8)?
Joachim Sauer

3
@AndrzejBobak Google Chrome è peggio, si avvicina a 20 versioni in 2 anni
Izkata

Risposte:


64

All'epoca Sun Microsystems aveva una brutta abitudine di passare attraverso numerose modifiche di denominazione per i suoi prodotti e di usare un nome confuso per cominciare.

Cosa c'è in un nome o cosa significa "Java"?

Inizialmente il termine "Java" veniva usato per descrivere indiscriminatamente:

  • la lingua ,
  • la piattaforma ,
  • e alcuni altri si riferivano a JVM e Java Class Lib anche come solo Java.

Numero interno ed esterno

Per quanto riguarda i numeri di versione, come altri hanno sottolineato, era in parte a causa del marketing e in parte perché sentivano semplicemente che Java aveva fatto tali progressi, un aggiornamento della versione principale era più adatto (per Java 1.2 / Java 2 e quando Java 1.5 / Java 5).

Quindi, ciò che chiamiamo Java 2 era in realtà Java 1.2 a 1.4. Java 3 e Java 4 non sono mai esistiti e abbiamo saltato direttamente a Java 5, come hanno cercato di spiegare qui (da questa pagina su denominazione e versioning ).

Probabilmente ero anche un po 'a non scherzare con la loro numerazione interna utilizzata nei loro sistemi di tracciamento e sviluppo. Tendo a pensarlo come 1.x = versione del linguaggio e X = lingua e versione del prodotto. Ha senso, poiché gli utenti normali non devono preoccuparsi di piccoli incrementi e aggiornamenti, in quanto incoraggiano gli aggiornamenti automatici e questi non dovrebbero introdurre alcuna modifica alla lingua o al bytecode.

Nota anche che diventa più strano quando guardi le versioni minori e aggiorni i numeri. Ad esempio, avevamo una Java 1.3.1 e successive Java 1.4.1 e 1.4.2.

aggiornamenti

Tuttavia, non ci sono stati 1.xy da allora, è sempre stato 1.x.0_UPDATE:

Si noti inoltre che verranno visualizzati anche gli aggiornamenti a cui si fa riferimento con una di queste convenzioni di denominazione:

  • come 1.5.0_22 o 1.7.0_04 (notare gli 0 di riempimento sulla versione di aggiornamento, allineandoli su 2 cifre),
  • ma anche 1.5.0u22 o 1.7.0u4 (nota che gli 0 di riempimento sono spariti, yay!).

E per ulteriore confusione e per stare al passo con la tradizione di Sun Microsystems, Oracle ora rilascia annunci come questo.

Nomi dei prodotti

Si noti inoltre che non solo hanno preso l'abitudine di modificare la numerazione, ma anche i nomi delle offerte di prodotti. Quindi, Java 2 ha J2SE (Java 2 Standard Edition), J2EE (Java 2 Enterprise Edition) e J2ME (Java 2 Mobile Edition). Dall'introduzione di Java 5, queste convenzioni e acronimi sono stati abbandonati (anche se alcuni hanno una capacità di recupero incredibilmente lunga, soprattutto grazie alle stupide agenzie di reclutamento che non hanno idea di cosa stiano parlando) a favore di Java SE, Java EE e Java ME , che a volte sono abbreviati - ma non dovrebbero ufficialmente - in JSE, JEE (abbastanza comune) e JME.

Leggere questa pagina per ulteriori informazioni sull'attuale sistema di controllo delle versioni utilizzato da Sun Microsystems e ora Oracle da Java 1.3.1 .

(Per i punti bonus, prova a cercare la cronologia di NetBeans ora per vedere che è stato rinominato alcune volte).

Non si conoscono

Stanno anche lottando per decidere se aggiornare o meno i riferimenti esistenti. Ad esempio, questa pagina sulle versioni precedenti utilizza il vecchio sistema di numerazione per le versioni precedenti, ma i nomi dei prodotti più recenti (Java SE 1.1, 1.2, 1.3 e 1.4 non sono stati rilasciati con questa convenzione di denominazione).

Forse ci stanno solo fregando per divertimento. Chissà?

Che dire di JVMS e JLS?

Si sono divertiti anche a nominare e numerare lì, ovviamente.

Le specifiche del linguaggio Java venivano rilasciate con un sistema di versioning del libro "edition", seguendo i numeri di prodotto. Così:

  • Java 1 aveva la sua "specifica del linguaggio Java",
  • Java 2 aveva la sua "Java Language Specification, 2nd edition".

Fin qui tutto bene.

Tranne che "Java Language Specification" è stato successivamente modificato solo quando sono state introdotte modifiche alla lingua in Java 5 (che tipo di senso, non pubblicheremo nuove edizioni di libri solo per divertimento). Poiché era la terza volta che lo stavano modificando, lo chiamavano (tada!) "Java Langauge Specification, 3rd edition".

Ma ovviamente, le persone hanno iniziato a chiedersi perché 1.3 e 1.4 non avevano una specifica di lingua o perché Java 5 fosse abbinato a una terza edizione delle specifiche di lingua.

Quindi, Java 7 ora lo chiama semplicemente "Java Language Specification, Java SE 7 Edition", anche se spesso ci riferiamo a questo come JLS7 per abbreviazione ed evitare RSI.


Non sono gli unici ...

Per ulteriore divertimento, guarda il fallimento della denominazione di Microsoft Windows RT o la follia di denominazione e numerazione di Apple con iPhone, iPad o persino iPod.


"nota gli 0 finali" Cosa 0 finali?
Samuel Edwin Ward

@SamuelEdwinWard: scusa, confusione linguistica lì. Intendo il prefisso 0 dopo il _ tra il numero di versione e il numero di aggiornamento.
haylem,

non credo sia questo il significato di Porte-Manteau o Portmanteau.
Grady Player

@GradyPlayer: hai perfettamente ragione, in realtà. Grazie per la segnalazione. (modifica: aggiornato l'intestazione, che era davvero piuttosto stupido da parte mia).
haylem,

5

La risposta breve: marketing.

Una risposta più lunga: la forma abbreviata (ad es. Java 6) è la cosiddetta "versione del prodotto" ed è il modo in cui Java viene commercializzato agli utenti e nei comunicati stampa, ecc.

La forma più lunga (ad es. Java 1.6.0) è la "versione per sviluppatori". Viene utilizzato internamente e verrà rilevato anche dagli sviluppatori Java (ad esempio java.version, la proprietà di sistema utilizza la forma lunga).

Vedi queste pagine per maggiori informazioni:


2

Perché il libro con il titolo "Learn Shiny New Java 3" sarà esaurito prima del libro con il titolo "Novità di Java 1.3".

Quindi sì, sono principalmente ragioni di marketing. D'altra parte, non vedo un crimine grave qui. Dopotutto, in alcuni prodotti, come Mozilla o Chrome, il numero di build principale viene costantemente incrementato e altri continuano a incrementare il numero di build minore, anche se, a volte, ci sono grandi cambiamenti in arrivo con ogni nuova versione.

Alcuni, come Apple, non vogliono lasciarci, utenti, con nomi noiosi come "Mac OS 10.6".

E Sun andava bene con N alias invece di introdurre la versione "Java Green Diplodocus".


4
Sidenote: non c'è mai stato un Java 3, è stato Java 2 SE 1.3 (o J2SE 1.3). Solo con Java 1.5 / 5.0 / 5 si sono sbarazzati dei numeri "1.x" nel marketing. Sì, anche se Java 1.2 (e 1.3 e 1.4!) Erano chiamati "Java 2" ... marketing, yay!
Joachim Sauer,

1

TheServerSide spiega la modifica da "Java 1.x" a "Java x" come segue :

Sun ha tagliato il "1" per modificare J2SE 1.5.0 in J2SE 5.0. Il motivo del cambiamento? Sun afferma che "si tratta dell'aggiornamento più significativo alla piattaforma Java e al linguaggio di programmazione dalla sua prima versione, circa un decennio fa", e che questa versione è degna.

Apparentemente si parlava di rinominare "J5SE", ma si pensava che il marchio J2EE significasse troppo per cambiare.

I numeri di versione non sono divertenti?

Leggi il comunicato stampa: Sun presenta la versione più significativa e avanzata della piattaforma Java in 5 anni

Nota: il link nella citazione sopra viene ucciso da Oracle . Per quanto ne so, è disponibile su prnewswire :

Sun Microsystems, Inc. (Nasdaq: SUNW), ideatore
e principale sostenitore della tecnologia Java (TM), ha presentato oggi Java 2 Platform
Standard Edition (J2SE (TM)) 5.0, l'aggiornamento più significativo alla
piattaforma Java e al linguaggio di programmazione da la sua versione iniziale quasi un decennio
fa. Conosciuta come Project Tiger, questa piattaforma Java aggiornata offre una straordinaria facilità
di sviluppo, nuove funzionalità di monitoraggio e gestione delle applicazioni,
un'attenzione dedicata al supporto client avanzato per il desktop del PC e
prestazioni da record ...


Per completezza, notare che lo stile della versione 1.X non è stato completamente abbandonato .

"Versione 1.5.0" utilizzata dagli sviluppatori

J2SE mantiene anche il numero di versione 1.5.0 (o 1.5) in alcuni punti che sono visibili solo agli sviluppatori o in cui il numero di versione viene analizzato dai programmi. Come accennato, 1.5.0 si riferisce esattamente alla stessa piattaforma e ai prodotti numerati 5.0 ...

Si noti inoltre che, come indicato nei commenti, il termine "J2SE" utilizzato in precedenza è stato successivamente modificato in "Java SE".


4
Fortunatamente hanno lasciato cadere i nomi "J2SE" (e successivamente "J2EE") a favore di "Java SE" e "Java EE". "J2SE 5.0" era solo sciocco.
Joachim Sauer
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.