Was ist der Unterschied zwischen default-jdk, ecj, gcj und openjdk?

23

Heute Morgen habe ich versucht, etwas zu installieren und bin auf eine Aussage wie diese gestoßen:

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>

Was ist der Unterschied zwischen default-jdk, ecj, gcj und openjdk?

Danke im Voraus.

rɑːdʒɑ
quelle
1
Es gibt auch Jikes.
Pacerier

Antworten:

16

default-jre

Dies ist ein einfaches Paket, das von openjdk-7-jre abhängt (und damit im Grunde genommen Openjdk-7-jre entspricht ) und von default-jre-headless . Es installiert die "Standard Java oder Java kompatible Runtime", OpenJDK 7 JRE.

Dieses Paket verweist auf die Java-Laufzeit oder auf eine Java-kompatible Laufzeit, die für die i386-Architektur empfohlen wird. Diese ist openjdk-7-jre für i386.

Paketinformationen
Paketabhängigkeiten (saucy)

ecj

Dies ist der "eigenständige Eclipse Java-Compiler". Bei der Installation von Eclipse wird Eclipse nicht installiert, da es sich um ein eigenständiges Paket handelt (siehe Link zu Abhängigkeiten unten). Es enthält "eine eigenständige Version des Eclipse JDT-Compilers, der als Teil von Eclipse vertrieben wird" und ist mit Java 1.3 bis 1.7 kompatibel.

Dieses Paket enthält eine eigenständige Version des Eclipse JDT-Compilers, der als Teil von Eclipse vertrieben wird. Es besteht das JCK (Java Compatibility Kit) und ist kompatibel mit Java 1.3, 1.4, 1.5, 1.6 und 1.7.

Paketinformationen
Paketabhängigkeiten (saucy)

gcj-4.6-jdk

(gcj-4.7-jdk ist dasselbe, aber für Java 7)

Dies ist ein Frontend für den GCC-Compiler zum nativen Kompilieren von Java-Bytecode- und -Quelldateien.

GCJ ist ein Front-End des GCC-Compilers, der Java (tm) -Quell- und Bytecode-Dateien nativ kompilieren kann. Der Compiler kann auch Klassendateien generieren. Andere Java-Entwicklungstools von classpath sind in diesem Paket enthalten.

Das Paket enthält auch eine Sammlung von Wrapper-Skripten und Symlinks. Es soll eine Java-SDK-ähnliche Schnittstelle für das GCJ-Toolset bereitstellen.

Es sollte eine Open-Source-Alternative zum Closed-Source-Oracle-Java-Compiler sein. Es scheint jetzt größtenteils veraltet und veraltet zu sein (nicht aktualisiert), siehe Links unten (insbesondere die letzten Aktualisierungen auf der GCJ-Homepage).

Paketinformationen

Ist der Java Compiler (GCJ) von GNU tot? - Stack Overflow
GCJ-Homepage auf gnu.org (Update: Der Link ist jetzt weg, aber das GCJ-Wiki ist noch verfügbar

openjdk-6-jdk

(openjdk-7-jdk ist dasselbe, aber für Java 7)

Eine Open Source-Version der Java-Plattform.
Aus dem Wiki :

Das Hauptziel des OpenJDK-Projekts besteht darin, eine Open-Source-Implementierung der Java SE-Plattform (6 und 7) zu erstellen. Dies ist die Standardversion von Java, die Ubuntu verwendet und am einfachsten zu installieren ist.

Paketübersicht:

OpenJDK ist eine Entwicklungsumgebung zum Erstellen von Anwendungen, Applets und Komponenten mit der Programmiersprache Java.

Die Pakete werden mithilfe der IcedTea-Buildunterstützung und der Patches aus dem IcedTea-Projekt erstellt.

Paketinformationen


Ebenfalls nicht in Ihrer Frage erwähnt wurde Oracle Java (da es nicht in den Standard-Repos enthalten ist), das ich der Vollständigkeit halber weiter unten auflisten werde

Oracle-Java7-Installer

(Paketname von Web Up8 PPA , vertrieben von Oracle in .tar.gz)

Die offizielle Java-Implementierung von Oracle (vormals Sun). Aufgrund von Lizenzproblemen nicht in den offiziellen Repos gehostet. Es wurde von Web Up8 als Skript zur Verfügung gestellt, das es für Sie herunterlädt und installiert.

So installieren Sie - Web Up8

kiri
quelle
Bedeutet das, dass bei der Installation von ecj Eclipse + Java installiert wird?
Donnerstag,
Was ist der besondere Zweck von GCJ?
Donnerstag,
@rajagenupula Siehe meine Änderungen ↑↑
kiri
4

Ich hatte das gleiche problem Was ich fand, war, dass sie Unterschiede von einem zum anderen haben.

Sowohl default-jdkund openjdksind ähnlich wie sie gleiche Java - API - Codes haben. Der Unterschied liegt jedoch in der Zielplattform.

  • openjdk: Ist das stabilste . Es wurde für alle Plattformen entwickelt . Es zielt im Wesentlichen auf Open-Source- Plattformen ab.

  • default-jdk: Ist nicht stabil . Es wurde für bestimmte Zielplattformen entwickelt . Es zielt im Wesentlichen auf geschlossene Plattformen ab (war später für Open-Source verfügbar).

Aber andere sind ganz anders: Sie sind nur Compiler . Es war bekannt, dass sie kamen, weil Java zu Beginn nicht für Open-Source verfügbar war. Nur Cetain-Compiler wurden für Dinge wie Eclipse freigegeben.

  • gcj -jdk: (GNU Compiler für Java). Es ist ein Compiler für Java in GNU. (Wird von Java verwendet)

  • ecj: (Eclipse Java Compiler) Ist der von Eclipse verwendete Java-Compiler.

Dieser EuGH ist kein EuGH, sondern ein Java Evolutionary Computation Toolkit


quelle
Vielen Dank, dass Sie vorbeischauen. Sehen Sie sich die obigen Kommentare an, die ich zu der Antwort von Kollegen abgegeben habe, und versuchen Sie, diese zu lösen.
Donnerstag,