GNU Classpath 0.16 "Harmony!" released.

We are pleased to announce a new developer snapshot of GNU Classpath.

GNU Classpath, essential libraries for java, is a project to create free
core class libraries for use with runtimes, compilers and tools for the
java programming language.

The GNU Classpath developer snapshot releases are not directly aimed
at the end user but are meant to be integrated into larger development
platforms. For example the GCC (gcj) and Kaffe projects will use the
developer snapshots as a base for future versions.

This is the first release of GNU Classpath since our Harmony
collaboration with the Apache group.  Instructions for developers
wanting to try out and help with the core library implementation can
be found at: http://developer.classpath.org/

New is our wiki with simple steps to setup a quick development
environment.  For example developers using cygwin can find examples
here: http://developer.classpath.org/mediation/ClasspathOnCygwin

Some highlights of changes in this release (more extensive list below):

AWT GtkScrollBar and GtkImage improvements. All image operations are
now working correctly. Graphics2D has been upgraded to use Cairo
0.5.x. Free Swing updates for 1.5 top-level compatibility. JTree
interface completed. JFileChooser has been implemented. Completed
implementations of BoxLayout, GrayFilter and SplitPane. Upgraded the
Corba features to 1.3 and included new CORBA 2.3 features. Start of
generic JDWP framework. And lots of bug fixes based on real world
application usage.

31 people actively contributed code to this release and made 389 CVS
commits during the last two months of development. diffstat since 0.15:
1248 files changed, 133649 insertions(+), 41802 deletions(-)

More details about the various changes and contributions below.

GNU Classpath 0.16 can be downloaded from
ftp://ftp.gnu.org/pub/gnu/classpath/
or one of the ftp.gnu.org mirrors
http://www.gnu.org/order/ftp.html

File: classpath-0.16.tar.gz
MD5sum: 220a9c86719a2c6bd7ba9b9877495113
SHA1sum: be6d30fbfe4d71015a455a367411a6d55df3484e

This release depends on gtk+ 2.4 for AWT support. But gtk+ 2.6 or
higher is recommended. Included, but not activated by default in this
release is a Graphics2D implementation based on the Cairo Graphics
framework (http://www.cairographics.org). Enabling this makes programs
like JEdit start up on GNU Classpath based runtimes.  To enable this
support install the cairo 0.5.x snapshot, configure GNU Classpath with
--enable-gtk-cairo and make sure the system property
gnu.java.awt.peer.gtk.Graphics=Graphics2D is set.

This release was explicitly tested against the last Eclipse 3.1
release (thanks to various eclipse hackers for the support).  For end
user we do however recommend to use the GCJ4 packaged version of
Eclipse 3.1 that have been prepared for the various distributions:

Fedora Core
 http://overholt.ca/wp/?p=27
Debian GNU/Linux
 http://gnu.wildebeest.org/diary-man-di/index.php?p=19
Ubuntu
 http://www.larvalstage.net/index.php?/archives/2-Introducing-Eclipse-3.1.html

Not yet included is an implementation of Generic collection classes
and classes for other 1.5 language extensions.  Work on this is being
done on a special development branch that will be included in a future
GNU Classpath release when free runtimes, compilers and tools have all
been upgraded to support these new language features.

One of the major focuses of the GNU Classpath project is expanding
and using the Mauve test suite for Compatibility, Completeness and
Correctness checking.  Various groups around GNU Classpath collaborate
on the free software Mauve test suite which contains ~30.000 core
library tests.  Mauve has various modules for testing core class
library implementations, byte code verifiers, source to byte code and
native code compiler tests.  Mauve also contains the Wonka visual test
suite and the Jacks Compiler Killer Suite. This release passes 28801
of the mauve core library tests.  See for more information:
http://www.sourceware.org/mauve/

Conformance reports for the included jaxp support can be found in the
doc/README.jaxp file.

The GNU Classpath developers site http://developer.classpath.org/
provides detailed information on how to start with helping the GNU
Classpath project and gives an overview of the core class library
packages currently provided.  For each snapshot release generated
documentation is provided through the GNU Classpath Tools gjdoc
project. A documentation generation framework for java source files
used by the GNU project. Full documentation on the currently
implementated packages and classes can be found at:
http://developer.classpath.org/doc/

Here are answers to some questions you might have about this project and
this release.

1). Who should use this software?

Although GNU Classpath is already capable of supporting many
applications written in the java programming language, this is a
development release. As such, there are still some unfinished
components, and some problems are to be expected. You should install it
if you are interested in GNU Classpath development or reporting bugs.
We appreciate both.

For end users we recommend to use one of the development environments
based on GNU Classpath which combine the core libraries with compilers
and other tools needed for creating applications and libraries.

    * GCC with GCJ  (http://gcc.gnu.org/java/)
    * Kaffe         (http://www.kaffe.org/)

Both projects have CVS versions which track GNU Classpath closely.

2). What is required to build/install/run?

GNU Classpath requires a working GNU build environment and a byte code
compiler such as jikes, gcj or kjc. When creating native code you will
also need a working C compiler and up to date Gnome development
libraries (gtk+, libart and gdk-pixbuf). More information on the
precise version numbers for the tools and libraries can be found in
the INSTALL file.

You will also need a runtime environment.  Most active GNU Classpath
hackers use JamVM (http://jamvm.sourceforge.net/) and the gcj or Jikes
bytecode compiler (http://www.jikes.org) for quick development.  But
other environments can certainly be used to hack on the GNU Classpath
core libraries.

For other environments that might need modified version of the current
release see the README file.  A complete list of virtual machines and
compilers known to be based on GNU Classpath can be found at our
website: http://www.gnu.org/software/classpath/stories.html

Note that these are just byte code execution compilers and/or
runtimes. For development of programs written in the java programming
language you will also need compilers and other tools for creating
libraries and/or executables (see question 1).

3). What platforms are supported?

GNU/Linux and FreeBSD on x86 and powerpc are regularly tested by the
developers.  Since 0.12 there is also support for cygwin.  We plan to
eventually support many others.  Many more architectures and platforms
are supported.  Check the actual runtime you use together with GNU
Classpath for detailed information on the supported platforms.

4). Where do I go for more information?

The project home page with information on our mailing list can be
found at http://www.gnu.org/software/classpath/

The GNU Classpath developer recently held a conference during Fosdem.
This was a standing room event and provided lot of communication between
the GNU Classpath, Kaffe, GCJ, IKVM, Apache, java-gnome and Cacao hackers
and users. The presentations of this event have been publised and should
give a good overview of the current status and future plans of the project:
http://www.gnu.org/software/classpath/events/escape_fosdem05.html

Developers wanting to help out with the project will find more
information and tools on http://developer.classpath.org/

5). How do I extend the functionality of the core classes?

Besides combining GNU Classpath with the runtimes and compilers above
you might want to add support for additional encryption libraries and
algorithms as provided by GNU Crypto
(http://www.gnu.org/software/gnu-crypto/).  And for additional
extension libraries (mail, activation, infobus, servlet, etc.) check
out GNU ClasspathX (http://www.gnu.org/software/classpathx).

Additional network protocol support is provided by a sub-project
called GNU Classpath Inetlib, an extension library to provide extra
network protocol support (ftp, finger, gopher) for GNU Classpath, but
it can also standalone to ease adding http, imap, pop3 and smtp client
support to applictions. Also distributed from


The following projects extend the functionality of GNU Classpath
with additional algorithms, new core packages and tools.
All are released under GPL compatible licenses:

* Jessie: A free implementation of the JSSE. Secure Sockets Extension.
  http://www.nongnu.org/jessie/
* Tritonus: A implementation of the javax.sound API.
  http://www.tritonus.org/
* gcjwebplugin: A plugin for the execution of applets in web browsers.
  http://www.nongnu.org/gcjwebplugin/

Note that the above libraries might already have been included in the
various platforms that also integrate GNU Classpath like done by the
Kaffe project.

6). What is new in this release?

New in release 0.16 (Jun 30, 2005)
(See the ChangeLog file for a full list of changes.)

* Better GTK scrollbar peer implementation when using GTK>= 2.6.
* GdkGraphics2D has been updated to use Cairo 0.5.x APIs.
* BufferedImage and GtkImage rewrites. All image drawing operations
  should now work correctly (flipping requires gtk+>= 2.6)
* Future Graphics2D, Image and Text work is documented at:
  http://developer.classpath.org/mediation/ClasspathGraphicsImagesText
* Free Swing Top-Level Compatibility. JFrame, JDialog, JApplet,
  JInternalFrame, and JWindow are now 1.5 compatible in the sense that you
  can call add() and setLayout() directly on them, which will have the same
  effect as calling getContentPane().add() and getContentPane().setLayout().
* The JTree interface has been completed. JTrees now recognizes mouse clicks
  and selections work, but the visual implementation is not yet complete.
  Work on expansion and collapsing of the tree nodes is being implemented.
* BoxLayout works properly now.
* Fixed GrayFilter to actually work.
* Metal SplitPane implemented.
* Lots of free swing text and editor stuff work now.

* When gtk+ 2.6 or higher is installed the default log handler will produce
  stack traces whenever a WARNING, CRITICAL or ERROR message is produced.

* The CORBA implementation is now a working prototype that should support
  features up till 1.3 inclusive.
  We would invite groups writing CORBA dependent applications to
  try Classpath implementation, reporting any possible bugs.

  The CORBA prototype is interoperable with Sun's implementation v 1.4,
  transferring object references, primitive types, narrow and wide
  strings, arrays, structures, trees, abstract interfaces and
  value types (feature of CORBA 2.3) between these two platforms.
  The remote exceptions are transferred and handled correctly.
  The stringified object references (IORs) from various sources are
  parsed as required.
  The transient (for current session) and permanent (till jre restart)
  redirections work.
  Both Little and Big Endian encoded messages are accepted.
  The implementation is verified using tests from the former cost.omg.org.
  The current release includes working examples (see the examples directory),
  demonstrating the client-server communication, using either CORBA Request
  or IDL-based  stub (usually generated by a IDL to java compiler).
  These examples also show how to use the Classpath CORBA naming service.
  The IDL to java compiler is not yet written, but as our library must be
  compatible, it naturally accepts the output of other idlj implementations.

* New --with-vm-classes configure option, and new 'build' setting
  for --with-glibj. (Only for integrators.)

Runtime interface changes:

* Start of a generic JDWP framework in gnu/classpath/jdwp.
  This is unfinished, but feedback (at classpath@gnu.org) from runtime
  hackers is greatly appreciated. Although most of the work is currently
  being done around gcj/gij we want this framework to be as VM neutral as
  possible. Early design is described in:
  http://gcc.gnu.org/ml/java/2005-05/msg00260.html
* Native method VMClass.getModifiers() now takes an additional
  boolean parameter.
* Deprecated native method VMClassLoader.defineClass(ClassLoader,
  String, byte[], int, int) has been replaced by
  VMClassLoader.defineClass(ClassLoader, String, byte[], int, int,
  ProtectionDomain)
* VMClassLoader.loadClass(String name, boolean resolve) is now native,
  replacing the former version which just returned null.
* Deprecated native method VMClassLoader.getPrimitiveClass(String) has
  been replaced by new native method VMClassLoader.getPrimitiveClass(char).
* Previously empty implementations of methods VMThread.countStackFrames(),
  VMThrowable.fillInStackTrace(), and VMThrowable.getStackTrace() have
  been removed; these methods are now native methods.
* Fields "exceptionTypes" and "parameterTypes" have been removed from
  Contructor.java and getExceptionTypes() and getParameterTypes() are
  now native methods.

The following people helped with this release:

Andreas Jaeger (mprec updates)
Andreas Tobler (Darwin support)
Andrew John Hughes (Locale and net fixes, URI RFC2986 updates)
Andrew Overholt (File locking)
Anthony Balkissoon (JList, Free Swing 1.5 updates  and mouse event fixes)
Archie Cobbs (VM interface updates)
Audrius Meskauskas (Corba and HTML work)
Bryce McKinlay (RMI work)
Chris Burdess (XML work)
Christian Thalinger (fdlibm updates)
Dalibor Topic (SHA1PRNG and GdkPixbugDecoder updates)
David Daney (BitSet bugfixes)
David Gilbert (Lots and lots of documentation and awt/swing fixes)
Gary Benson (MessageFormat fixes)
Goffredo Baroncelli (HTTPURLConnection fixes)
Jan Roehrich (JTree fixes)
Jeroen Frijters (ClassLoader and nio cleanups)
Ka-Hing Cheung (TreePath and TreeSelection fixes)
Kalle Olavi Niemitalo (Build fixes)
Keith Seitz (JDWP work)
Kim Ho (JFileChooser implementation)
Lillian Angel (JTree implementation and lots of bug fixes)
Mark Wielaard (build fixes, GdkPixpufDecoder fixes and packaging)
Michael Koch (Locale updates, bug and build fixes)
Olga Rodimina (MenuSelectionManager)
Robert Schuster (charset and awt fixes)
Roman Kennke (BoxLayout, GrayFilter and SplitPane, plus bugfixes all over)
Sven de Marothy (GtkImage rewrite, 2D, awt, free swing and date/time fixes)
Thomas Fitzsimmons (Lot of upgrades to the gtk+ AWT and cairo 2D support)
Tom Tromey (libgcj merging, build infrastructure and bug fixes)
Ziga Mahkovec (Graphics2D upgraded to cairo 0.5 and new regex features)

We would also like to thank the numerous bug reporters and testers!



Return to GNU's home page.

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to contact the FSF.

Please send comments on these web pages to webmasters@www.gnu.org, send other questions to gnu@gnu.org.

Copyright © 1999-2006 Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.

Updated: $Date: 2009/07/30 22:51:19 $ $Author: gnu_andrew $