[kaffe] Merging missing classes from GNU Classpath

Mark Wielaard mark@klomp.org
25 Oct 2002 17:47:12 +0200


Hi,

(I added the classpath mailinglist to the CC.)

On Fri, 2002-10-25 at 16:02, Dalibor Topic wrote:
> I'd like to know what people think about merging some
> missing parts of the class library from the GNU
> Classpath project. It would extend the range of
> software that can run on kaffe, for example allowing
> Saxon 7.2 to run, as Ito has shown in this mail :
> http://www.kaffe.org/pipermail/kaffe/2002-September/008902.html
> 
> If everybody agrees it's a good thing to "outsource"
> part of the class library development, then I'll
> investigate what could be merged in.
>
> As it seems that full classpath integration is far
> away, I believe this step would ease the pain for
> those needing to run applications requiring class
> library features not yet supported in kaffe
> (java.util.WeakHashMap anyone?).
> 
> I'm interested in your opinions,

I think it is a good idea! And I am only moving very, very slowly
forward with reworking and understanding(!) the VM interface issues. So
I don't think just plugging Classpath into Kaffe will happen anytime
soon.

I have recently been thinking about Kaffe and GNU working more together.

Firstly I think it would be a good idea if you get the following GNU
packages working with Kaffe. This should be easy since it doesn't really
need any real Kaffe integration, just checking that it all works (and
some have nice testsuites). It will make the Kaffe 'product' more
complete:

- GNU Classpath-tools, standard tools
  Not yet released, but important bits, javap, javah, javadoc are here:
  <http://savannah.gnu.org/cgi-bin/viewcvs/cp-tools/cp-tools/>
  <http://savannah.gnu.org/cgi-bin/viewcvs/cp-tools/gjdoc/>
- GNU JAXP, Sax and Dom implementations and interfaces.
  http://www.gnu.org/software/classpathx/jaxp.html
- GNU Crypto a crypto library that can also be used as crypto provider.
  <http://www.gnu.org/software/gnu-crypto/>

- Kawa, the java based Scheme system. Contains lots of utility packages.
  <http://www.gnu.org/software/kawa/>
- GNU Paperclips, Servlet and JSP engine.
  http://www.gnu.org/software/paperclips/
- gnu.regexp, Regular Expressions for Java
  http://www.cacas.org/java/gnu/regexp/
- GNU Getopt in Java
  http://www.urbanophile.com/arenn/hacking/download.html

Then there is the following list of GNU Classpath 'easy targets'
(meaning, no-brainers, just use the complete package):

- java.awt.color
- java.awt.dnd
- java.awt.geom
- java.awt.im
- java.awt.image.renderable
- java.beans.beancontext
- java.util.logging [1] 
- java.util.prefs [2]
- javax.accessibility
- javax.naming, javax.sql, javax.transaction [3]

[1] Please ask Sascha Brawer (brawer@acm.org) about the status.
[2] I wrote this but never used it, it is not completely finished,
missing a real backend. But I have heard some reports from people that
used the MemoryBased backend successfully.
[3] Not completely merged from libgcj, but you can get it from the GCC
distribution. There very limited api doc which is why I don't like to
import it in Classpath yet. I did write some documentation for some of
the classes that were imported but not all. Minimal stuff to support
JDBC3.0 is in Classpath.

There are also a lot of javax.swing stubs, but I don't know how useful
they are except to get more things to compile. And you could also look
at the java.nio stuff but I have never really played with it and don't
know the status.

But how to go from there I don't know precisely. Things you might like
to play with:

- You already mentioned the new collection classes (IdentityHashMap,
LinkedHashMap, LinkedHashSet, WeakHashMap and RandomAccess support).
- java.lang.reflect.Proxy (this might make Jython run)
- Look at the Throwable VM interface and adapt it for Kaffe, this will
give you exception chaining and StackTraceElement.
- See if the pure jave java.util.zip (jazzlib) library is something for
kaffe.
- Likewise for the pure java java.math implementation (said to be faster
then going through JNI).
- Security Permission model is better supported in Classpath then in
Kaffe (but completely untested!)
- Transvirtual donated the java.rmi implementation to the FSF al long
time ago it has seen a couple of fixes and additions (some of the Orp
patches are still waiting to be merged into Classpath). I don't know if
Kaffe kept up to date with this version.
- Michael Koch (konqueror@gmx.de) recently did a lot of java.net 1.4
updates but I don't know if he has JNI support yet (he started with the
libgcj version which uses CNI).

We will have to make sure the we have good Mauve tests so you can see if
replacing things fixes or breaks things in Kaffe so please run and
contribute to Mauve regularly :)

And I would like to ask that improvements to classes that you import are
contributed back to the GNU Classpath project as described at:
http://www.gnu.org/software/classpath/doc/hacking.html#SEC2

Cheers,

Mark