[kaffe] pure java vs. native implementations

Dalibor Topic robilad at yahoo.com
Sat Jan 11 05:19:02 PST 2003

Hi Artur,

--- Artur Biesiadowski <abies00 at wp.pl> wrote:
> Timothy Stack wrote:
> > hi,
> > 
> > So, on the discussion of replacing native library
> implementations with 
> > pure java versions from classpath, I don't see why
> they both can't be 
> > included.  
> Bloat and maintenance. In any order.

* bloat: 

My experience from the arm-linux tests of Classpath's
pure java java.util.zip impementation was that the
footprint of the whole installation is reduced by some
50k when using the pure java libs. That may be even
more if you don't need libz anymore.

I'd expect a similar effect when using Classpath's
java.math implementation.

Having additional pure java implementations in the CVS
will definitely increase the size of the sources in
the CVS ;) But as there would be a configure-time
choice which implementation to use, I don't see that
as bloating rt.jar.

It's quite similar to providing additional AWT
backends , in my opinion. You get more choices to pick
what suits your task better.

* maintenance:

As long as we use the libs from Classpath, I don't see
a problem with resyncing with classpath's CVS every
now and then, as I already do for the rest of imported

> In some cases, especially where native library give
> _real_ performance 
> boost in critical area, but it is not available on
> all targets, double 
> work can be worth it. But in most cases, I doubt.

Kaffe has native library implementations of both
java.math and java.util.zip. java.math uses Gnu MP as
the backend, and java.util.zip uses libz as the

Proving a pure java alternative would help those
platforms where 

a) native backend libs are not available:

Gnu MP is sometimes not available on the platform
kaffe is compiled on. This leads to a certain degree
of confusion and bug reports, as can be witnessed in
kaffe's mailing list archives. I remember seeing a
couple of BigInteger related bug reports before, that
turned out to be "you need to install/port gmp".

I doubt there is a platform without a libz port,
though ;)

b) native library implementation leads to crashes:

That's the case with java.util.zip on Cygwin at the
moment. Using the pure java implementation, about 80
new regression tests pass, and the platform starts
becoming somewhat useable, instead of crashing on
almost every regression test.

I'd rather fix the native libs, too, if I knew where
the bug is. But Cygwin's gdb won't let me ;)

These are the two main reasons I see for including
pure java alternatives. It could make life easier for
users and porters.

In order to make life easier for those that handle bug
reports, we should probably add another line of output
to kaffe -fullversion : the ./configure line. It might
be useful anyway ;)

best regards,
dalibor topic

Do you Yahoo!?
Yahoo! Mail Plus - Powerful. Affordable. Sign up now.

More information about the kaffe mailing list