#!wml --include=..

#use wml::std::page
#use wml::std::lang
#use wml::fmt::isolatin
#use wml::std::case global=upper

<lang:star:slice:>

<set-var last-modified-author="prr">

#include <include/macros.wml>

<header title="GNU Classpath 0.15 Announcement (2005-04-29)"> 
<pre>
We are pleased to announce a new developer snapshot release 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.

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

Optimized nio and nio.charset plus io streams integration leading to
large speedups in character stream performance.  To compliment this
new framework a native iconv based charset provider was added.  Better
support for free swing metal and pluggable lafs. Some org.omg.CORBA
support added. Better java.beans support for the Eclipse Visual Editor
Project. Completely lock free ThreadLocal implementation added. More
javax.swing.text support for RTF and HTML. More flexible runtime
interfaces and build configuration options.

26 people actively contributed code to this release and made 299 CVS
commits during the last two months of development. diffstat since 0.14:
993 files changed, 74259 insertions(+), 15666 deletions(-)
More details about the various changes and contributions below.

GNU Classpath 0.15 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.15.tar.gz
MD5sum: 036c23aec7cb53a43b7b9dc63a92fbbe
SHA1sum: 971bdd436b8010ab30096869f689a44d41e5a01c

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
JFreeChart work and JEdit start up on GNU Classpath based runtimes.
To enable this support install the cairo 0.3.0 snapshot, configure
GNU Classpath with --enable-gtk-cairo and make sure the system
property gnu.java.awt.peer.gtk.Graphics=Graphics2D is set.

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 focusses 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 more then 27.500
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 27.325
of the mauve core library tests.
See for more information: http://sources.redhat.com/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).

2). 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.

5). 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/

6). 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
<ftp://ftp.gnu.org/gnu/classpath/>

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.15 (Apr 29, 2005)
(See the ChangeLog file for a full list of changes.)

* The old character encoding framework (gnu.java.io.EncodingManager)
has been replaced by a system based completely on nio.charset
providers. Many converters have been added, both the io, lang and nio
frameworks now use the same set of converters and the whole character
stream framework (Readers and Writers) have been optimized. For some
workloads this leads to 2x till 20x speedups.

The default charsets supported are:

  Cp424, Cp437, Cp737, Cp775, Cp850, Cp852, Cp855, Cp857, Cp860, Cp861,
  Cp862, Cp863, Cp864, Cp865, Cp866, Cp869, Cp874, ISO_8859_1, ISO_8859_13,
  ISO_8859_15, ISO_8859_2, ISO_8859_3, ISO_8859_4, ISO_8859_5, ISO_8859_6,
  ISO_8859_7, ISO_8859_8, ISO_8859_9, KOI_8, MS874, MacCentralEurope,
  MacCroatian, MacCyrillic, MacDingbat, MacGreek, MacIceland, MacRoman,
  MacRomania, MacSymbol, MacThai, MacTurkish, US_ASCII, UTF_16, UTF_16BE,
  UTF_16Decoder, UTF_16Encoder, UTF_16LE, UTF_8, UnicodeLittle, Windows1250,
  Windows1251, Windows1252, Windows1253, Windows1254, Windows1255,
  Windows1256, Windows1257, Windows1258.

Many more encoding are supported through the new IconvProvider
depending on the platform iconv support. GNU libiconv is recommended.
The IconvProvider is currently not enabled by default. To enable it
define the system property gnu.classpath.nio.charset.provider.iconv=true.
Some runtimes might choose to enable this by default by setting it
through VMSystemProperties. We would like to get feedback on whether
enabling or disabling the IconvProvider by default results in the
highest speedups.

* Free swing metal and pluggable look and feels have been improved.
The GNU Classpath free swing example can now be run with different
"skins" by setting the system property swing.defaultlaf to the GNU,
Basic or Metal look and feel.

* Some of the org.omg.CORBA classes and packages have now been
implemented. The Savannah bug tracker contains additional tasks for
which we are seeking help.

* Fixed compatibility problems in the java.beans which affected
Eclipse's Visual Editor Project.

* New completely lock free (Inheritable)ThreadLocal implementation.

* javax.swing.text.rtf framework added which can handle simple (plain)
text tokens.

* Support for parsing html files into Level 2 Document Object Model
(org.w3c.dom.html2 and javax.swing.text.html.parser). And a start of
javax.swing.text.html framework added.

Runtime interface changes:

* jni.h changed to better support compiling runtimes implementing jni;
  see VM integration guide for details.
* New --enable-default-toolkit option to configure can be used to set
  the fully qualified class name of the default AWT toolkit to use.
  If not given, the old default of gnu.java.awt.peerk.gtk.GtkToolkit
  is used.
* New --disable-core-jni option can be used to disable building the
  "core" JNI libraries.  This is primarily useful if your VM can use the
  Gtk peers but not the core JNI libraries.
* New system property "gnu.classpath.boot.library.path" can be specified
  to define the location of the JNI libraries. It is by all means meant
  ONLY for VM implementors and GNU Classpath hackers. See the hacking
  guide for more information.
* The helper methods currentLoader() and allocateObject() for
  java.io.ObjectInputStream have been moved to a VMObjectInputStream class.
  Reference implementations are provided.
* java.net.InetAddress now uses VMInetAddress for runtime/platform
  specific methods getLocalHostname(), getHostByAddr() and
  getHostByName(). java.net.NetworkInterface now uses VMNetworkInterface
  for runtime/platform specific getInterfaces() support. Default
  (Posix/GNU JNI) implementations are provided.
* VMClass has a new method getModifiers(Class, boolean) which can be
  used to get the real modifiers for an inner class or the ones
  specified by the InnerClasses attribute.
* All (possible) runtime specific methods of Object and Double are now
  in VMObject and VMDouble. Where possible generic reference
  implementations are provided.
* The reference implementation of VMClassLoader now handles zip files
  on the boot loader class path in getResources().

The following people helped with this release:

Andreas Tobler (Security warning fixes, fdlibm merging and cleanups)
Andrew Haley (FileChannel optimizations)
Andrew John Hughes (URL/URI, rmi.naming, java.text, Currency and generics)
Archie Cobbs (RPM spec file, VMClassLoader fixes, jni cleanups)
Audrius Meskauskas (Lots of corba work, javax.swing.text.html and dom parser)
Casey Marshall (x509 and asn1/der fixes)
Chris Burdess (writeUTF optimization, html2 dom support and net protocols)
Dalibor Topic (FileChannel fixes, kaffe porting)
David Daney (InetAddress fixes)
David Gilbert (awt documentation, font fixes)
Guilhem Lavaux (VMSelector and IndexColorModel fixes)
Ito Kazumitsu (DecimalFormat parse fixes)
Jeroen Frijters (nio optimizations, VMClass fixes, ThreadLocal rewrite)
Luca Barbieri (FileChannel.tryLock fixes)
Mark Wielaard (cleanups and packaging)
Michael Franz (OSX testing)
Michael Koch (VM interface restructuring, libgcj merging, lots of bug fixing)
Mike Stump (fdlibm ppc64 fixes)
Olafur Bragason (PipedInputStream bug reporting)
Patrik Reali (Website maintenance)
Rei Odaira (VMSelector bug reporting)
Riccardo Mottola (Darwin6 testing)
Robert Schuster (java.beans, boot.library.path, jni fixes, mediation work)
Roman Kennke (Lots of free swing work, MediaTracker and RTF work)
Sven de Marothy (io, nio and charset optimizations and rewrites)
Thomas Fitzsimmons (URL, gtk-peers and free swing work)
Tom Tromey (build and code cleanups, jni merging with libgcj and generics)

</pre>

<footer>
