I am having trouble understanding some of the basics of Java JRE.
I need to run Java code in an embedded system and for this I need a minimal Java Runtime Environment installed in a Linux kernel, that is to say, the minimum package necessary for executing Java binaries. I think it is not possible to do this only with a JVM (the JRE package is necessary, am I wrong here?)
The thing is, when looking at the Debian repositories I don't quite understand the differences between the packages openjdk-6-jre
, openjdk-6-jre-headless
and openjdk-6-jre-lib
. Will Java programs run only with the former? or, are the three of them needed?
This is an issue as there is a big difference in size (MB) between them.
You are correct in that you will need a jre package to run any java application.
Since you say you're running on an embedded platform I assume that the java app you want to run has no gui. In that case, you will be fine with openjdk-6-jre-headless
. This is explained on the openjdk-6-jre-headless package page here "Minimal Java runtime - needed for executing non GUI Java programs".
As you can see from the debian package details page, openjdk-6-jre-headless
depends on openjdk-6-jre-lib
(among other packages), so that will get installed either way.
If however the java app you want to run has a gui, you will need openjdk-6-jre
instead of openjdk-6-jre-headless
Edit: Fixed links.
Edit: Fixed Links again
The main reason for having two distinct packages available are the dependencies of the packages. openjdk-6-jre
will also depend on:
libasound2, libgif4, libjpeg62, libpng12-0, libpulse0 , libx11-6, libxext6, libxi6, libxrender1, libxtst6 and zlib1g
And contrary to the previous comment openjdk-6-jre
depends on openjdk-6-jre-headless
, making the latter really just a subset.
来源:https://stackoverflow.com/questions/24280872/difference-between-openjdk-6-jre-openjdk-6-jre-headless-openjdk-6-jre-lib