¿Cuál es la diferencia entre default-jdk, ecj, gcj y openjdk?

23

Esta mañana, intenté instalar algo y me encontré con una declaración como esta:

The program 'javac' can be found in the following packages:
 * default-jdk
 * ecj
 * gcj-4.6-jdk
 * gcj-4.7-jdk
 * openjdk-7-jdk
 * openjdk-6-jdk
Try: sudo apt-get install <selected package>

¿Cuál es la diferencia entre default-jdk, ecj, gcj y openjdk?

Gracias por adelantado.

rɑːdʒɑ
fuente
1
También hay bromas.
Pacerier

Respuestas:

16

default-jre

Este es un paquete simple que depende de openjdk-7-jre (y es básicamente equivalente a openjdk-7-jre ) y default-jre-headless . Instala el "Tiempo de ejecución estándar compatible con Java o Java", que es OpenJDK 7 JRE.

Este paquete apunta al tiempo de ejecución de Java, o tiempo de ejecución compatible con Java recomendado para la arquitectura i386, que es openjdk-7-jre para i386.

Información del
paquete Dependencias del paquete (descarado)

ecj

Este es el "compilador independiente de Eclipse Java". Instalarlo no instalará Eclipse, ya que es un paquete independiente (vea el enlace de dependencias a continuación). Contiene "una versión independiente del compilador Eclipse JDT que se distribuye como parte de Eclipse" y es compatible con Java 1.3 a 1.7.

Este paquete proporciona una versión independiente del compilador Eclipse JDT que se distribuye como parte de Eclipse. Pasa el JCK (Kit de compatibilidad de Java) y es compatible con Java 1.3, 1.4, 1.5, 1.6 y 1.7.

Información del
paquete Dependencias del paquete (descarado)

gcj-4.6-jdk

(gcj-4.7-jdk es lo mismo pero para Java 7)

Esta es una interfaz para el compilador GCC para compilar de forma nativa el código de bytes de Java y los archivos de origen.

GCJ es una interfaz para el compilador GCC que puede compilar de forma nativa tanto los archivos fuente de código de bytes (Java) como los de código de bytes. El compilador también puede generar archivos de clase. Otras herramientas de desarrollo de Java de classpath se incluyen en este paquete.

El paquete también contiene una colección de scripts de envoltura y enlaces simbólicos. Está destinado a proporcionar una interfaz similar a Java-SDK para el conjunto de herramientas GCJ.

Se suponía que era una alternativa de código abierto para el compilador de código cerrado Oracle Java. Parece que ahora está mayormente obsoleto y desactualizado (no actualizado), vea los enlaces a continuación (particularmente las últimas actualizaciones en la página de inicio de GCJ).

Información del paquete

¿El compilador Java (GCJ) de GNU está muerto? -
Página de inicio de Stack Overflow GCJ en gnu.org (Actualización: el enlace ya no está, pero GCJ wiki todavía está disponible

openjdk-6-jdk

(openjdk-7-jdk es lo mismo pero para Java 7)

Una versión de código abierto de la plataforma Java.
De la Wiki :

El objetivo principal del proyecto OpenJDK es producir una implementación de código abierto de la Plataforma Java SE (6 y 7). Esta es la versión predeterminada de Java que usa Ubuntu y es la más fácil de instalar.

Resumen del paquete:

OpenJDK es un entorno de desarrollo para crear aplicaciones, applets y componentes utilizando el lenguaje de programación Java.

Los paquetes se crean utilizando el soporte de compilación IcedTea y los parches del proyecto IcedTea.

Información del paquete


Además, en su pregunta no se mencionó Oracle Java (porque no está en los repositorios predeterminados), que enumeraré a continuación para completar

oracle-java7-installer

(nombre del paquete de Web Up8 PPA , distribuido por Oracle en .tar.gz)

La implementación "oficial" de código cerrado de Java por Oracle (anteriormente Sun). No alojado en los repositorios oficiales debido a problemas de licencia. Fue puesto a disposición por Web Up8 como un script que lo descarga e instala por usted.

Cómo instalar - Web Up8

kiri
fuente
¿significa que la instalación de ecj instalará Eclipse + Java?
rɑːdʒɑ
¿Cuál es el propósito de GCJ especialmente?
rɑːdʒɑ
@rajagenupula Ver mis ediciones ↑↑
kiri
4

Yo tuve el mismo problema. Lo que encontré fue que están teniendo diferencias entre sí.

Ambos default-jdky openjdkson más similares, ya que tienen los mismos códigos API de Java. Pero la diferencia está en la plataforma objetivo.

  • openjdk: es el más estable . Fue diseñado para todas las plataformas . Básicamente está dirigido a plataformas de código abierto .

  • default-jdk: no es estable . Fue diseñado con el objetivo de ciertas plataformas de destino . Básicamente está dirigido a plataformas cerradas . (Más tarde estuvo disponible para código abierto) JRE s están en esto.

Pero otros son totalmente diferentes: son solo compiladores . Se sabía que vinieron porque, al principio, Java no estaba disponible para Open-Source. Solo se lanzaron compiladores cetain para cosas como Eclipse.

  • gcj -jdk: (Compilador GNU para Java). Es un compilador para Java en GNU. (Usado por Java)

  • ecj: (Compilador Java Eclipse) Es el compilador Java utilizado por Eclipse.

Este ecj no es ECJ, que es Java Evolutionary Computation Toolkit


fuente
Gracias por pasar por aquí, mire los comentarios anteriores que hice sobre la respuesta de compañeros e intente resolverlos por favor.
rɑːdʒɑ