2014-06-18 18 views
23

Non riesco a capire alcune delle nozioni di base di Java JRE.Differenza tra openjdk-6-jre, openjdk-6-jre-headless, openjdk-6-jre-lib

Ho bisogno di eseguire il codice Java in un sistema embedded e per questo ho bisogno di un Java Runtime Environment minimo installato in un kernel Linux, vale a dire, il pacchetto minimo necessario per l'esecuzione dei binari Java. Penso che non sia possibile farlo solo con una JVM (il pacchetto JRE è necessario, ho sbagliato qui?)

Il fatto è che quando si guardano i repository Debian non capisco le differenze tra pacchetti openjdk-6-jre, openjdk-6-jre-headless e openjdk-6-jre-lib. I programmi Java verranno eseguiti solo con il primo? o sono necessari i tre di loro?

Questo è un problema in quanto vi è una grande differenza di dimensioni (MB) tra di loro.

risposta

21

Sei corretto nel fatto che avrai bisogno di un pacchetto jre per eseguire qualsiasi applicazione java.

Poiché si dice che si sta eseguendo su una piattaforma integrata, suppongo che l'app java che si desidera eseguire non abbia GUI. In tal caso, starai bene con openjdk-6-jre-headless. Questo è spiegato nel openjdk-6-jre-headless package page here "Runtime Java minimo - necessario per l'esecuzione di programmi Java non GUI".

Come si può vedere from the debian package details page, openjdk-6-jre-headless dipende da openjdk-6-jre-lib (tra gli altri pacchetti), in modo che venga installato in entrambi i modi.

Se invece l'applicazione Java che si desidera eseguire ha una GUI, è necessario openjdk-6-jre invece di openjdk-6-jre-headless

Edit: Fixed link.

+0

Grazie mille. In realtà devo compilare un kernel Linux 2.6 ... per questa piattaforma e non sono sicuro se sia possibile incorporare nel processo di compilazione il jre (qualunque sia la versione, se possibile di dimensione minore). Sai se è possibile? – Jorge

+2

Se si intende includere un jre con il kernel, per quanto ne so non è possibile - il jre vive nello userspace e non nel kernel. – Woodham

+0

Il link segnala errore: "due o più pacchetti specificati (openjdk-6-jre-headless squeeze)". –

3

Il motivo principale per avere due pacchetti distinti disponibili sono le dipendenze dei pacchetti. openjdk-6-jre dipenderà anche:

libasound2, libgif4, libjpeg62, libpng12-0, libpulse0 , libx11-6, libxext6, libxi6, libxrender1, libxtst6 and zlib1g 

E contrariamente al precedente commento openjdk-6-jre dipende openjdk-6-jre-headless, rendendo quest'ultimo in realtà solo un sottoinsieme.