We are proud to announce the release of GNU Classpath 0.93 "Dreamland"

Read on for highlights of new features in this release, pointers to
supported applications and screenshots, the status and future of the
1.4 and 1.5 generics branches. An update on the Summer of Code
student work. Plus some prelimenary ideas on cooperating with the Sun
GPL OpenJDK Java project. And the GNU Classpath commitments to the
Free Software community for the future of various projects around GNU
Classpath, the users and GNU/Linux distros relying on our work.

Highlights of new features in this release (more extensive list below):

With this release our 1.4 library work is 99.95 API complete.
Although this doesn't mean GNU Classpath is fully compatible and a
perfect drop in replacement for proprietary 1.4 JDKs yet, it is pretty
close and any divergence should be considered a bug. Our 1.5 library
work is now 95.5% API complete.

This is the last release that will have two separate library releases
for 1.4 and 1.5. The next release will be based on our 1.5 generics
branch work. We are willing to maintain a 1.4 branch based the
non-generic 0.93 release if people are interested in support for
this. Please contact the mailinglist classpath@gnu.org if you are.

This release contains two large contributions sponsored by the Google
Summer of Code project. Casey Marshall rewrote the SSL library to use
the NIO model of JSSE (implementing SSLEngine) and added support for
TLSv1.1 and pre-shared key ciphersuites. Originally developed on the
ssl-nio-branch this work is now available in the generics release.
Andrew John Hughes wrote a lang.management MX Beans ManagementFactory
implementation, which allows a runtime based on GNU Classpath to
provide various MX Beans through javax.management services that a user
can use to query the status and usage of various low level vm
resources. The the original implementation was written for GCJ, but
for this release other runtimes (e.g. jamvm and cacao) have added
support based on the generic vm-interface designed by Andrew.

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. More projects based
on GNU Classpath: http://www.gnu.org/software/classpath/stories.html

The new project 'OpenJDK' started by Sun will provide a full SE Java
environment. Only parts have been released now. And the GNU Classpath
community already started adopting independent parts to make them work
on a full free stack. With the 0.93 generics release you should be
able to compile and run the GPl javac compiler with some tricks.
http://gnu.wildebeest.org/diary/index.php?p=172 We hope to cooperate
more substantially with the OpenJDK community in the future.

Not all code has been released by Sun, in particular the core class
libraries will not be release till somewhere next year. And some parts
might be encumbered preventing Sun from releasing those parts. We will
try and help plugg any holes left. It is too early to claim we already
know how our communities will interact and work together. But the
general feeling is positive. Sun has been very open, clear and
cooperative about OpenJDK and letting the GNU Classpath community know
about their plans and willingness to work with the existing free
software communities.

The GNU Classpath community is happy with this development and
although it is too early to see what the future might bring we know we
have the following commitments to our developers, users, projects and
GNU/Linux distros depending on our work:

- We will not regress on freedom. For anything Sun cannot release
(now) under the GPL we will provide free replacements.

- We will not regress on coverage. The platforms, architectures,
projects and programs that run now with GNU Classpath should run in
the future.

- We will not regress on having fun, innovating and hacking together!

We want to make it easy to adopt and collaborate. We want to make it
easy for people to improve together with GNU Classpath and OpenJDK by
helping also the smaller projects and platforms with less resources to
adopt the new innovation (coordinating new VM and Platform interfaces)

Various individual GNU Classpath hackers have made personal statements
about all this (from Planet Classpath - http://planet.classpath.org/):

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/

New in release 0.93 (Dec 8, 2006)
(See the ChangeLog file for a full list of changes.)

CORBA objects that exist on the same virtual machine and only are

connected to another ORB are now accessed directly and no longer via
network. It is the same feature that RMI implementation
provides. These faster calls should be completely transparent, as the
parameters are cloned, where required. Currently the direct calls are
only possible for the non-deprecated objects that are connected to the
ORB via POA.

The 'javah' tool has been added. It requires the ASM library

(see asm.objectweb.org); it can be enabled with the --with-asm
option to configure

Added the rmi and corbaname URL context factories for JNDI.

Fixes in the JNDI InitialContext now allows to plug-in user

implementations.

Removed currentClassLoader method from

vm/reference/java/io/ObjectInputStream.java.

Added firstNonNullClassLoader method to

vm/reference/gnu/classpath/VMStackWalker.java. VMs are encouraged to
provide a more efficient implementation.

Added aton method to vm/reference/java/net/VMInetAddress.java.

NetworkInterface has been implemented for systems that provide the

`getifaddrs' function.

java.nio.channels.Selector implementations have been added that use

the kqueue notification mechanism on Mac OS X and *BSD, and that use
the epoll notification mechanism on Linux 2.6.

java.nio has been refactored to support more non-blocking operations

natively. Blocking IO classes have been refactored to call
non-blocking classes. Non-blocking accepts, connects, and
scatter-gather IO should now be better supported.

HTML support for Swing has been greatly enhanced.

Runtime interface changes:

java.net.VMNetworkInterface and java.net.NetworkInterface have been

updated to keep native-modified state in the former, and to simplify
the native code in our reference implementation.

gnu.java.nio.VMChannel has been expanded to better support native

non-blocking IO. Most native state data (such as file descriptor
integers) has been abstracted away into private state in the runtime
interface.

gnu.java.nio.VMPipe has been similarly changed.

gnu.java.net.VMPlainSocketImpl has been changed to remove some

functionality now provided by VMChannel; datagram socket-specific
methods have also been moved here, deprecating
VMPlainDatagramSocketImpl.