# UnterSchied OpenJDK vs JDK



## Generic1 (16. Feb 2012)

Hallo,

was ist eingentlich der Unterschied zwischen OpenJDK und JDK. Gibt es da signifikante unterschiede in den Klassen oder was ist da genau der Unterschied
lg
Geneirc1


----------



## jDennis79_nli (16. Feb 2012)

Generic1 hat gesagt.:


> Gibt es da signifikante unterschiede in den Klassen



Das würde dem Sinn einer Standardbibliothek irgendwie zuwiderlaufen... 

Naja, das OpenJDK ist eben eine freie Implementierung des Java-Compilers. Die Unterschiede, falls überhaupt vorhanden und relevant, lägen also in der Art und Weise, wie der Code in Bytecode übersetzt wird. Das kann in Einzelfällen die Performance beeinflussen, oder was auch immer sonst an der Struktur / Funktionsweise des Bytecode so dranhängt.

Würde ich mir aber nicht zu viele Gedanken drüber machen. Für den "Hausgebrauch" dürften die Unterschiede wahrscheinlich nicht einmal bemerkbar sein.


----------



## Spacerat (16. Feb 2012)

Also soweit ich das mitgeschnitten habe, ist das OpenJDK dazu da, Java auch auf anderen Systemen bzw. Platformen verfügbar zu machen, ausser denen, für die es z.B. die Binaries bereits auf java.oracle.com gibt. Die Dalvik-JVM der Android-Platform dürfte evtl. so ein Kandidat sein. Die Unterschiede dazu sind auf jeden Fall schon mal gravierend, zumal bei dieser ein ganz anderes Grafik-System statt AWT oder Swing verwendet wird.


----------



## Generic1 (16. Feb 2012)

Also JDK = JVM + Development Kit?


----------



## jDennis79_nli (16. Feb 2012)

Spacerat hat gesagt.:


> Also soweit ich das mitgeschnitten habe, ist das OpenJDK dazu da, Java auch auf anderen Systemen bzw. Platformen verfügbar zu machen, ausser denen, für die es z.B. die Binaries bereits auf java.oracle.com gibt. Die Dalvik-JVM der Android-Platform dürfte evtl. so ein Kandidat sein. Die Unterschiede dazu sind auf jeden Fall schon mal gravierend, zumal bei dieser ein ganz anderes Grafik-System statt AWT oder Swing verwendet wird.



Interessant. Warum gibt es dafür kein "offizielles" JDK? Gerade Android ist doch inzwischen eines der verbreitetsten Einsatzgebiete für Java!?



Generic1 hat gesagt.:


> Also JDK = JVM + Development Kit?



Im Wesentlichen, von der sprachlichen Ungenauigkeit abgesehen, ja.


----------



## Spacerat (16. Feb 2012)

Generic1 hat gesagt.:


> Also JDK = JVM + Development Kit?


Das trifft auf die Oracle JVMs (JREs) definitiv zu. Was aber noch zutrifft... beim OpenJDK sind afaik auch Quelltexte für native Librarys nebst Bytecode-Interpreter und oder -Compiler dabei.


jDennis79_nli hat gesagt.:


> Interessant. Warum gibt es dafür kein "offizielles" JDK? Gerade Android ist doch inzwischen eines der verbreitetsten Einsatzgebiete für Java!?


Gibt es doch... Android SDK | Android Developers


----------



## jDennis79_nli (16. Feb 2012)

Spacerat hat gesagt.:


> Gibt es doch... Android SDK | Android Developers



Dann war das kein gutes Beispiel für deine These.


----------



## Spacerat (16. Feb 2012)

jDennis79_nli hat gesagt.:


> Dann war das kein gutes Beispiel für deine These.


Ach, und wieso nicht? Das sich die von Android verwendete Dalvik-JVM von den Oracle-JVMs gravierend unterscheidet sagte ich bereits. Das der native Teil auf z.B. Smartphones anders aussehen muss als z.B. jener von Windows sollte auch klar sein. Das man das OpenJDK durchaus dazu verwenden kann, sich eine für seine Zwecke geeignete JVM zusammen zu schustern, lässt sich vllt. noch ahnen. Ob die Dalvik-JVM per OpenJDK entstanden ist ebenso, denn es wird anscheinend nirgendwo erwähnt.


----------



## bygones (16. Feb 2012)

mhm also bei google mal OpenJDK eingeben, erster Treffer: OpenJDK und da steht oben gleich "What is this?"...

vereinfacht gesagt - OpenJDK ist open source, JDK nicht


----------



## jDennis79_nli (16. Feb 2012)

Spacerat hat gesagt.:


> Ach, und wieso nicht? Das sich die von Android verwendete Dalvik-JVM von den Oracle-JVMs gravierend unterscheidet sagte ich bereits. Das der native Teil auf z.B. Smartphones anders aussehen muss als z.B. jener von Windows sollte auch klar sein. Das man das OpenJDK durchaus dazu verwenden kann, sich eine für seine Zwecke geeignete JVM zusammen zu schustern, lässt sich vllt. noch ahnen. Ob die Dalvik-JVM per OpenJDK entstanden ist ebenso, denn es wird anscheinend nirgendwo erwähnt.



Ich habe den Verdacht, dass wir aneinander vorbei geredet haben / reden. Deine ursprüngliche Aussage war ja, dass das OpenJDK unter anderem die Daseinsberechtigung hat, Java unter unüblichen Plattformen verfügbar zu machen - zumindest hatte ich es so verstanden, vielleicht hast du ja was ganz anderes gemeint.

Dein Beispiel dazu war dann Android. Deshalb hatte ich gefragt, warum hier kein Sun/Oracle JDK verfügbar ist, dass ein OpenJDK nötig ist. Immer noch unter der Voraussetzung, dass dies ein Hauptzweck des OpenJDK ist, wie ich deine Aussage verstanden hatte.

Klarer? Ich glaub' nicht, bin aber auch grade nur halb bei der Sache, sorry.


----------



## Spacerat (16. Feb 2012)

bygones hat gesagt.:


> vereinfacht gesagt - OpenJDK ist open source, JDK nicht


Eben... obwohl beim JDK selbst auch Quellen einiger Klassen (z.B. String, Number, Integer usw.) dabei liegen, heisst das nicht, dass man diese auch ändern darf (bzw. man tut sich nur selbst einen Gefallen, wenn man es lässt).


----------



## theuserbl (16. Feb 2012)

Generic1 hat gesagt.:


> was ist eingentlich der Unterschied zwischen OpenJDK und JDK. Gibt es da signifikante unterschiede in den Klassen oder was ist da genau der Unterschied



Als Java noch Sun gehörte, plante Sun Java als OpenJDK OpenSource zu machen.
Man wählte hierfür den Namen OpenJDK.
Als Lizenz wählte man die Lizenz der freien Reimplemetierung GNU Classpath. Wodrauf das GNU Classpath Projekt selber bald eingestellt wurde.

Da das proprietäre JDK auch einigen Code enthält, der von Drittanbietern stammt, die ihren Code nicht öffnen wollen, baut OpenJDK auf closed source Bibliotheken auf. Die Idee von Sun (nun Oracle) war, JDK vollständig als OpenJDK zu öffnen. Wegen dem Third-Party-Code ging es aber nicht. Das heißt es gab einen Teil (ich glaube über 95%) des Codes den Sun als OpenSource freigab und einen weiteren Teil der als ClosedSource-Binaries für OpenJDK zur Verfügung stand.

Da die GNU Classpath Entwickler sowieso Java nachprogrammierten, fingen sie nun unter dem IcedTea Projekt an, die ClosedSource Teile zu reimplementieren. Desweiteren integriert Sun/Oracle hin und wieder auch Code von IcedTea in OpenJDK.
Auf den meisten Linux-Distributionen (die ein 100% OpenSource-Java einsetzen) läuft OpenJDK in Kombination mit IcedTea.


```
$ java -version
java version "1.6.0_22"
OpenJDK Runtime Environment (IcedTea6 1.10.4) (suse-0.3.2-x86_64)
OpenJDK 64-Bit Server VM (build 20.0-b11, mixed mode)
$
```

Sun hatte früher die Anfänge von JDK 7 als OpenJDK7 zu OpenSource gemacht. Da aber über Jahre noch immer JDK6 aktuell war, wurde dieses OpenJDK7 zu einem OpenJDK6 gestutzt. OpenJDK7 gab es parallel dazu weiterhin. Somit hatten JDK6 und OpenJDK6 verschiedene Ursprünge und wurden auch getrennt voneinander gepflegt. Auch galt, daß Bugs die im JDK6 waren, nicht unbedingt auch im OpenJDK6 waren und umgekehrt.
Seit JDK7, basiert JDK7 auf OpenJDK7. JDK7 ist gewissermaßen OpenJDK7 + zusätzliche Bibliotheken (unter Windows das komplette AWT und so) bzw. Bibliotheken die bei der OpenSource reimplementierung noch nicht so gut sind, bei denen werden die altem closed source Bibliotheken verwendet.
Die zusätzlichen Bibliotheken wären wenn auch nur Bibliotheken, die noch nicht richtig als OpenSource existieren.

Also letztendlich ist der Unterschied zwischen JDK und OpenJDK gering und wird immer kleiner.

Grüße
theuserbl


----------

