Yes, it will be nice if the OpenJDK and Oracle builds for Linux/Solaris used 
the system rather than 
the bundled zlib. In which case, there will be no need for JVM command line 
option. Also the HW/SW 
compression accelerators can then be used easily with Java. Is it possible to 
get this feature in JDK9?

Thanks,
Sandhya

-----Original Message-----
From: Alan Bateman [mailto:alan.bate...@oracle.com] 
Sent: Saturday, March 07, 2015 1:32 AM
To: Viswanathan, Sandhya; core-libs-dev@openjdk.java.net
Subject: Re: Compression acceleration for Java

On 07/03/2015 01:19, Viswanathan, Sandhya wrote:
> Hi All,
>
> This is a request for support in JVM to use system zlib or alternative 
> implementations of zlib.
>
> Compression is heavily used in Java based big data, genomics and middleware 
> applications. There are many products in market today which help in 
> compression performance either through software or hardware acceleration. 
> Intel has faster compression libraries as part of IPP and also there are 
> hardware compression accelerator products from Intel. Both of these products 
> are available in the market today and support the zlib interface as an API. 
> Support in the JVM to use system zlib on a JVM command line option would make 
> these acceleration capabilities available to Linux java users through 
> java.util.zip.
> The JVM could support this on an option UseSystemZlib which can be set to 
> false by default. When the option is set to true on command line by the user, 
> the load_zip_library() function in classLoader.cpp can load libszip.so 
> instead of libzip.so. Also the JVM can set the java.util.zip.UseSystemZlib 
> property accordingly.
>
> The JDK would need to include two libraries for zip in jre/lib/amd64: 
> libzip.so and libszip.so. The libzip.so will be built as before with 
> statically linking system zlib with it and libszip.so will be built without 
> statically linking system zlib with it. Also the 
> java.lang.System.initializeSystemClass will load libzip.so or libszip.so 
> based on the java.util.zip.UseSystemZlib property.
>
> The users can then use system zlib by including the -XX:+UseSystemZlib option 
> on the command line and compression accelerators by setting the 
> LD_LIBRARY_PATH and LD_PRELOAD appropriately.
>
> I am very interested to know your thoughts on this feature support.
>
You may know this already but there is a configure option to use the 
system zlib (configure --with-zlib=system). I will assume that if you 
build with this option and run with LD_* set to the IPP libraries then 
it should work.

That said, I think your mail is timely as we do need to re-examine how 
zlib is used. It would be nice if the build used the system rather than 
the bundled zlib when building on Linux and Solaris (OS X already uses 
the system zlib). Ditto for Oracle builds. That would avoid needing to 
split libzip and avoid needing to introduce a runtime option to select 
between the bundled and system zlib.

Another long standing suggestion is to just move to a pure java 
implementation, something that Sherman Shen prototyped some time ago and 
mentioned in a recent thread here on memory mapping the zip central 
directory. If we were to go down that route then use of zlib couldn't be 
dropped completely, I think it would still be needed for HotSpot to 
support -Xbootclasspath/a and the JVM TI agent equivalent (with the JEP 
220 work then rt.jar/friends go away so HotSpot only rarely needs to 
call into libzip now). Moving to a pure java implementation might nobble 
your proposal of course but it might open other opportunities for the 
compiler.

-Alan

Reply via email to