[kaffe] Goodbye Klasses.jar
jim at kaffe.org
Fri Jul 19 12:46:01 PDT 2002
My latest check-in eliminated the big pre-compiled Klasses.jar binary
that was checked into CVS.
It's been replaced with a smaller Klasses.jar.bootstrap file which
contains just the classes needed to recompile rt.jar using kjc (plus
some additional classes needed by kaffeh when rebuilding the VM and
This should make using CVS more responsive, since the CVS repository
file for the Klasses.jar had mushroomed to a whopping 111Mb.
Klasses.jar.bootstrap is now 253Kb vs. 1.1Mb for the old Klasses.jar.
I spent a week or so trying to get it smaller, but it's very tricky.
One of my theories was that if I used jikes (which is written in C++), I
could check in an even smaller bootstrap. Unfortunately, the
dependencies in our class libraries are such that it makes it very
difficult to compile just a core set of classes - inevitably things like
networking and the AWT are required in order to compile even the core
classes. It's going to be a fair amount of work untangling the
dependencies in order to make things more modular (one of my goals).
One ramification of doing this is that kaffe needs to be in working
order in order to rebuild all the class libraries. This might be a
problem on some architectures that aren't working very well yet. In
those cases, the thing to do would be to build the rt.jar on another
architecture, and use that instead. It should create some impetus to
fix those architectures, I hope.
There's no need to use jikes now (not that bad of a thing, since most
versions of jikes seem to break things). Even if you wanted to, you'll
need to rebuild rt.jar using kjc first, since the Klasses.jar.bootstrap
doesn't include enough classes so that jikes can rebuild rt.jar. I'm
not sure why - I imagine jikes is a bit greedier (or lazy) when it comes
to checking dependencies.
The documentation that Dalibor wrote for updating the class libraries
probably needs to be updated. It will still be necessary to rebuild and
check in Klasses.jar.bootstrap whenever any of the core class libraries
change - but at least we won't have to do it when other classes are
modified. They can be rebuilt by doing a "make bootstrap" in the
libraries/javalib directory. The list of classes included is in
libraries/javalib/bootstrap.classlist. That list might need to be
updated if we change the core class libraries, or if we updated kjc.
I hope I haven't broken it for everybody. Any comments?
More information about the kaffe