A Brief History of GNU Classpath

For some time now, GNU Classpath hackers have been monitoring the progress of their mission — to reimplement the Java class libraries from scratch — with a brilliant little set of tools called japitools. These programs produce an overview of the API-compatibility of Classpath (and other versions of the class library) against the official versions published by Sun. Thus, the more packages that are green on those pages, the closer we are to our goal.

GNU Classpath has been around for more than six years now. The core of the Java 2 Standard Edition, version 1.4, is largely complete. The biggest holes in the library now are Swing (which, as of this writing, is being aggressively worked on by a number of hackers) and a few peripheral packages.

Prompted by Tom Tromey's mailing list message about the growth of Classpath, I decided to put together some statistical graphics charting it. The charts below describe the API-completeness of GNU Classpath against the major revisions of the Java class library, based on monthly snapshots of the CVS sources. These snapshots were compiled with a gcj-compiled version of the compiler that comes with Eclipse (I did this because native ecj is the absolute fastest bytecode compiler; compiling six years' worth of code — including lots of cvs update pauses — took me about twenty minutes). Then the jar files produced by this were processed by japize, then compared with the japi files for Sun's Java releases. The total good versus bad and missing is charted below.

These graphics were plotted with R.

Classpath vs. Java 1.0

Classpath vs. Java 1.0

Classpath vs. Java 1.1

Classpath vs. Java 1.1

Classpath vs. Java 1.2

Classpath vs. Java 1.2

Classpath vs. Java 1.3

Classpath vs. Java 1.3

Classpath vs. Java 1.4

Classpath vs. Java 1.4

To-do


Copyright © 2004 Casey Marshall

Verbatim copying and distribution of this entire article and its images is permitted worldwide, without royalty, in any medium, provided this notice is preserved.