Projects
This page is just a collection of random things that need to be
done. Volunteers are welcome to contribute. It may not be up-to-date, and some things may have
already been done. If you find an item that has been completed,
please tell me, jim@kaffe.org.
If you want to do some work on any item here, please publicly announce to the mailing list that you are planning to do some work on it. That way, other people who are also working on the same problem can coordinate with you, avoiding duplication of effort. It would be too much work to keep this page continually updated as to the status of work on each individual item - please use the mailing list for that.
Documentation
- Switch to DocBook
Create DocBook documentation from the files in the FAQ directory.
Generate installable documentation as necessary.
- Man pages for tools
Write man pages for tools that don;t have one. Investigate using
DocBook for tool documentation, and automatically generating man
pages from it.
- More documentation
Kaffe is still a fairly simple VM to work with, and could be an
ideal platform for people trying to do research or just trying to
learn how a VM works. Unfortunately, Kaffe doesn't come with much
documentation. There is some documentation out there, but it's
scattered all over the internet. It sure would be nice if we could
check some nice documentation into CVS beside the source code.
Document undocumented areas of kaffe. Improve Edouard's porting
document. Use doxygen-style source code comments to document
kaffe's internals.
VM Functionality and Features
- Precise garbage collection (non-conservative)
Kaffe's garbage collection works, but it's fairly crude, and it
can't use relocating/copying schemes. Work needs to be done on
the code generated by the JIT and the native interfaces in order
to enable us to build in more advanced, better performing,
generational-style GC systems. It would be nice if we could
support some interoperability with plug-in GC modules from other
free software VMs, such as ORP or Jikes RVM.
- gcj integration
Some work was done on allowing kaffe to use classes and methods
pre-compiled to native code using gcj. It would be nice to dust
this off and update it.
- JIT improvements
Right now, our JIT is still pretty simple. It would be nice if we
could enhance it to allow for more elaborate compilation schemes
(eg. optimizations).
Merge Mike Chan's JIT4.
- Debugging / Profiling
JPDA/JVMPI support would be very nice. Also, gdb now does a nice
job debugging Java code compiled with gcj - it would be nice if it
could be made to work with an interpreter/JIT like Kaffe. Plus
there's the BDBJ debugger that works with Kaffe that looks very
interesting.
Tim is working on JVMPI support.
Class Libraries
- Implement Drag and Drop java.awt.dnd (introduced in JDK 1.2).
Used by jlgui.
- Better GNU Classpath intergration with kaffe.
- java.math
Adapt kaffe's native implementation to work on top of Classpath's pure java
implementation by using VM specific classes to abstract away native methods.
- java.util.zip
How to modularize to allow multiple implementations to coexist?
(See what classes are different between classpath/gcj)
start with Deflater/Inflater...
Goal automatically use pure java implementation if zlib isn't
available. (This is currently already done for the BigInteger
class, kaffe has a native implementation, but falls back to the
non-native GNU Classpath version if the gmp library is not installed.)
- Serialization and ObjectIn/OutputStreams.
Completely different implementations kaffe/GNU Classpath
Some Mauve failures with Classpath/gcj code. Some other/same failures
with current kaffe code.See also Eclipse startup stream failures.
Goal: get Jython installer to run, and Eclipse installer without ObjectStream failures
Guilhem is working on it.
- Security
Classpath seems to have all the proper Permission checks in place.
(But has anybody every really used it? Probably not, because
AccessController isn't really implemented.)
Jar verification/certification handling isn't implemented.
(Neither in Classpath or Kaffe.)
Policyfile processor (Use ANTLR for it?)
Goal: safely run applets with appletviewer.
Rob is working on the verifier.
- NIO
Only java part has been implemented so far in Classpath.
gcj has some native (CNI) implementations (not complete)
but JNI is completely stubs at the moment.
Goal: run Freenet!
Michael Koch from GNU Classpath and Guilhem are working on the missing native parts.
- javax.comm
Kaffe has incomplete stubs, so merge the RXTX implementation into kaffe.
Dalibor and Trent Jarvi from RXTX are working on it.
- Swing (text)
Claspath has some implemented stuff, but large parts are just stubs.
Start simple with javax.swing.text.html parser stuff.
Someone could try using gnu jaxp with correct DTDs
Look at JTidy/HTMLTidy.
Goal: make Appletviewer really parse HTML.
- Mauve/Japitools
Fix mauve failures. Fix japitools compatibilty problems.
Ports
- Merge WinCE port.
- Merging BeOS port (BeKaffe)
- Merge DOS Port
- Merge CRIS port
- Merge Pocketlinux
There was a lot of good stuff that Transvirtual released as part of
their PocketLinux version of Kaffe. For example, they had an AWT
that ran on the framebuffer, as well as various changes to the core
vm and JITs for MIPS and ARM that worked quite well, as well as
ports to several proprietary RTOSes.
Tools
- KJC problems have been reported, investigate further.
- Merge gjdoc
- Merge in support for CORBA
|