New in release 0.09 (2004/02/02) * Includes updated GNU JAXP version from 2004-02-01. * Native C code is now -ansi -pedantic (C89) clean and (almost) -Wall clean. * java.io is now implemented by delegating most tasks directly to java.nio. * Reworked/Optimized implementations of java.nio.Buffer and subclasses. * New javax.print, javax.print.attribute[.standard] and javax.print.event packages and classes. * java.text attributed iterators support. * New javax.imageio, javax.imageio.event and javax.imageio.spi packages and classes. * GNU Classpath can now load service providers that are described via META-INF/services/* resources in extension JARs. This is useful for implementing the various APIs that are supposed to be extensible via custom plugins. For details, please see the documentation of gnu.classpath.ServiceFactory. Application developers are strongly discouraged from calling glibj internal packages. Instead, they might want invoke the newly implemented javax.imageio.spi.ServiceRegistry.lookupProviders, which is a standard method for loading plug-ins. * New developers wanting to help the GNU Classpath project might want to review the greatly expanded Hacker Guide included in the doc directory or online at http://www.gnu.org/software/classpath/docs/hacking.html Also the FAQ has been expanded. And when working from CVS you can now use a simple autogen.sh script to get all autotools magic done automagically. * New configure option --with-glibj which defines how to install the glibj class files as zip, as flat directory files or both (zip|flat|both) [default=zip]. When working with multiple runtimes some of which might not support bootstrap classes in zip files the --with-glibj=both option is recommended (this does take extra disc space). * Two big code drops from the libgcj gui branch updating various java.awt and javax.swing classes. * Multiple java.net.InetAdress fixes and java.rmi fixes. * ServerSocket.accept() now restarts listening when system call interrupted. * Much cleanups to make standard API doc valid XHTML (not completed yet). * A scan for unused variables and non-static invocation of static methods turned up a couple of subtle bugs which have now all been fixed. * The Mauve testsuite has been cleaned up considerable and lots of issues in the GNU Classpath core class implementation have been fixed. VM Interface changes: * java.lang.Class/VMClass interface was changed. The interface now no longer requires an instance of VMClass for each Class instance. Instead the field vmdata in Class is now of type Object. * GNU Classpath now assumes that JNI calls SetXField can modify final fields. This was previously used silently for System.in/out/err and should be considered as a feature now. * A new VMProcess and a sample JNI C implementation are now provided to make Runtime.exec() work out of the box on some systems. This requires a small change to VMRuntime.exec() when a runtime wants to use it as the default java.lang.Process implementation. * The implementation of most of java.io through java.nio moved serveral runtime specific I/O methods. Most methods do have a generic default native C JNI implementation in native/jni/java-nio. * Runtime support methods for java.io.File have been moved to VMFile which also comes with a default JNI C implementation. * To support the new service provider mechanism runtimes must make sure that extension JARs are made accessible via the default context class loader. New in release 0.08 (2004/12/03) * java.util.regexp implementation through gnu.regexp wrappers. * java.net.URI implementation. * Working implementation of javax.swing.undo. * java.awt.geom.CubicCurve2D/QuadCurve2D: Can now solve cubic and quadratic equations; implementation adapted from the GNU Scientific Library. * Lots of java.awt and gtk+ peer improvements. Also more Swing work. Start of EmbeddedWindow support. * BufferedReader speed improvements. * Improved useabilty of java.text implementation for several applications. * ObjectInputStream is much faster and more compatible with other implementations. * Fix handling of alias methods, where a method has been deprecated in favour of a new one with the same funtion but a different name. (See Deprecated Methods section in the GNU Classpath Hacking Guide.) * javax.print.attribute.standard added. * Lots of java.nio, java.net, java.io * Depend on autoconf 2.59+ and automake 1.7+, GCJ 3.3+, jikes 1.18+. VM Interface changes: * Split native methods in java.lang.Runtime into java.lang.VMRuntime. * Resources are now also loaded/needed through the bootstrap classloader (gnu.regexp needs MessageBundle included in glibj.zip Fixed Classpath bugs: #6095 java.awt.geom.QuadCurve2D.solveQuadratic sometimes gives wrong results #7099 EventListenerList.getListenerCount should accept null argument #7104 EventListenerList.add does not work #7105 EventListenerList.remove does not work #7107 DefaultBoundedRangeModel.setValue and friends should not throw And lots more. New in release 0.07 (2003/30/11) * Works with libtool 1.5 (and 1.4.3). * java.awt gtk+ peers now depend on gtk+ 2.2.x and uses pango. Lots and lots improvements on the peers. * java.awt.geom.CubicCurve2D, java.awt.geom.QuadCurve2D: Subdivision and flatness calculation implemented. * java.awt.geom.FlatteningPathIterator: Working implementation. * gnu.java.awt.BitwiseXORComposite helper class. * New rmic compilers (jikes, kjc) support. * java.text bug fixing and 1.4 updates (Currency). * Hashtable and HashMap function more similar to other implementations. * javax.naming and java.beans classloader fixes. * URL parsing, URLConnection, protocol and (needed) permission fixes. * More java.nio implementation (API complete, but implementation not finished yet). * Lots of java.net code cleanup. * Improved documentation. * Numerous bug fixes in almost every package, and lots of updates for 1.4 functionality. * Fixed Classpath bugs: #2944 Incorrect synchronization in java.util.logging.ErrorManager #6075 java.awt.geom.GeneralPath.getCurrentPoint returns wrong results #6076 java.awt.geom.GeneralPath constructor sometimes hangs #6089 java.awt.geom.GeneralPath.getPathIterator does not work [...] VM Interface changes: * Thread has been split in a VM-independent Thread class and a VM-dependent VMThread class. New in release 0.06 (2003/22/08) * Update java.awt peers to GTK+2. * java.awt.GridBagLayout implementation. * javax.swing.border implementation. * java.security and java.security.cert updated to 1.4 spec. * New JNI native target code layer. See native/target/readme.txt. * --enable-regen-headers configure flag for automatic jni .h file generation. * Removed workaround for gcj 3.2 and lower, gcj 3.3+ or jikes 1.18+ is now needed for compiling. * Lots of improvements and/or new classes for java.awt, java.awt.dnd, java.awt.font, java.awt.geom, java.awt.image, java.io, java.math, java.net, java.nio, java.rmi, java.text, java.util, javax.swing, javax.swing.plaf, javax.swing.text. VM Interface changes: * VMClassLoader.loadClass(), the bootstrap classloader called by Class.forName() and ClassLoader.loadClass(), may now return null when a class is not found instead of throwing a new ClassNotFoundException. This is a performance optimization in some cases. This also changes the Class.forName() reference code. * Native methods in Class have been moved to VMClass. A few additional methods are also available in VMClass to provide optional performance improvements. * A VM can now supply its own String.intern() strategy through the VMString class. The supplied VMString reference class implements the original WeakHashMap strategy. * Float and Double to/from bits conversion functions can now be supplied by the VM through VMFloat and VMDouble. Default JNI conversion methods are supplied. New in release 0.05 (2003/02/15) * Supports free Java VMs Jikes RVM and Kissme out of the box, perhaps others. * Supports GNU Crypto 1.1 as the official provider of cryptographic primitives and tools for GNU Classpath, available separately from http://www.gnu.org/software/classpathx/crypto/crypto.html. * Supports GNU Classpath Tools sub-project of GNU Classpath, official provider of standard tools such as gjdoc, a javadoc replacement, and others. Future releases of GNU Classpath will begin to include these tools, available separately from http://www.gnu.org/software/cp-tools/. * Java primitives can be used to support AWT native threading, see the --enable-portable-native-sync configure option which may become the default in a future release. * Include file jni.h has been updated to the 1.4 specification. * VM specific internal types for jobject, jfieldID, and jmethodID are supported in jni.h. More details can be found by reading the comment in include/jni.h.in. By default the old definitions are used instead. * New VM helper class java.io.VMObjectStreamClass which should provide the hasClassInitializer() method. Previously ObjectStreamClass used Class.getDeclaredMethod("") but according to the spec this should always throw NoSuchMethodException for class initialization methods. A JNI reference implementation is provided as vm/reference/java-io/java_io_VMObjectStreamClass.c * There have been numerous infrastructure improvements * Configure option --enable-gjdoc to generate javadoc-like output * Gjdoc output is included with distribution, see doc/api/html/ * DESTDIR fully supported for install and uninstall * Runtime.execInternal contract changed to allow for null `env' and to accept `dir' argument. * VMObject.getClass() removed. It was never used. * java.lang.Throwable is now a 'normal' GNU Classpath class that uses the VM specific java.lang.VMThrowable to get at the VM state and (if needed) the StackTraceElements for a particular exception. A default implementation (that does nothing) is provided in vm/reference/java/lang/VMThrowable.java. * The vm/reference classes from the gnu.vm.stack and their counterparts ExecutionStack and StackFrame in gnu.java.lang have been removed since they are not actually part of the VM interface anyway. * The GPLed com.sun.javadoc classes have been moved to the gjdoc application from the GNU Classpath Tools project. See for more information the homepage at: . New in release 0.04 (2002/05/05) * Additional configure options to disable zip creation and installation as well as disable gtk peer native compilation. * Addition of java.nio, java.util.logging, and javax.swing. * Integration of most or all of the ORP patches to date, the purpose of which are to make it possible to use JBOSS with ORP and Classpath. This is still in a testing phase however. * Significant changes in the reference VM interface that may require support from the JVMs. * Lots of bugfixes. New in release 0.03 (2002/02/08) * More merges with libgcj have been performed including java.math which now provides a pure Java implementation of that package. Current status at * A pure Java implementation (Jazzlib) of java.util.zip is available. * Added the java.rmi implementation that Transvirtual donated to the FSF. * Includes jni.h now, eliminating the need to specify a particular VM via configure. * No proprietary classes or programs are required to compile. Compiles out of the box with jikes or gcj. * Separation of compiling Java source and native libraries through the configure mechanism. If given no arguments, configure will setup the subsequent build to only produce Java bytecode (.class files). More information is available in INSTALLING. * Support for compiling in a separate directory, as an example you may cd classpath-0.03; mkdir build; cd build; ../configure; make * Works with Orp 1.0.9 out of the box. Build instructions can be found at * Lots of bugfixes that were found by using Classpath with the gcj, Orp, SableVM, KissMe and Jaos VMs. Please use our bugdatabase at * Lots of updates to make Classpath more compliant with the 1.2, 1.3 and 1.4 API specification. The current status can be found at * All files are now distributed under the same terms. Added clarification to GPL exception. New in release 0.02 (2001/01/06) * Support for printing exceptions with Japhar 0.09 + patch included in resource/japhar-0.09.patch.1. * Typos, assorted bugfixes. New in release 0.01 (2000/11/20) * More packages are included now, though many remain untested. * Support for Japhar 0.09 included. New in release 0.00 (1999/02/01) * First official development release of clean room class library for Java * Following packages included: -- java.beans -- java.io -- java.lang -- java.lang.reflect -- java.math -- java.net -- java.security (partial and non-functioning) -- java.security.acl -- java.security.interfaces -- java.util * Code is mostly Java 2 (see JDK 1.2) compatible with some functionality missing and/or untested. * Support for Japhar (http://www.japhar.org/) virtual machine is included. Requires the current Japhar from CVS. * Extensive javadoc comments for public API included * Licensed under the GNU Library General Public License (see COPYING.LIB) * Does not depend on any non-free code - developed in a "clean room" environment.