mirror of
https://git.FreeBSD.org/ports.git
synced 2024-10-25 21:07:40 +00:00
198 lines
7.4 KiB
Plaintext
198 lines
7.4 KiB
Plaintext
KAFFE v0.5p4 - A JIT and interpreting virtual machine to run Java(tm)* code
|
|
===========================================================================
|
|
|
|
This is Kaffe, a virtual machine design to execute Java bytecode.
|
|
This machine can be configured in two modes. In one mode it operates as
|
|
a pure bytecode interpreter (not unlike Javasoft's machine); in the second
|
|
mode if performs "just-in-time" code conversion from the abstract code to
|
|
the host machine's native code. This will ultimately allow execution of
|
|
Java code at the same speed as standard compiled code but while maintaining
|
|
the advantages and flexibility of code independence.
|
|
|
|
What's new
|
|
==========
|
|
|
|
* Added port for m68k Amiga DOS.
|
|
|
|
* Improved (hopefully) Windows'95 port.
|
|
|
|
* Lots of bug fixes (see ChangeLog).
|
|
|
|
What can run Kaffe
|
|
==================
|
|
|
|
This version of Kaffe will run on the following platforms:
|
|
|
|
i386 FreeBSD 2.x (interp + jit)
|
|
" Linux 1.2.13 & 2.0.x (interp + jit)
|
|
" NetBSD 1.x (interp + jit)
|
|
" Solaris 2.x (interp + jit)
|
|
" BSDI 2.x (interp + jit)
|
|
" Unixware (interp + jit)
|
|
" SCO 3.2v5 (interp + jit)
|
|
" NeXTStep 3 (interp + jit)
|
|
" Windows '95 (interp)
|
|
Sparc SunOS 4.x (interp)
|
|
" Solaris 2.x (interp)
|
|
" NetBSD 1.x (interp)
|
|
" NeXTStep 3 (interp)
|
|
PowerPC MkLinux (interp)
|
|
M68k Amiga DOS (interp)
|
|
|
|
Although the system is relatively portable, some machine and processor
|
|
specific code is necessary. If operating in an interpreting mode, it
|
|
is only necessary to supply thread switching code. This allows relatively
|
|
simple ports of Kaffe to be made to new platforms.
|
|
If operating in JIT mode, significant machine dependent code is required in
|
|
order to provide the internal native code generator. Ports to new
|
|
architecture are obviously more complex although the code generator is itself
|
|
reasonably portable.
|
|
|
|
Who can use Kaffe
|
|
=================
|
|
|
|
This version of Kaffe is distributed under a Berkeley style license.
|
|
Essentially you can use Kaffe for both personal and commerical purpose, on
|
|
its own or as part of another package (see license.terms for full details).
|
|
|
|
Kaffe Web and FTP sites
|
|
=======================
|
|
|
|
Kaffe is available from various sites. The primary site is:
|
|
|
|
ftp://ftp.sarc.city.ac.uk/pub/kaffe/kaffe-0.5p4.tgz
|
|
|
|
Kaffe mailing lists
|
|
===================
|
|
|
|
A couple of mailing lists are available for information and discussion of
|
|
the Kaffe project. There lists are:
|
|
|
|
kaffe@sarc.city.ac.uk General Kaffe discussions
|
|
kaffe-announce@sarc.city.ac.uk Kaffe related announcements
|
|
|
|
To subscribe to these lists send a message containing the word "subscribe"
|
|
to either:
|
|
|
|
kaffe-request@sarc.city.ac.uk or
|
|
kaffe-announce-request@sarc.city.ac.uk
|
|
|
|
depending what you are interested in.
|
|
|
|
You can also check out the Kaffe related web pages at:
|
|
|
|
http://www.sarc.city.ac.uk/~tim/kaffe
|
|
|
|
Compiling Kaffe for UNIX
|
|
========================
|
|
|
|
The machine comes complete with the interpreter, stub generator, and
|
|
supporting native libraries. Compilation is controlled using the
|
|
GNU autoconf program. To generate the necessary makefiles
|
|
type "./configure" in this directory. This will identify your system
|
|
and configure the software appropriately. If JIT mode is supported on your
|
|
system it will be selected automatically, otherwise it defaults to
|
|
interpreting mode. Compilation should then be a simple matter of
|
|
typing "make" in this directory, but note that you must use a version
|
|
of "make" which supports VPATH. If your version does not (Sun's version
|
|
doesn't) I suggest you use GNU make.
|
|
|
|
By default, the system will install into the /usr/local hierarchy as per
|
|
the standard GNU coding rules. This can be changed using the --prefix
|
|
option to configure. To install the binaries type "make install".
|
|
|
|
Compiling Kaffe for Windows '95
|
|
===============================
|
|
|
|
An initial Windows '95 port is now included with Kaffe. This currently
|
|
works with Borland C++ v5.0 compiler. The port is preconfigured to install
|
|
into C:\KAFFE.
|
|
|
|
To compile change directory to kaffe-0.5p4/win32 and type "make". To install
|
|
type "make install".
|
|
|
|
Running Kaffe
|
|
=============
|
|
|
|
This version of Kaffe is not supplied with a copy of Sun's class library.
|
|
This can be obtained from Sun's JDK package (from http://www.javasoft.com) or
|
|
pre-prepaired in kaffe-0.5p4-sun.tgz (from the usual Kaffe ftp sites).
|
|
This version of Kaffe uses the class library from JDK 1.0.2.
|
|
|
|
Before running Kaffe it is necessary to configure the environment.
|
|
This requires the setting of CLASSPATH, KAFFEHOME and LD_LIBRARY_PATH.
|
|
For the standard installation these would be defined as follows:
|
|
|
|
CLASSPATH=.:/usr/local/share/kaffe/classes.zip
|
|
KAFFEHOME=/usr/local/share/kaffe
|
|
LD_LIBRARY_PATH=/usr/lib:/usr/local/lib
|
|
|
|
A file "ENVIRONMENT" is generated by the configure program which contains
|
|
a /bin/sh environment setup. This may help you to figure out what to
|
|
set to what if you alter the standard installation point.
|
|
|
|
The source comes with a test program "HelloWorldApp" which can be found
|
|
in the test directory in the distribution. After installation, run this
|
|
program from the test directory by typing the following:
|
|
|
|
cd <java source directory>/test
|
|
kaffe HelloWorldApp
|
|
|
|
This should load and execute the HelloWorld application. If all is well
|
|
it will print "Hello World!". As a further test you might like to try
|
|
compiling the HelloWorldApp source. To do this type the following:
|
|
|
|
javac HelloWorldApp.java
|
|
|
|
"javac" is a shell script which has been provided to invoke Kaffe on
|
|
the standard Java compiler. If all is well, the application should compile
|
|
without incident.
|
|
|
|
The state of play
|
|
=================
|
|
|
|
Kaffe should run all non-graphical code which will run on a Java
|
|
machine. However there are still bugs and plenty of untested native
|
|
library functions. Some functions which are not currently implemented
|
|
(most often because I don't understand exactly what they are suppose to
|
|
do) will simply abort if called. If you can help out on any of these
|
|
then please do *BUT* remember, this is a clean-room implementation (I
|
|
have never seen any of Sun's Java source code) and I cannot simply
|
|
encorporate Javasoft's* code.
|
|
|
|
The missing bits
|
|
================
|
|
|
|
Awt
|
|
---
|
|
One major missing component from Kaffe is an implementation of AWT. Work
|
|
on this is being done by others, and their current implementation can be found
|
|
at ftp://slhp1.epfl.ch/pub/sawt-0.1.tar.gz. I don't know what the current
|
|
status of this work.
|
|
|
|
Java.lang & Java.io
|
|
-------------------
|
|
Although Kaffe can be used with Sun's classes.zip library, there is work
|
|
to develop a version of this class library which is Sun's free. This
|
|
can be found at ftp://ftp.lantz.com/kream/kream-0.01.tgz. Again, I don't
|
|
know the current status of this work.
|
|
|
|
Kaffe and Sun's Java
|
|
====================
|
|
|
|
Kaffe is a clean-room implementation of a virtual machine which can run
|
|
Java bytecode. It is capable of interpreting code generated by Sun's
|
|
software but has not been derived from any Sun code. Currently this version
|
|
utilises Sun's freely available compiled class library but it is hoped
|
|
that this will be replaced with a freely available version in due time.
|
|
At the moment it is impossible to validate whether this software is
|
|
Java compatible(tm) (the test suites are not publically available) and
|
|
the terms under which this can be claimed are unknown.
|
|
|
|
Erm, that's it ....
|
|
|
|
Tim Wilkinson
|
|
<tim@sarc.city.ac.uk>
|
|
----
|
|
* Java and Javasoft are registered trademark of Sun Microsystems, Inc.
|