Jump to: |
The Kore Class Libraries are a clean-room implementation of the
core class libraries in Sun's JDK 1.0.2. Core class libraries
means the |
.tgz
with Makefiles for Kore available
for download.
We haved added support to the
Kaffe Virtual Machine to
use the Kore native libraries in place of Sun's.
In addition to a Kore native library "package" in Kaffe,
this required some modifications to Kaffe's basic VM facilities
(as the VM
needs to understand the new String, Thread, and Throwable classes).
By selecting the --with-kore
configuration option,
Kaffe will use the Kore native libraries. Otherwise, it will
default to the present Sun native library support.
This work was performed by members of the Flux Research Group at the University of Utah. (Patrick Tullmann <tullmann@cs.utah.edu> is the contact person for technical questions about Kore.)
Kore is maintained by
Glynn Clements (he also
wrote most of it). The latest distribution is available at
ftp://sensei.co.uk/misc/
as kore-something.tar.gz
where something is the version
number. (Latest version as of this writing is 0.0.7.)
More information on Kaffe is available at http://www.kaffe.org/. Jim Pick maintains a mailing list for Kore. To sign up, send a message with "subscribe" in the body to: kore-list-request@jimpick.com. (To unsubscribe send a message with "unsubscribe" in the body to the same address.) The archive is also maintained by Jim.
Status: Kore is distinctly a work-in-progress. Quoting from the Kore README:
Virtually all non-native functions in java.* are implemented, although some are fudged, and many doubtless have bugs.
If Kore is a work-in-progress then that goes double for our changes
to Kaffe. We have tested them on IRIX and FreeBSD with
all combinations of JIT/interpreter, static/dynamic libraries,
debug/nodebug and sun/kore. The Kore support is functional
enough that Sun's javac
can compile `HelloWorld' when
run "on top" of the Kore native libraries. The thread support
is functional enough that it passes basic threading tests.
We do the majority of our development with a statically linked,
interpreter version of Kaffe (on FreeBSD),
so that will be the most stable configuration.
Note: The Kore AWT implementation will not work with Kaffe, mostly because there is no support in Kaffe for a GUI Toolkit. (See the BISS downloads, below, for a set of hacks working towards GUI Toolkit support for Kore.)
These changes are not (yet) part of the Kaffe distribution. Currently, all the patches are against Kaffe version 0.9.2, and the latest Kaffe release has a revamped internal structure. Additionally, upcoming releases of Kaffe will have an independently developed set of standard libraries.
You can peruse the ChangeLog entry detailing the changes I've made to Kaffe. In short they are:
find java -name "*.java" | xargs
javac
' to compile Kore.)
README.Kore
in the distribution for details.
Installation should proceed as before with Kaffe. To compile
Kaffe to use the Kore native libraries don't forget to include
--with-kore
on the configure command line.
To re-compile the Kore classes if you make changes, you'll need
a working javac
(Kore cannot yet "host" itself.)
Make sure to add the base Kore classes.zip to the end
of your CLASSPATH
(or not at all).
The unix 'find' command works quite well for the actual compile:
find java -name "*.java" -print | xargs javac
Insert the Kore classes.zip
in your
CLASSPATH
before Sun's classes.zip
.
(Be sure to use the classes.zip
from a version 1.0.2 JDK.)
This should let you use the Kore classes, and fall back to Sun
classes for missing or Sun-specific code.
Warning: If the Kore classes are not being found, and instead the Sun classes are found you will get the following error (or some other, equally obscure fault):
assertion "(uintp)mem >= (uintp)blk &&
(uintp)mem < (uintp)blk + gc_pgsize" failed:
file "kaffe/kaffevm/gc-mem.c", line 175
This happens because the Kore objects are different sizes than the Sun objects and they have different layouts. This is an active bug.
Send it to tullmann@cs.utah.edu. Let me know if you have troubles with the patches or compiling or anything.
You may send patches for Kore to Glynn Clements or myself (I'll forward them on to Glynn eventually).
Send patches for Kaffe to me (if they relate to making Kaffe work with Kore). You can send me other Kaffe patches, but those are best sent to Tim Wilkinson directly (they'll get swallowed in my big diff).
There is Kaffe, the Java-bytecode compatible Virtual Machine.
The JOS Project (Java Operating System) aims to build a free and open Java-based OS from the ground up.
Other Flux Java Projects. The Flux group is an operating systems research group here at the University of Utah. We have several Java-related research projects underway.