Modular LIBJVM.SO library for Docker

Tibor Digana tibordigana at apache.org
Tue May 25 10:07:51 UTC 2021


Hi David,

>> I'm not sure why you think the JVM should be comparable in size to the
native code used by the core libraries.
>> The JVM is a huge piece of native code in comparison to that used by the
core libraries.

Because Oracle had an ambition in the Jigsaw project to develop a modular
JDK and there are some consequences in the native JVM.
Nowadays the Java developers utilize the commands with JLINK and they say
that they are able to shrink the Java modules to cca 10MB.
Shrinking them more does not make sense because there is one file which is
much bigger - libjvm.so.
If we are asking about the effort spent in JLINK and the effectiveness of
JLINK, we have to say that we should continue with modularity on the JVM
level in order to make this process perfect.
It is not about me and how I write a native code.
It is about our understanding and how we would agree.
On one hand you can see the technical things but I can see the marketing
and a better reputation of Java especially in the world of Microservices
and embedded devices.

I am using BusyBox and Linux Alpine cca 2.7 MB, and so the libjvm.so ~ 22
MB is 8 times bigger.
We have to see the ambition of Java itself, e.g. jlink, and the movement
towards the Alpine and then we will see that the movement to the Alpine is
affected by the size of the JVM library.
I think the community has to make decisions on a higher level and we have
to understand these numbers.

Cheers
Tibor



Cheers
Tibor






On Tue, May 25, 2021 at 2:57 AM David Holmes <david.holmes at oracle.com>
wrote:

> Hi Tibor,
>
> On 25/05/2021 5:26 am, Tibor Digana wrote:
> > Hi,
> >
> > The size of the library "libjvm.so"o is bigger than Java modules, and
> > bigger or comparable with the size of the application in the Docker
> image.
> >
> > After processing the JDK by the JLINK and shrinking the native library "
> > libjvm.so" my JRE is 35MB big in Docker image but the "libjvm.so" is too
> > big, i.e. 18MB (from the original size 22MB) and the modules have only
> 12MB.
> >
> > We have many GC algorithms in the JVM and maybe this is the reason why
> the
> > library is bigger than the Java modules and then JLINK does not become
> much
> > effective.
>
> I'm not sure why you think the JVM should be comparable in size to the
> native code used by the core libraries. The JVM is a huge piece of
> native code in comparison to that used by the core libraries.
>
> > Can you please develop a modular JVM library so that I would be able to
> > select only one algorithm of GC which means that the modules with other
> GC
> > algorithms would not appear in my Docker image?
>
> This can be built today (modulo some possible issues Stefan mentioned).
> You need to find an OpenJDK provider/distributor who is prepared to take
> on the cost of providing a selection of binaries with different VM
> features enabled.
>
> I've no idea how much size might be saved by stripping out different
> GC's today.
>
> Cheers,
> David
>
> > Thx
> > Tibor
> >
>


More information about the hotspot-dev mailing list