Kaffe.org

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



Legal:

Kaffe.org is a an independent, free software community project.

The Kaffe virtual machine is a clean room implementation of the Java Virtual Machine from Sun Microsystems, Inc.

The Kaffe virtual machine is free software, licensed under the terms of the GNU General Public License.

Java is a Trademark of Sun Microsystems, Inc.

All copyrights are held by their respective owners, please read and respect the individual licenses on the software distributed from this site.