2011-01-14 26 views
19

Aunque no soy un verdadero desarrollador de Java (todavía), siento que debería saber esto ahora, pero todavía estoy muy confundido. Mi pregunta tiene dos partes:JDK, JRE, Java: Version Confusion!

  1. ¿Cuál es la diferencia entre la llamada (como lo he visto) "Sun JDK", OpenJDK, y GCJ?

  2. En varias ocasiones, he visto cada uno de los siguientes elementos, por lo que es muy confuso entender qué números de versión se aplican realmente a qué. ¿Puede alguien ayudarme a resolver esto?

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

Nota: hago entender la diferencia entre el JDK (Java Development Kit) y el Jav un entorno de tiempo de ejecución. Sin embargo, no estoy del todo claro sobre la diferencia entre JRE y JVM, aunque sé lo que es/hace la JVM.

+0

La parte que todavía me confunde es que OpenJDK parece ser un proyecto de enfoque en Oracle: http://openjdk.java.net/faq/ - Si eso es cierto, ¿por qué Oracle continuaría manteniendo dos versiones separadas? del JDK (OpenJDK, Oracle JDK)? –

Respuesta

8
  1. Sun JDK está hecho por Sun, OpenJDK es una aplicación de código abierto competidora. GCJ es el compilador de Java de GNU.
  2. Java 6 = Java 1.6 y JDK 6 = JDK 1,6

detalles del artículo 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

¿Cómo funciona el CGPJ se relacionan con el JDK de Sun/OpenJDK? No hay relación directa de la que tenga conocimiento. GCJ es un proyecto separado. ¿Cuáles son los méritos de usar un JDK sobre el otro? Pueden producirse problemas de licencia si redistribuye Sun JDK. Personalmente confío más en el Sun JDK, debido a su estabilidad. ¿No es OpenJDK un proyecto Sun? Si y no. Es un proyecto comunitario.

+0

Usted es el único que ha respondido AMBAS preguntas, Navi, pero creo que esperaba un poco más de detalles. ¿Cómo se relaciona el GCJ con Sun JDK/OpenJDK? ¿Cuáles son los méritos de usar un JDK sobre el otro? ¿No es OpenJDK un proyecto Sun? etc. –

+0

@Brian Actualicé mi respuesta. – Navi

+0

Gracias por los recursos adicionales, pero todavía estoy confundido sobre por qué Oracle estaría tan involucrado en OpenJDK si aún mantienen su propia implementación patentada. ¿Por qué necesitamos una fuente abierta Y una implementación propietaria separada si la misma empresa está en el corazón del desarrollo en ambas, y ambas están abiertas hasta cierto punto? –

2

Sol en los últimos have made some changes to the naming conventions por su lenguaje de programación. Originalmente tenías jdk1.1 y así sucesivamente. En jdk1.2 decidieron cambiar esto a Java 2. Por lo tanto, verán algunos libros más antiguos sobre Java 2.

Luego, por algún motivo misterioso, volvió a jdk1.3 y luego a jdk1.4. Cuando se lanzó jdk1.5 hicieron un esfuerzo conciente para cambiar los nombres de nuevo. Así que tuvimos Java 5. Desde que decidieron seguir con esto que has lo siguiente:

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

y (tal vez) así sucesivamente.

Así que con suerte eso explica esa parte. En tu pregunta Java6 == Java 1.6 == JDK 6 == JDK 1.6.

En cuanto a JVM vs JRE. El JRE contiene la JVM, así como las bibliotecas de clase y cualquier otra herramienta necesaria para ejecutar su programa Java. La JVM es simplemente el programa que interpreta su código de bytes y lo ejecuta en la máquina host.

7

Java 6 y Java 1.6 son lo mismo. Originalmente, Java se llamaba Java 1.X, pero a medida que pasaba el tiempo, el marketing de Sun descubrió que sería mejor señalar las mejoras significativas realizadas si dejaban caer el "1". parte. La primera versión para hacerlo fue Java 1.5, que se comercializó como Java 5.

JRE 6 es la distribución para el consumidor de Java 6. Es fácil de descargar desde http://java.com.

JDK 6 es la distribución de desarrollador de Java 6. Contiene herramientas como un compilador y admite más culturas que el JRE predeterminado. Debe descargarse desde http://javasoft.com.

JVM 11.0 es la versión del "intérprete" de Java dentro de Oracle JRE/JDK (otros proveedores usan números diferentes). Esto es similar a decir que Windows Vista es realmente Windows 6.0.6001.

3
  1. Básicamente son implementaciones diferentes del mismo conjunto de normas que describen cómo debería funcionar una Máquina Virtual Java.
  2. Las versiones de Java progresaron de forma normal de 1.0 a 1.4 cuando a un tipo inteligente de marketing se le ocurrió la idea de llamar a la siguiente versión "Java 5" en lugar de 1.5, pero por supuesto esto solo causó confusión, lo que se tradujo en la serie 6 (1.6) y probablemente continuará por algún tiempo. No tengo idea de lo que podría ser JVM 11.0. (¿Estás seguro de que no es 1.1.0? Sé que es una posibilidad remota, pero quién sabe).

Y la diferencia entre la JVM y el JRE. Estrictamente hablando, la JVM es simplemente la máquina que interpreta el bytecode de Java, mientras que un JRE también contiene todas las bibliotecas de clase estándar, los archivos de recursos, dll s (so s), y así sucesivamente.

1

Cuidado, GCJ no es una JVM certificada. Es el proyecto GNU Classpath para Java que tiene compatibilidad parcial con Java bajo una licencia GNU. Debe evitarlo a menos que esté seguro de que satisface sus necesidades y tiene una razón por la que no puede utilizar otra implementación completa de Java.

Cuestiones relacionadas