2011-01-14 15 views
19

Anche se non sono un vero sviluppatore Java (ancora), sento che dovrei saperlo ora, ma sono ancora molto confuso. La mia domanda ha due parti:JDK, JRE, Java: Confusione versione!

  1. Qual è la differenza tra il cosiddetto (come ho visto) "Sun JDK", OpenJDK, e GCJ?

  2. In varie occasioni, ho visto ognuno dei seguenti elementi gettato in giro, rendendo molto confuso capire quali numeri di versione si applicano effettivamente a cosa. Qualcuno può aiutarmi a risolvere questo problema?

    • Java 6
    • Java 1.6
    • JDK 6
    • JDK 1.6
    • JRE 1.6
    • JVM 11,0

Nota: faccio capire la differenza tra il JDK (Java Development Kit) e il Jav un ambiente di runtime. Non sono del tutto chiaro sulla differenza tra JRE e JVM, anche se so cosa è/fa la JVM.

+0

La parte che ancora mi confonde davvero è che OpenJDK sembra essere un progetto focalizzato su Oracle: http://openjdk.java.net/faq/ - Se è vero, perché Oracle dovrebbe continuare a mantenere due versioni separate del JDK (OpenJDK, Oracle JDK)? –

risposta

8
  1. Sun JDK è realizzato da Sun, OpenJDK è un'implementazione open source in concorrenza. GCJ è il compilatore java GNU.
  2. Java 6 = Java 1.6 e JDK 6 = JDK 1,6

dettagli voce 1 http://en.wikipedia.org/wiki/OpenJDK https://stackoverflow.com/questions/1977238/why-should-i-use-the-sun-jdk-over-the-openjdk-or-vice-versa

http://en.wikipedia.org/wiki/GNU_Compiler_for_Java

modo l'GCJ riferisce al Sun JDK/OpenJDK? Non c'è alcuna relazione diretta di cui io sia a conoscenza. GCJ è un progetto separato. Quali sono i vantaggi dell'utilizzo di un JDK rispetto all'altro? I problemi di licenza possono verificarsi se si ridistribuisce Sun JDK. Personalmente ripongo più fiducia nel Sun JDK, grazie alla sua stabilità. Non è OpenJDK un progetto Sun? Sì e no. È un progetto di comunità.

+0

Sei l'unico a cui ho risposto ENTRAMBI LE DOMANDE, Navi, ma suppongo che stavo sperando in un piccolo dettaglio in più. In che modo GCJ si riferisce a Sun JDK/OpenJDK? Quali sono i vantaggi dell'utilizzo di un JDK rispetto all'altro? OpenJDK non è un progetto Sun? ecc. –

+0

@ Brian Ho aggiornato la mia risposta. – Navi

+0

Grazie per le risorse aggiunte, ma sono ancora confuso sul motivo per cui Oracle sarebbe così pesantemente coinvolto in OpenJDK se manterrà ancora la propria implementazione proprietaria. Perché abbiamo bisogno di un open source E di un'implementazione proprietaria separata se la stessa azienda è al centro dello sviluppo su entrambi, ed entrambi sono aperti in una certa misura? –

2

Sole negli anni have made some changes to the naming conventions per il loro linguaggio di programmazione. All'inizio avevi jdk1.1 e così via. A jdk1.2 hanno deciso di cambiarlo in Java 2. Quindi vedrete alcuni vecchi libri su Java 2.

Quindi per qualche misterioso motivo è tornato a jdk1.3 quindi jdk1.4. Quando è stato rilasciato jdk1.5, hanno fatto uno sforzo per modificare nuovamente i nomi. Così abbiamo avuto Java 5. Dato che hanno deciso di attaccare con questo si è il seguente:

jdk1.5 = Java 5 
    jdk1.6 = Java 6 
    jdk1.7 = Java 7 

e (forse) così via.

Quindi spero che questo spieghi questa parte. Nella tua domanda Java6 == Java 1.6 == JDK 6 == JDK 1.6.

Per quanto riguarda JVM vs JRE. JRE contiene la JVM, oltre a librerie di classi e qualsiasi altro strumento necessario per eseguire il tuo programma Java. La JVM è semplicemente il programma che interpreta il tuo codice byte e lo esegue sulla macchina host.

7

Java 6 e Java 1.6 sono uguali. Originariamente Java era denominato Java 1.X ma col passare del tempo Sun marketing scoprì che sarebbe meglio segnalare i significativi miglioramenti apportati se lasciavano cadere il "1." parte. La prima versione a farlo era Java 1.5, commercializzato come Java 5.

JRE 6 è la distribuzione consumer di Java 6. È facile da scaricare da http://java.com.

JDK 6 è la distribuzione per sviluppatori di Java 6. Contiene strumenti come un compilatore e supporto per più culture rispetto al JRE predefinito. Deve essere scaricato da http://javasoft.com.

JVM 11.0 è la versione dell'interprete Java all'interno di Oracle JRE/JDK (altri fornitori utilizzano numeri diversi). È come dire che Windows Vista è in realtà Windows 6.0.6001.

3
  1. Sono sostanzialmente implementazioni diverse dello stesso insieme di standard che descrivono come una Java Virtual Machine dovrebbe funzionare.
  2. Il versioning di Java è andato avanti in modo normale da 1,0 a 1,4 quando un ragazzo intelligente del marketing ha avuto l'idea di chiamare la versione successiva "Java 5" invece di 1.5, ma naturalmente questo ha causato solo confusione, che è stata riportata a la serie 6 (1.6) e probabilmente continuerà per qualche tempo. Non ho idea di cosa potrebbe essere JVM 11.0. (Sei sicuro che non sia 1.1.0? So che è un campo lungo ma chissà.)

E la differenza tra JVM e JRE. A rigor di termini, la JVM è solo la macchina che interpreta il bytecode Java, mentre un JRE contiene anche tutte le librerie di classi standard, i file di risorse, dll s (so s) e così via.

1

Attenzione, GCJ non è una JVM certificata. È il progetto GNU Classpath per Java che ha una compatibilità parziale con Java sotto una licenza GNU. Dovresti liberartene a meno che tu non sia sicuro che soddisfi le tue esigenze e hai una ragione per cui non puoi usare un'altra implementazione Java completa.

Problemi correlati