Differences between revisions 16 and 17

Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
## page was renamed from GoogleSoC2008

This page contains suggested student proposals for GNU Classpath.

For students

Students, please feel free to either adopt one of these proposals OR suggest something else. The official Summer of Code page is at http://code.google.com/soc/ make sure you read all the official pages there. When submitting a Google Summer of Code proposal for GNU Classpath, make sure you read the general GNU SoC Guidelines. These guidelines also provide a nice summary of important things to mention in any application (Benefits, Deliverables, Plan, Qualificaton, etc.) In addition to those you might want to read up on the GNU Classpath Hacker Guide and/or the GCC contrib and/or GCJ contrib pages.

For Google Summer of Code, you can choose either GNU or GCC as mentor organisation. Note that there are also other ideas for those projects if none of the ideas below fit you. See http://www.gnu.org/software/soc-projects/ideas.html and http://gcc.gnu.org/wiki/SummerOfCode. Again, you are also more than welcome to propose something that is not on this list yet.

For maintainers/mentors

GNU Classpath developers, please feel free to add further entries or offer yourself as a mentor :)

Select tasks that a student could do if they had 2 months to work on it full time (assume they are smart, but might not have a lot experience and might need to learn some of the project customs). Please mention when you are willing to be a mentor for the project.


There is also:

but these are not as up to date.

Support the Java Attach API

Possible mentors: Andrew John Hughes (gnu_andrew)

This is needed to run JConsole locally (which would be the end goal of this project). Having it as part of our VM interface has general usefulness as VMs will need this for OpenJDK too.

Using JaxWS from OpenJDK

Possible mentors: Andrew John Hughes (gnu_andrew)

OpenJDK already has a complete implementation of JaxWS (various javax.xml.* packages). It's probably worth making this buildable by GNU Classpath rather than reimplementing it from scratch.

Support JBoss

Possible mentors: Andrew John Hughes (gnu_andrew)

Christian Thalinger filed a number of bugs about this yesterday, and there are a few others still in our codebase:

Support TomCat

Possible mentors: Chris Burdess (dog), Andrew John Hughes (gnu_andrew)

I know we did at one point, but...

Support Batik

Possible mentors: Andrew John Hughes (gnu_andrew)

See the Batik mailing list. Classpath should be able to run Batik.

Glib as the Native Layer

Possible mentors: Andrew John Hughes (gnu_andrew)

We could simplify the portability glue code by using glib underneath. We're using glib implicitly in the GTK peers already, and it would let us delegate the responsibility for portability wrappers out of classpath, while at the same time making the native code work transparently on win32.

Rewrite Qt peers using Jambi

Possible mentors:

Our Qt peers are rotting away, and that means it's time for someone to come in and rewrite them. Qt Jambi are the official bindings for Qt for Java code, so it could be both fun and useful to rewrite our Qt based AWT peers in pure Java.

Update GJDoc to support the 1.5 language constructs

Possible mentors: Andrew John Hughes (gnu_andrew)

Within the GNU Classpath Free Java stack, there remains one component that can not yet fully handle the 1.5 language constructs such as generics, enumerations and annotations. A development process of approximately two years ensured that the main code base and VMs supported these extensions, but our documentation generator has so far simply being patched so that it can at least generate documentation for the current codebase. The documentation for our latest release illustrates some of the problems, notably in classes like java.lang.Enum. GJDoc really needs a new parser to handle the 1.5 constructs and then appropriate adaptation to render them correctly in the HTML doclet.

Add file output support for the sound API

Possible mentors: Mario Torre (neugens)

Last year's Google Summer of Code saw a successful proposal to add support for reading and playing sound files using a GStreamer implementation of javax.sound. Support for writing sound files is still missing however.

GUI Ideas

  • Finalize text.html support (make sure you set an achievable goal/target for this)

  • AWT peers for WINE (aka Windows) or Darwin (aka Mac OS X)
  • Write a Swing plaf that uses Gtk to render widgets. This would let us use the current Gtk theme for Swing applications. (A similar task would be to complete and polish the Qt-based Swing peers which do this.)

Add JDWP support for jamvm or kaffe

In particular we want to be able to debug the core GNU Classpath libraries from Eclipse. GNU Classpath contains a generic JDWP server implementation, but this is not yet hooked up to any runtime. Work is underway for gij support, but this will at only enable debugging application code since gcj doesn't use the interpreter for the core classes (they have a ahead of time precompiled libgcj for speed). Hooking JDWP support to a traditional interpreter like jamvm would enable jdwp debugging of core classes.

GCJ Ideas

  • Add gcj-specific optimization passes to gcc.
    • Recognize local uses of StringBuffer and StringBuilder and make them more efficient

    • Add an internal flag so that GCC can know when some values are not null ("this", result of "new", etc) and teach VRP about this
    • Update the LLVM-based JIT compiler to do recompilation and optimization. Read the literature and experiment extensively to find good recompilation heuristics.

GNU/Linux Desktop Integration Ideas

  • Hook javax.sound up to gstreamer

  • Fully integrate Java Web Start into the desktop.
    • Recognize when the network is unavailable (using dbus)
    • Make drag-and-drop of JNLP links download and install the application, and put a launcher on the panel or desktop
    • Show download status in the system tray
    • Better support application management. Have a UI for app management. Allow a second cache that can be set up by the sysadmin
    • Share a class cache with URLClassLoader and/or gcjwebplugin.

    • Enable "hooking" for runtimes to optimize the cache (aot-compiling for gcj, transforming to .net il for ikvm, etc). Some of these ideas might be easier implementated when starting from scratch on a new jnlp implementation, others might be easier to achieve building upon an existing implementation like netx. Make sure to explain in your application why you choose a particular approach.

StudentProjects (last edited 2009-07-30 21:28:55 by AndrewHughes)