#!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.13 Announcement (2005-01-07)"> 
<pre>
We are pleased to announce a new developer snapshot release of GNU Classpath.

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

GNU Classpath 0.13 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.13.tar.gz
MD5sum: 9920904c15f2cdb15e38c4a44968c4f9
SHA1sum: f431a24d7f25259123ae8a897b4d71be76ac76ea

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

Includes HTTP/1.1 and FTP URL handlers. Added java.beans XMLEncoder and
XMLDecoder classes. More than 250 locales are supported now. SAX, DOM,
XSL and XPath implementations for javax.xml (JAXP 1.3) have been added.
Better AWT on gtk+ and Swing support. An AWT Robot implementation based
on the XServer XTest Extension for the gtk+ peers has been added.

GNU Classpath uses the Mauve test suite for Compatibility, Completeness
and Correctness checking.  This release passes 23131 of 23729 mauve tests.
Conformance reports for the included jaxp support can be found in the
doc/README.jaxp file.

22 people are listed in the ChangeLog file (full list below)
and there were 245 commits to CVS since the last release.

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 on GNU Classpath based runtimes.  Note that this release
needs a cairo CVS build.

[It is recommended that people wanting to experiment with the
Graphics2D implementation follow the instructions for building gcj
with jhbuild which automatically builds the latest CVS version of GCJ
and Cairo at http://people.redhat.com/fitzsim/gcj-and-jhbuild.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.

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. The following runtime
environments (which don't include compilers or other tools, see above)
work out of the box with GNU Classpath (tested by and recommended for
GNU Classpath hackers).

    * JamVM (1.2.3) (http://jamvm.sourceforge.net/)
    * Kissme (CVS)  (http://kissme.sourceforge.net/)

Other runtimes known to work with the latest or a previous release are
JikesRVM, IKVM.NET, JC, SableVM (-Xgnuclasspath) and CACAO.
(You might need staging, development or CVS versions for support of the
latest GNU Classpath release with some of these.)

Note that these are just byte code execution 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).

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

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.

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/

A good overview of the current status can be found on the GNU Classpath
at FOSDEM'04 page which describes the last GNU Classpath hacker meeting.
It includes reports and presentations on the current status and future
plans: http://www.gnu.org/software/classpath/events/fosdem04.html

The following presentation given during the Desktop Developers
Conference shows how to integrate GNU Claspath and GCJ more with the
Free Desktop environments: http://people.redhat.com/fitzsim/ddc2004/

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.13 (Jan 6, 2005)
(See the ChangeLog file for a full list of changes.)

* The http url protocol handler has been replaced with a full HTTP/1.1
  version from GNU inetlib.
* A new ftp url protocol handler has been added also from GNU inetlib.
* java.beans has been updated to 1.4 including support for XMLEncoder
  and XMLDecoder.
* The java.util.Locale support is now based on the Common Locale Data
  Repository (CLDR) Project (see http://www.unicode.org/cldr/).
  GNU Classpath provides support for more than 250 locales now.
  This new support is experimental and the GNU Classpath hackers are
  working together with runtime developers and the unicode consortium
  to improve them in the future.
  If your runtime misdetects your locale or if the default locale gives
  problems please try running with -Duser.language=en and -Duser.region=US
  to fall back on a known good locale.
* Added implementations of javax.xml (JAXP 1.3), org.xml.sax (SAX2) and
  org.w3c.dom (DOM Level 3) interfaces. It is possible to switch between
  different implementations AElfred2, GNU DOM, GNU XSL, libxmlj SAX,
  libxmlj DOM and libxmlj XSL by setting different system properties.
  Also provided is a preliminary XPath 1.0 implementation.
  The libxmlj versions are build around libxml2 and libxslt and have to
  be enabled during build time by the --enable-xmlj configure flag.
  The current support is equal to the last released GNU JAXP 1.3 release.
  These packages will be maintained as part of the GNU Classpath core classes
  in the future. For more information, conformance results and documentation
  on selecting different implementations see doc/README.jaxp.
* More AWT accessible support.
* AWT gtk+ peers component layout, dialog placement, keyboard focus
  handling and text positioning have been improved.
* ImageIO interfaces are more complete.
* JList, JTable and JTree have been hugely improved.
* java.awt.Robot support with GdkRobot in the gtk+ awt peers.
  Needs XTest Extension (libXtst) XServer support.
* New --disable-examples configure argument.

Runtime interface changes:

* Added a new method (VMRuntime.enableShutdownHooks) that enables the VM
  to lazily register an exit handler.
* The java.lang.Class constructor now automatically sets the protection
  domain for array classes, based on the protection domain of the component
  type class.
* New gnu.classpath.VMSystemProperties class. This replaces the
  system properties initialization in VMRuntime. Note that it is
  now the VMs responsibility to set one additional property:
  gnu.cpu.endian should be set to "big" or "little".
* VMRuntime.nativeGetLibname() has been renamed to VMRuntime.mapLibraryName()
  and has only one argument, the name of the library.
* String and StringBuffer now call VMSystem.arraycopy() directly and don't
  go through java.lang.System. Be careful to not initialize java.lang.System
  early in the bootstrap sequence in your VM runtime interface classes.
* Some (wrong) documentation about the behavior of VMThread.sleep(0, 0)
  has been updated. Also, VMThread.sleep() now has a default non-native
  implementation, but it is a generic implementation that ignores the
  nano-seconds argument. Runtime hackers are encouraged to provide a more
  efficient version.
* There is prelimenary support for nio direct byte buffers.
  See VMDirectByteBuffer. Please contact the GNU Classpath mailinglist when
  you add support for this to your runtime.

The following people helped with this release:

Andrew John Hughes (Locale, Currency and java.text updates), Archie Cobbs
(Thread improvements), Bryce McKinlay (ResourceBundle speedups), Casey
Marshall (FileLock fixes), Chris Burdess (locale generator, xml integration,
http and ftp handlers), Craig Black (BeanInfoEmbryo improvements), David
Gilbert (AWT and geom documentation), Graydon Hoare (Graphics2D and
BufferedImage improvements), Guilhem Lavaux (CLDR parser and Object stream
serialization improvements), Ito Kazumitsu (nio ByteBuffer fixes), Jeroen
Frijters (Runtime interfaces improvements, including shutdown hooks and
system properties, nio and zip fixes), Jerry Quinn (AWT accessibility
support), Mark Wielaard (packaging and integration), Michael Koch (Locale,
Swing, InetAddress, ImageIO, nio improvements and libgcj integration),
Olga Rodimina (JTable improvements), Patrik Reali (website maintenance),
Paul Jenner (ImageIcon additions), Ranjit Mathew (IdentityHashMap fix),
Robert Schuster (java.beans updates, XMLEncode and XMLDecoder
implementations and JComboBox improvements), Sven de Marothy (Graphics2D,
java.awt.image and java.awt.geom fixes), Thomas Fitzsimmons (GdkRobot,
gtk+ peers component layout, dialog placement, keyboard focus handling and
text positioning), Tom Tromey (gcjx support, zip and ResourceBundle fixes)
</pre>

<footer>


