Patch provided by pancake@youterm.com in PR 35262.
And add patches to build with NetBSD 3.
New in release 0.93 (Dec 8, 2006)
* 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 implementation.
* 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.
* gnu.java.net.VMPlainDatagramSocketImpl removed.
New in release 0.92 (Aug 9, 2006)
* GConf is used as a backend for java.util.prefs. GNU Classpath
thanks to Mario Torre for this contribution!
* libjawtgnu.so has been renamed libjawt.so for binary compatibility.
libjawt.so should be installed in a VM-specific directory rather
than directly in /usr/lib. Proprietary VMs put their libjawt.so
implementations in VM-specific directories but search /usr/lib first.
If GNU Classpath's libjawt.so is installed in /usr/lib it will create
problems for people who use a proprietary VM to run AWT Native
Interface applications.
* The GdkGraphics2D backend has been made the default. There is no
longer an explicit dependency on Cairo, the --enable-gtk-cairo
configure option is gone, and GTK 2.8 or higher is now required to
build the GTK peers.
* A Mozilla plugin, 'gcjwebplugin', is now included. It introduces a
dependency on the Mozilla plugin support headers and libraries.
* New java implementations of png and gif imageio readers and writers.
* A tools.texinfo document has been created and now includes
documentation about:
* appletviewer
* gcjwebplugin
* jarsigner
* keytool
* Several new tools are now included:
* appletviewer
* jar
* native2ascii
* serialver
* keytool
* jarsigner
A new configure option --enable-tool-wrappers causes wrapper
binaries to be built for VMs that support the JNI Invocation API.
* javax.sound.midi providers have been added to read and
write standard MIDI files.
* A javax.sound.sampled .au and .wav file readers have been added.
* New Java Virtual Machine Tool Interface header, jvmti.h.
* AWT peers for X Windows based on Escher (a pure java X protocol
implementation) have been added. So far it supports AWT 1.1 style
Graphics, image loading via ImageIO (PNG, GIF and BMP images in this
release), top level components as well as mouse and keyboard input.
It is capable of running many Swing applications. Graphics2D and
AWT widgets are not yet supported with this peer set.
* GConf based util.peers backend (see the --enable-gconf-peer and
--enable-default-preferences-peer configure options).
* Support for batch importing trusted certificates for use with ssl
connections (see script/import-cacerts.sh).
* NIO scatter-gather channel support.
Runtime interface changes:
* A new class, VMURLConnection, is used to implement
URLConnection.guessContentTypeFromStream. The reference
implementation uses libmagic (and falls back to doing nothing if
libmagic is not available).
* The method gnu.java.io.PlatformHelper.toCanonicalForm() has been
replaced with a JNI implementation of VMFile.toCanonicalForm() for
GNU/Posix systems.
* A new class, VMRuntimeMXBeanImpl, is used to implement
the low-level support of the runtime management bean.
VMs should use it to supply the input arguments and start
time of the VM. In addition, one of sun.boot.class.path
or java.boot.class.path should be defined by the VM to
support the optional boot class path access functionality.
* The Unsafe class was moved back to the place expected by the JSR 166
reference implementation. We've also added a couple other new VM
classes to support the JSR 166 code -- sun.reflect.Reflection and
sun.reflect.misc.ReflectUtil.
* Another new class, VMClassLoadingMXBeanImpl, is used to implement
the low-level support of the class loading management bean.
VMs need to supply it with information about how many classes
are currently loaded, how many have been unloaded and whether
verbose class loading output is on or off. Provision should also
be made for the latter to be toggled at runtime.
* VMThreadMXBeanImpl is used to implement the low-level support
of the thread management bean. Providing this interface requires
providing a fair amount of information about threads, including
optional time and contention monitoring, and instances of the
new ThreadInfo class in java.lang.management. getState() has also
been added to the VMThread interface; this is required by the bean
as well as java.lang.Thread.
* VMMemoryMXBeanImpl is used to implement the low-level support
of the memory management bean. Providing this interface requires
providing information about the levels of heap and non-heap memory,
and the number of objects eligible for garbage collection.
* VMCompilationMXBeanImpl is used to allow for optional compilation
time support for Just-In-Time compilers.
* VMMemoryPoolMXBeanImpl is used to implement the low-level support
of the memory pool beans. Providing this interface requires
providing memory usage statistics for each supported bean.
* VMManagementFactory provides the names of the memory pools,
memory managers and garbage collectors maintained by the virtual
machine. These are used to create the beans by the ManagementFactory.
* VMMemoryManagerMXBeanImpl and VMGarbageCollectorMXBeanImpl provide
low-level support for memory managers (including the specific subclass
of garbage collecting memory managers). The interfaces for these
require no more than enumerating the number of collections and the
time spent (for garbage collectors) and a relationship to the memory
pools (for all), along with a validity check.
New in release 0.91 (May 14, 2006)
(See the ChangeLog file for a full list of changes.)
* Experimental activation (java.rmi.activation) support, including RMI
activation daemon and persistent naming service tools.
* Experimental printing support: The API implementation of the javax.print
packages has been finished and work on the printing provider implementation
started. Currently supported features from the Java Print Service API are
print service discovery (CUPS registered printers), single document print
jobs and support for client-formatted print data. An example application
(see: examples/gnu/classpath/examples/print/Demo) has been added to show
the API usage for service discovery and printing of files.
* The GTKToolkit now gives access to the both the system clipboard and
system selection.
* Custom mouse cursor support has been added to the gtk+ peers. And cursors
can now also be set on light-weight components.
* Free Swing improvements: Support for OceanTheme has been mostly completed
and turned on as default Metal theme. X11-style Copy and Paste behavior in
text components with the middle mouse button. Support cursor changes on
various components when resizing. Support for Look and Feel window
decorations has been added.
* Updated locale data information to CLDR 1.3.
* Various bugs in Classpath's SecureRandom implementations have been
fixed; that class now respects the "securerandom.source" security
property and the "java.security.egd" system property.
* Support for assistive technologies has been added to AWT and Swing.
New in release 0.90 (March 6, 2006)
* Many Swing improvements
* AWT. Improved support for mixing "lightweight" and "heavyweight"
Components in Containers. Better support for dynamically updated
menus. Better 1.0 event model support for Scrollbars. Better class
documentation of gtk+ awt peers.
* GNU Crypto and Jessie have been merged into GNU Classpath; this
provides Classpath with a wide array of cryptographic algorithms
(ciphers, message digests, etc.) and implementations of SSL version
3 and TLS version 1. These roughly complement the public
`java.security.' `javax.crypto,' and `javax.net.ssl' packages, and
are service providers implementing the underlying algorithms.
* Updated HTTP and FTP URLConnection protocol handlers. HTTPS support
out of the box.
* Unicode 4.0.0 is supported. Character now includes support for using
ether a char or an int to identify code points.
* The new folder tools includes GIOP and RMI stub and tie source code
generators, IOR parser and both transient and persistent GIOP naming
services.
* XML validaton support for RELAX NG and W3C XML schema namespace
URIs. RELAX NG pluggable XML schema datatype library API and an
implementation for XML Schema Datatypes
(http://www.w3.org/TR/xmlschema-2/).
* Updated StAX implementaton to be compatible with final JSWDP 2.0.
* gnu.regexp updated from GNU/Posix syntax to support util.regex
syntax including various Unicode blocks, categories and properties.
Runtime interface changes:
* A new class, VMMath, is now available which separates the native
mathematical functions from java.lang.Math. The previous fdlibm
implementation now forms the reference material for this class.
* Updated VMObjectInputStream class to return Thread context class
loader if no other class loader is found.
* Updated documentation on InstrumentationImpl in vmintegration guide.
And of course all the implovements from the previous releases
developer is officially maintaining the package.
The rationale for changing this from "tech-pkg" to "pkgsrc-users" is
that it implies that any user can try to maintain the package (by
submitting patches to the mailing list). Since the folks most likely
to care about the package are the folks that want to use it or are
already using it, this would leverage the energy of users who aren't
developers.
New in release 0.12 (Nov 14, 2004)
* GNU Classpath's JAR implementation now has preliminary support for
signed entries, for so called "signed JAR" file support. Signed JAR
files are one of the key security features of managed runtimes, and
allows code to run privileged given unforgeable proofs of identity.
* A much improved version of X.509 certificates has been added,
including a robust certificate path checking algorithm. Also
included is an implementation of the RSA signature scheme.
* Full java.awt.color implementation, with all standard ICC profiles,
except for PhotoYCC color space.
* java.beans 1.4 updates and bug fixes.
* java.awt.image support updated to 1.4.
* Improved build process. Uses less memory with gcj and C code is
buildable with -Werror on most platform. Please configure with
--enable-Werror and report any remaining issues.
* Big-endian (PowerPC) fixes for native awt GTK+ peers.
* Checkstyle support, see scripts/checkstyle-config.xml.
* Better AWT focus management fro GTK+ peers.
* Much faster and better fonts support
(for both gdk Graphics and cairo Graphics2D)
* AWT Choice fixes for hidden components.
* HTTP Connection Handler fixes for POST support.
* Much fuller collection documentation.
* Lots of Calendar bug fixes.
* More javax.imageio support.
* Better AWT Help MenuBar support.
* Lookahead support for regular expressions.
* Serialization object stream fixes for multiple ClassLoader scenarios.
* Swing TabbedPane, ColorChooser and ComboBox improvements.
* Start of JTree functionality.
* Improved Eclipse 3 support for GNU Classpath based runtimes.
Changes:
New in release 0.11 (Sep 13, 2004)
* javax.swing.Spring and SpringLayout support.
* Added pluggable look and feel support for BasicTextFieldUI and
BasicToolBarSeparatorUI.
* java.swing.text support for (Default and Layered) Highlighter, FieldView,
PlainView, TabExpander and TabableView added.
* Start of JTable and JTree implementation.
* Internal Swing frames work.
* JMenu and JPopupMenu work.
* New gtk+ AWT FileDialog peer now based on gtk+2.4 or higher.
* java.awt.image LookupTables and kernel support.
* Improved java.awt.image.BufferedImage support.
* AWT 1.0 event model support.
* GNU Classpath now comes with some example programs (see examples/README).
* New javax.crypto, javax.crypto.interfaces, javax.crypto.spec, javax.net,
javax.net.ssl, javax.security.auth, javax.security.auth.callback,
javax.security.auth.login, javax.security.auth.x500, javax.security.sasl
and org.ietf.jgss packages are now officially part of GNU Classpath.
Extra crypto algorithms can be obtained from the GNU Crypto project,
a full TLS implementation is provided by the Jessie project.
http://www.gnu.org/software/gnu-crypto/http://www.nongnu.org/jessie/
* Frame.setIconImage() support.
* AWT GDKGraphics scaling.
* New configure flag --enable-gtk-cairo to build Graphics2D implementation
build on cairo and pangoft2. Enabled at runtime by defining the system
property gnu.java.awt.peer.gtk.Graphics=Graphics2D.
* javax.swing.JSpinner implemented.
* Extensive documentation update for java.util collection classes.
* java.awt.geom completed. Area, Arc2D, Ellipse2D and Line2D implemented.
* GNU JAXP is no longer included with GNU Classpath. Runtime, compiler and
tool integrators are encouraged to directly integrate GNU JAXP.
This release has been tested against GNU JAXP 1.1.
http://www.gnu.org/software/classpathx/jaxp/jaxp.html
* JColorChooser, JComboBox and JTextField implemented, including example
uses in GNU Classpath Examples swing Demo.
Runtime interface Changes:
* java.lang.Compiler now uses the new java.lang.VMCompiler; there is
a reference implementation that most VMs can use.
* java.lang.VMSystem has a new getenv(String) method and a reference C/JNI
implementation that should work on most Posix like systems.
* java.util.TimeZone has been split into a platform independent class and
a platform dependent class VMTimeZone. GNU Classpath comes with a generic
way to get at the default time zone for Posix/GNU-like platforms.
* [VM]AccessController improvements. In particular it handles
`doPrivileged' calls better, and allows for recursive `doPrivileged'
calls in the same Thread. (see vm/reference/java/security/)
New in release 0.10 (Jul 9, 2004)
* java.net.URL now uses application classloader to load URLStreamHandlers
and reuses URLStreamHandlers when URL is reset (but protocol isn't changed).
* java.io.File.deleteOnExit() implementation.
* java.text multiple new features and bug fixes
(only 2 out of the 1000+ java.text Mauve tests now fail).
* Better (non-black) default AWT System colors.
* AWT lists use GTK treeviews.
* Proper AWT focus management has been implemented.
* Swing menus and scrollpanes are beginning to work.
* Swing splitpanes, dialogs and internal frames were added.
* Swing repainting / double buffering was redone.
* Font management and Pango DPI conversion fixes.
* A lot of AWT imaging and event bugs have been picked out.
* More of javax.swing.text has been implemented.
* javax.swing.Timer has been reimplemented.
* java.security.AccessController has been implemented
(see runtime section).
* The default java.lang.SecurityManager now uses AccessController.
* New java.beans.Statement and Expression implementations.
* Small FileChannel implementation speed improvement for traditional
JNI based systems.
* Regenerated all included JNI header files with gcjh (3.5 CVS),
removes extra extern modifier and allows stricter compiler warning.
* More C code cleanups (-Wmissing-declarations, -Wmissing-prototypes and
-Wstring-prototypes) and jni.h fixes (a few funtion prototype fixes,
made it compilable with C++ compilers and jni.h got renamed from jni.h.in).
* Double.toString() and Float.toString() now work properly on 64-bit
PowerPC systems.
* PPC Darwin, arm, x86-64 and s/390 JNI C code compilation fixes.
* Build system refactored and removed old Japhar specific support.
* The gnu.java.awt.EmbeddedWindow class has been improved, and now
supports embedding AWT windows in other top-level X windows.
This functionality is required by gcjwebplugin.
* gcjwebplugin, an applet viewer that can be embedded into several web
browsers, has been extensively tested with this release of classpath.
(See http://www.nongnu.org/gcjwebplugin/)
* Runtime environments based on GNU Classpath 0.10 should be able to
start up Eclipse 3.0 out of the box now.
Runtime interface Changes:
* VMProcess.destroy() default implementation fixes.
* Fixed the "portable native sync" code; it had been broken since
Classpath release 0.06, when we upgraded to GTK+2.
Classpath's AWT peers use GTK+. GTK+ uses GLIB. GLIB by default uses
the platform's native threading model -- pthreads in most cases.
If the Java runtime doesn't use the native threading model, then you should
specify --portable-native-sync when configuring Classpath, so that GLIB will
use the Java threading primitives instead. (For a superior alternative,
see below.)
* The VM can set the system property
gnu.classpath.awt.gtk.portable.native.sync instead of using the
--portable-native-sync configure-type option.
See doc/vmintegration.texinfo for details.
* We intend that the next release of GNU Classpath will require the VM
to provide JNI 1.2. Classpath currently uses only JNI 1.1, except for
one JNI 1.2 function: GetEnv(), in the JNI Invocation API.
If this poses problems, please raise them on the classpath mailing list.
* The reference implementation of VMThread.holdsLock(Object) now has
a default implementation written in java. For efficiency and to
prevent spurious wakeups a real 'native' runtime version can be supplied.
* There is a new java.security.VMAccessController class that runtimes need
to implement to properly support SecurityManagers. The default
implementation that comes with GNU Classpath makes sure that ANY attempt
to access a protected resource is denied when a SecurityManager is
installed. Which is pretty secure, but also no very useful.
Please see the documentation in
vm/reference/java/security/VMAccessController.java,
and please give feedback on the GNU Classpath mailinglist whether or not
the current AccessController framework is flexible enough.
New in release 0.09 (May 2, 2004)
* 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.
in the process. (More information on tech-pkg.)
Bump PKGREVISION and BUILDLINK_DEPENDS of all packages using libtool and
installing .la files.
Bump PKGREVISION (only) of all packages depending directly on the above
via a buildlink3 include.
All library names listed by *.la files no longer need to be listed
in the PLIST, e.g., instead of:
lib/libfoo.a
lib/libfoo.la
lib/libfoo.so
lib/libfoo.so.0
lib/libfoo.so.0.1
one simply needs:
lib/libfoo.la
and bsd.pkg.mk will automatically ensure that the additional library
names are listed in the installed package +CONTENTS file.
Also make LIBTOOLIZE_PLIST default to "yes".
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.