Sí, puede ser confuso.
No lo solicitó, pero comenzaré desde aquí. La JVM es la Máquina Virtual Java. Es un programa que puede leer código compilado de Java (los archivos .class y los archivos .jar que son simplemente archivos .zip que contienen un grupo de archivos .class empaquetados juntos) y ejecutarlo. Hay muchas JVM, por ejemplo, necesita una JVM para Windows, una para Linux, una para OSX, etc., pero también hay muchas JVM alternativas, JVM para dispositivos integrados, etc. (muchas estarán en desacuerdo y afirmarán que la JVM es solo una, y es una especificación. Sin embargo, comúnmente un administrador de sistema dirá "la JVM" para indicar el binario real que se está ejecutando en el servidor).
No solicitó lo siguiente tampoco. El JRE es el entorno de tiempo de ejecución de Java. Incluye todo lo necesario para ejecutar una aplicación Java, que es la propia JVM, la biblioteca estándar y un montón de otros archivos. La biblioteca estándar es en sí misma muy importante, ya que contiene muchas cosas útiles que usará al desarrollar aplicaciones Java. Contiene todas las cosas en java. * Paquetes y algunas cosas privadas en paquetes com.sun, com.oracle.
Las diferentes versiones de Java (1.0, 1.1, etc., hasta 1.7, también conocidas como Java 7) generalmente contienen mejoras tanto para la JVM como para la biblioteca estándar, por lo que las dos necesitan ejecutarse juntas, y empacados juntos en el JRE.
Si está ejecutando cualquier programa Java en su computadora, tiene un JRE instalado.
El JDK es el kit de desarrollo de Java. Contiene el JRE, así como muchas otras cosas útiles para desarrollando aplicaciones Java.Eso incluye obviamente el compilador (que también está contenido en el JRE por alguna buena razón, pero puede ignorar este hecho ahora), la utilidad JAR para crear archivos .jar, muchas herramientas para "descompilar" archivos de clase, inspeccionar archivos .jar, reempaquetarlos, etc.
También suele contener documentación para la biblioteca estándar y también todas las fuentes de la biblioteca estándar, ya que son útiles para que los desarrolladores las lean e inspecten. Si desea desarrollar seriamente aplicaciones Java, necesita el JDK.
Cuando hablamos de JavaSE, JavaEE, JavaME etc., esas son las llamadas "ediciones". Básicamente, ya que el ecosistema de Java es enorme, Sun decidió ofrecer Java en distintas ediciones:
- JavaSE: es la edición estándar, por lo general es un buen ajuste para el software del lado del cliente, las aplicaciones normales, etc.
- JavaME: es la edición móvil, es con lo que se hicieron pequeños juegos en teléfonos antiguos, pero básicamente es una versión "más pequeña" de Java adecuada para procesadores de muy baja capacidad.
- JavaEE: es la "edición empresarial". Se utiliza para desarrollar cosas del lado del servidor, por lo que incluye muchas bibliotecas utilizadas en el lado del servidor.
En cuanto a la numeración, la ensuciaron bastante. En realidad, después de Java 1.4 crearon el JCP, para involucrar a la comunidad en el desarrollo de Java y, a partir de Java 1.5, se denomina oficialmente "Java 5", a pesar de que la mayoría lo llama 1.5. Además, Java 1.2 era Java 2, pero todos los que conozco que no eran working in Sun at that time always called it 1.2.
Cuando descargas Java (digamos Java 7), viene con la JVM. –
Sí, la JVM es uno de los componentes de JRE. El JDK contiene también el JRE. Entonces sí, también tendrás la JVM. En realidad, "la JVM" (como se pretende aquí, no la especificación de JVM, el binario real) es el programa "java.exe" y son las DLL que se ven cuando se inicia un programa java (o el comando java y .so relacionado si bajo * nix o osx) –
Muchas gracias, realmente explicó mucho :) –