Imported GNU Classpath 0.90
[gcc.git] / libjava / classpath / NEWS
1 New in release 0.90 (March 6, 2006)
2
3 * Free Swing improvements: JTable columns are rearrangeable and
4 resizeable with mouse. Painting and scrolling are now much
5 faster. Plain text components now support highlighting and
6 copy+paste to the system clipboard. Support for styled text has been
7 improved, including some very basic HTML support. JFileChooser is
8 now usable. Global event dispatching has been implemented. Memory
9 consumption of Swing components has been reduced. Lots of general
10 bugfixes. Added new system property to turn off Graphics2D use in
11 Swing, even if Graphics2D is available: gnu.javax.swing.noGraphics2D
12
13 * AWT. Improved support for mixing "lightweight" and "heavyweight"
14 Components in Containers. Better support for dynamically updated
15 menus. Better 1.0 event model support for Scrollbars. Better class
16 documentation of gtk+ awt peers.
17
18 * GNU Crypto and Jessie have been merged into GNU Classpath; this
19 provides Classpath with a wide array of cryptographic algorithms
20 (ciphers, message digests, etc.) and implementations of SSL version
21 3 and TLS version 1. These roughly complement the public
22 `java.security.' `javax.crypto,' and `javax.net.ssl' packages, and
23 are service providers implementing the underlying algorithms.
24
25 * Updated HTTP and FTP URLConnection protocol handlers. HTTPS support
26 out of the box.
27
28 * Unicode 4.0.0 is supported. Character now includes support for using
29 ether a char or an int to identify code points.
30
31 * More correct handling of Object methods and serialization support
32 for Proxy and abstract classes.
33
34 * The new folder tools includes GIOP and RMI stub and tie source code
35 generators, IOR parser and both transient and persistent GIOP naming
36 services.
37
38 * Added experimental support for dynamic creation of the RMI stubs
39 using proxy classes. The rmic compiler is no longer required (unless
40 for research and specific stubs).
41
42 * XML validaton support for RELAX NG and W3C XML schema namespace
43 URIs. RELAX NG pluggable XML schema datatype library API and an
44 implementation for XML Schema Datatypes
45 (http://www.w3.org/TR/xmlschema-2/).
46
47 * Updated StAX implementaton to be compatible with final JSWDP 2.0.
48
49 * The default back end for java.util.prefs has been changed. The new
50 default is capable of saving and restoring preferences to and from
51 the file system.
52
53 * javax.imageio.plugins.bmp implementation.
54
55 * Added --enable-collections configure option which builds
56 "collections.jar", a 1.1 VM compatibility jar.
57
58 * gnu.regexp updated from GNU/Posix syntax to support util.regex
59 syntax including various Unicode blocks, categories and properties.
60
61 Runtime interface changes:
62
63 * A new class, VMMath, is now available which separates the native
64 mathematical functions from java.lang.Math. The previous fdlibm
65 implementation now forms the reference material for this class.
66
67 * Updated VMObjectInputStream class to return Thread context class
68 loader if no other class loader is found.
69
70 * Updated documentation on InstrumentationImpl in vmintegration guide.
71
72 New in release 0.20 (Jan 13, 2006)
73
74 * New StAX pull parser and SAX-over-StAX driver. Lots of DOM, SAX/StAX,
75 XPath and XSLT improvements. Support for XInclude and XML Base added.
76 Conformance is now regularly tested against various test-suites at
77 http://builder.classpath.org/xml/ See also doc/README.jaxp.
78
79 * Full beans XMLEncoder implementation.
80
81 * javax.sound.sampled implementation.
82
83 * javax.print.attribute and javax.print.event implementated.
84
85 * Lots of new datatransfer, print swing and swing.text work and optimization.
86
87 * Additional 1.5 support. Including new (separate) generic branch release.
88
89 * SecurityManager cleanups and start of review of all Permission checks
90 (includes adding lots of new checks to the Mauve test-suite).
91
92 * Buildable on cygwin.
93
94 * Fully buildable as "in-workspace" library-plus-vm inside (native) Eclipse
95 see http://developer.classpath.org/mediation/ClasspathHackingWithEclipse
96
97 * Full example that shows a real world CORBA and Free Swing implementation.
98 See examples/gnu/classpath/examples/CORBA/swing/README.html
99
100 * A list of bug fixes can be found at:
101 http://gcc.gnu.org/bugzilla/buglist.cgi?product=classpath&target_milestone=0.20
102
103 Runtime interface changes:
104
105 * New method VMStackWalker.getClassLoader() was added to avoid an infinite
106 loop between getCallingClassLoader() and Class.getClassLoader().
107
108 * The included fdlibm implementation has seen several cleanups to handle
109 new architectures and namespacing issues (in particular for ppc, darwin
110 and non-C99 compilers). Please double check any arithmetic test against
111 new platforms/runtimes.
112
113 * The gnu.java.net.Plain[Datagram]Socket implementations have been
114 turned into VM reference classes with JNI/Posix implementations.
115
116 New in release 0.19 (Nov 2, 2005)
117
118 * The Swing RepaintManager has been reworked for more efficient painting,
119 especially for large GUIs.
120
121 * The Swing layout manager OverlayLayout has been implemented, the BoxLayout
122 has been rewritten to make use of the SizeRequirements utility class and
123 caching for more efficient layout.
124
125 * Improved accessibility support for Swing.
126
127 * The java.net.HttpURLConnection implementation no longer buffers the
128 entire response body in memory. This means that response bodies
129 larger than available memory can now be handled.
130
131 * The Andrew Watson, Vice President and Technical Director of the Object
132 Management Group, has officially assigned us 20 bit Vendor Minor Code Id:
133 0x47430 ("GC") that will mark remote Classpath - specific system exceptions.
134 Obtaining the VMCID means that GNU Classpath now is a recogniseable type of
135 node in a highly interoperable CORBA world.
136
137 * Classpath now includes the first working draft to support the RMI over
138 IIOP protocol. The current implementation is capable for remote invocations,
139 transferring various Serializables and Externalizables via RMI-IIOP protocol.
140 It can flatten graphs and, at least for the simple cases, is interoperable
141 with Sun's jdk 1.5.
142
143 * Qt4 configury switches for OS-X. Additional to the --enable-qt-peer, OS-X
144 users with a Qt4 installation can build the qt-peers with the argument
145 --with-qt4dir=<Qt4-installation-dir>.
146
147 * Significant progress has been made in the implementation of the
148 javax.swing.plaf.metal.* package, with most UI delegates in a working state
149 now. Please test this with your own applications and provide feedback that
150 will help us to improve this package.
151
152 * The GUI demo (gnu.classpath.examples.swing.Demo) has been extended to
153 highlight various features in our free-swing implementation. And includes
154 a look and feel switcher (Metal default, Ocean or GNU).
155
156 Runtime interface changes:
157
158 * Changed implementation of VMClassLoader.getPackage(s) : new method
159 VMClassLoader.getBootPackages should be implemented by the vm, and sould
160 return a string array of boot package names ("java.lang", "java.net", ...).
161 Feedback from vm implementors for usability and relevance of the
162 getBootPackages method would be greatly appreciated.
163
164 New in release 0.18 (Sep 6, 2005)
165
166 * GNU JAWT implementation, the AWT Native Interface, which allows direct
167 access to native screen resources from within a Canvas's paint method.
168 GNU Classpath Examples comes with a Demo, see examples/README.
169 * awt.datatransfer updated to 1.5 with supports for FlavorEvents.
170 The gtk+ awt peers now allow copy/paste of text, images, uris/files
171 and serialized objects with other applications and tracking
172 clipboard change events with gtk+ 2.6 (for gtk+ 2.4 only text and
173 serialized objects are supported). A GNU Classpath Examples
174 datatransfer Demo was added to show the new functionality.
175 * org.omg.PortableInterceptor and related functionality in other packages
176 is now implemented:
177 - The sever and client interceptors work as required since 1.4.
178 - The IOR interceptor works as needed for 1.5.
179 * The org.omg.DynamicAny package is completed and passes the prepared tests.
180 * The Portable Object Adapter should now support the output of the
181 recent IDL to java compilers. These compilers now generate servants and
182 not CORBA objects as before, making the output depended on the existing
183 POA implementation. Completing POA means that such code can already be
184 tried to run on Classpath. Our POA is tested for the following usager
185 scenarios:
186 - POA converts servant to the CORBA object.
187 - Servant provides to the CORBA object.
188 - POA activates new CORBA object with the given Object Id (byte array)
189 that is later accessible for the servant.
190 - During the first call, the ServantActivator provides servant for this
191 and all subsequent calls on the current object.
192 - During each call, the ServantLocator provides servant for this call
193 only.
194 - ServantLocator or ServantActivator forwards call to another server.
195 - POA has a single servant, responsible for all objects.
196 - POA has a default servant, but some objects are explicitly connected
197 to they specific servants.
198 The POA is verified using tests from the former cost.omg.org.
199 * The javax.swing.plaf.multi.* package is now implemented.
200 * Editing and several key actions for JTree and JTable were implemented.
201 * Lots of icons and look and feel improvements for Free Swing basic and
202 metal themes were added. Try running the GNU Classpath Swing Demo in
203 examples (gnu.classpath.examples.swing.Demo) with:
204 -Dswing.defaultlaf=javax.swing.plaf.basic.BasicLookAndFeel
205 -Dswing.defaultlaf=javax.swing.plaf.metal.MetalLookAndFeel
206 * Start of styled text capabilites for java.swing.text.
207 * NIO FileChannel.map implementation, fast bulk put implementation for
208 DirectByteBuffer (speeds up this method 10x).
209 * Split gtk+ awt peers event handling in two threads and improve gdk lock
210 handling (solves several AWT lock ups).
211 * Speed up awt Image loading.
212 * Updated TimeZone data against Olson tzdata2005l.
213 * Make zip and jar UTF-8 "clean".
214 * "native" code builds and compiles (warning free) on Darwin and Solaris.
215
216 Runtime interface changes:
217
218 * All native resource "pointers" in the VM interface classes are now exposed
219 as gnu.classpath.Pointer objects. This might impact runtimes that
220 optimize and support java.nio.DirectByteBuffers. Creating these classes
221 and accessing the contents as void * pointers for the native reference JNI
222 implementation is done through the JCL_NewRawDataObject and JCL_GetRawData
223 functions.
224 * Simplified the Class/VMClass interface.
225 * Removed loadedClasses map from ClassLoader. It's now the VMs responsibility
226 to manage the list of defined and loaded classes for each class loader.
227 * Moved native methods from java.lang.reflect.Proxy to VMProxy.
228 * Added hook to VMClassLoader to allow VM to do class caching.
229
230 New Untested/Disabled Features:
231
232 The following new features are included, but not ready for production
233 yet. They are explicitly disabled and not supported. But if you want
234 to help with the development of these new features we are interested
235 in feedback. You will have to explicitly enable them to try them out
236 (and they will most likely contain bugs). If you are interested in any
237 of these then please join the mailing-list and follow development in
238 CVS.
239
240 * QT4 AWT peers, enable by giving configure --enable-qt-peer.
241 * JDWP framework, enable by deleting the jdwp references from
242 lib/standard.omit and vm/reference/standard.omit. No default
243 implementation is provided. Work is being done on gcj/gij integration.
244 * StAX java.xml.stream, enable by deleting the gnu.xml.stream and
245 java.xml.stream references in lib/standard.omit.
246
247 New in release 0.17 (Jul 15, 2005)
248
249 * gnu.xml fix for nodes created outside a namespace context.
250 * Add support for output indenting and cdata-section-elements output
251 instruction in xml.transform.
252 * xml.xpath corrections for cases where elements/attributes might have
253 been created in non-namespace-aware mode. Corrections to handling of
254 XSL variables and minor conformance updates.
255 * DefaultMutableTreeNode preorder, postorder, depthFirst and breadthFirst
256 traversal enumerations implemented.
257 * JInternalFrame colors and titlebar draw properly.
258 * JTree is working up to par (icons, selection and keyboard traversal).
259 * JMenus were made more compatible in visual and programmatic behavior.
260 * JTable changeSelection and multiple selections implemented.
261 * JButton and JToggleButton change states work properly now.
262 * JFileChooser fixes.
263 * revalidate and repaint fixes which make Free Swing much more responsive.
264 * Correctly handle system call interrupts and timeouts in native nio
265 and net functions.
266 * MetalIconFactory implemented.
267 * Handle image loading errors correctly for gdkpixbuf and MediaTracker.
268 * Added Tree World to GNU Classpath examples Free Swing demo.
269 * FileChannel.lock() and FileChannel.force() implemented.
270 * java.util.logging.FileHandler now rotates files.
271 * Better handle GDK lock. Properly prefix gtkpeer native functions (cp_gtk).
272 * Corba bug fixes and documentation updates.
273 * Updated gcj build infrastructure.
274 * Documentation fixes all over the place.
275 See http://developer.classpath.org/doc/
276 * VM Integration Guide updates with a full section on VM/Classpath hooks.
277
278 New in release 0.16 (Jun 30, 2005)
279
280 * Better GTK scrollbar peer implementation when using GTK >= 2.6.
281 * GdkGraphics2D has been updated to use Cairo 0.5.x APIs.
282 * BufferedImage and GtkImage rewrites. All image drawing operations
283 should now work correctly (flipping requires gtk+ >= 2.6)
284 * Future Graphics2D, Image and Text work is documented at:
285 http://developer.classpath.org/mediation/ClasspathGraphicsImagesText
286 * Free Swing Top-Level Compatibility. JFrame, JDialog, JApplet,
287 JInternalFrame, and JWindow are now 1.5 compatible in the sense that you
288 can call add() and setLayout() directly on them, which will have the same
289 effect as calling getContentPane().add() and getContentPane().setLayout().
290 * The JTree interface has been completed. JTrees now recognizes mouse clicks
291 and selections work, but the visual implementation is not yet complete.
292 Work on expansion and collapsing of the tree nodes is being implemented.
293 * BoxLayout works properly now.
294 * Fixed GrayFilter to actually work.
295 * Metal SplitPane implemented.
296 * Lots of free swing text and editor stuff work now.
297
298 * When gtk+ 2.6 or higher is installed the default log handler will produce
299 stack traces whenever a WARNING, CRITICAL or ERROR message is produced.
300
301 * The CORBA implementation is now a working prototype that should support
302 features up till 1.3 inclusive.
303 We would invite groups writing CORBA dependent applications to
304 try Classpath implementation, reporting any possible bugs.
305
306 The CORBA prototype is interoperable with Sun's implementation v 1.4,
307 transferring object references, primitive types, narrow and wide
308 strings, arrays, structures, trees, abstract interfaces and
309 value types (feature of CORBA 2.3) between these two platforms.
310 The remote exceptions are transferred and handled correctly.
311 The stringified object references (IORs) from various sources are
312 parsed as required.
313 The transient (for current session) and permanent (till jre restart)
314 redirections work.
315 Both Little and Big Endian encoded messages are accepted.
316 The implementation is verified using tests from the former cost.omg.org.
317 The current release includes working examples (see the examples directory),
318 demonstrating the client-server communication, using either CORBA Request
319 or IDL-based stub (usually generated by a IDL to java compiler).
320 These examples also show how to use the Classpath CORBA naming service.
321 The IDL to java compiler is not yet written, but as our library must be
322 compatible, it naturally accepts the output of other idlj implementations.
323
324 * New --with-vm-classes configure option, and new 'build' setting
325 for --with-glibj. (Only for integrators.)
326
327 Runtime interface changes:
328
329 * Start of a generic JDWP framework in gnu/classpath/jdwp.
330 This is unfinished, but feedback (at classpath@gnu.org) from runtime
331 hackers is greatly appreciated. Although most of the work is currently
332 being done around gcj/gij we want this framework to be as VM neutral as
333 possible. Early design is described in:
334 http://gcc.gnu.org/ml/java/2005-05/msg00260.html
335 * Native method VMClass.getModifiers() now takes an additional
336 boolean parameter.
337 * Deprecated native method VMClassLoader.defineClass(ClassLoader,
338 String, byte[], int, int) has been replaced by
339 VMClassLoader.defineClass(ClassLoader, String, byte[], int, int,
340 ProtectionDomain)
341 * VMClassLoader.loadClass(String name, boolean resolve) is now native,
342 replacing the former version which just returned null.
343 * Deprecated native method VMClassLoader.getPrimitiveClass(String) has
344 been replaced by new native method VMClassLoader.getPrimitiveClass(char).
345 * Previously empty implementations of methods VMThread.countStackFrames(),
346 VMThrowable.fillInStackTrace(), and VMThrowable.getStackTrace() have
347 been removed; these methods are now native methods.
348 * Fields "exceptionTypes" and "parameterTypes" have been removed from
349 Contructor.java and getExceptionTypes() and getParameterTypes() are
350 now native methods.
351
352 New in release 0.15 (Apr 29, 2005)
353
354 * The old character encoding framework (gnu.java.io.EncodingManager)
355 has been replaced by a system based completely on nio.charset
356 providers. Many converters have been added, both the io, lang and nio
357 frameworks now use the same set of converters and the whole character
358 stream framework (Readers and Writers) have been optimized. For some
359 workloads this leads to 2x till 20x speedups.
360
361 The default charsets supported are:
362
363 Cp424, Cp437, Cp737, Cp775, Cp850, Cp852, Cp855, Cp857, Cp860, Cp861,
364 Cp862, Cp863, Cp864, Cp865, Cp866, Cp869, Cp874, ISO_8859_1, ISO_8859_13,
365 ISO_8859_15, ISO_8859_2, ISO_8859_3, ISO_8859_4, ISO_8859_5, ISO_8859_6,
366 ISO_8859_7, ISO_8859_8, ISO_8859_9, KOI_8, MS874, MacCentralEurope,
367 MacCroatian, MacCyrillic, MacDingbat, MacGreek, MacIceland, MacRoman,
368 MacRomania, MacSymbol, MacThai, MacTurkish, US_ASCII, UTF_16, UTF_16BE,
369 UTF_16Decoder, UTF_16Encoder, UTF_16LE, UTF_8, UnicodeLittle, Windows1250,
370 Windows1251, Windows1252, Windows1253, Windows1254, Windows1255,
371 Windows1256, Windows1257, Windows1258.
372
373 Many more encoding are supported through the new IconvProvider
374 depending on the platform iconv support. GNU libiconv is recommended.
375 The IconvProvider is currently not enabled by default. To enable it
376 define the system property gnu.classpath.nio.charset.provider.iconv=true.
377 Some runtimes might choose to enable this by default by setting it
378 through VMSystemProperties. We would like to get feedback on whether
379 enabling or disabling the IconvProvider by default results in the
380 highest speedups.
381
382 * Free swing metal and pluggable look and feels have been improved.
383 The GNU Classpath free swing example can now be run with different
384 "skins" by setting the system property swing.defaultlaf to the GNU,
385 Basic or Metal look and feel.
386
387 * Some of the org.omg.CORBA classes and packages have now been
388 implemented. The Savannah bug tracker contains additional tasks for
389 which we are seeking help.
390
391 * Fixed compatibility problems in the java.beans which affected
392 Eclipse's Visual Editor Project.
393
394 * New completely lock free (Inheritable)ThreadLocal implementation.
395
396 * javax.swing.text.rtf framework added which can handle simple (plain)
397 text tokens.
398
399 * Support for parsing html files into Level 2 Document Object Model
400 (org.w3c.dom.html2 and javax.swing.text.html.parser). And a start of
401 javax.swing.text.html framework added.
402
403 Runtime interface changes:
404
405 * jni.h changed to better support compiling runtimes implementing jni;
406 see VM integration guide for details.
407 * New --enable-default-toolkit option to configure can be used to set
408 the fully qualified class name of the default AWT toolkit to use.
409 If not given, the old default of gnu.java.awt.peerk.gtk.GtkToolkit
410 is used.
411 * New --disable-core-jni option can be used to disable building the
412 "core" JNI libraries. This is primarily useful if your VM can use the
413 Gtk peers but not the core JNI libraries.
414 * New system property "gnu.classpath.boot.library.path" can be specified
415 to define the location of the JNI libraries. It is by all means meant
416 ONLY for VM implementors and GNU Classpath hackers. See the hacking
417 guide for more information.
418 * The helper methods currentLoader() and allocateObject() for
419 java.io.ObjectInputStream have been moved to a VMObjectInputStream class.
420 Reference implementations are provided.
421 * java.net.InetAddress now uses VMInetAddress for runtime/platform
422 specific methods getLocalHostname(), getHostByAddr() and
423 getHostByName(). java.net.NetworkInterface now uses VMNetworkInterface
424 for runtime/platform specific getInterfaces() support. Default
425 (Posix/GNU JNI) implementations are provided.
426 * VMClass has a new method getModifiers(Class, boolean) which can be
427 used to get the real modifiers for an inner class or the ones
428 specified by the InnerClasses attribute.
429 * All (possible) runtime specific methods of Object and Double are now
430 in VMObject and VMDouble. Where possible generic reference
431 implementations are provided.
432 * The reference implementation of VMClassLoader now handles zip files
433 on the boot loader class path in getResources().
434
435 Other changes:
436
437 New in release 0.14 (Feb 25, 2005)
438
439 * Character encoders and decoders have been added for:
440 iso-8859-6 (arabic), iso-8859-7 (greek), iso-8859-8 (hebrew),
441 iso-8859-9 (latin-5), iso-8859-13, iso-8859-15 (latin-9), cp1047 (ebcdic),
442 ebcdic-xml-us,ascii, windows-1250, windows-1252, UTF-16BE (Big Endian),
443 UTF-16LE (Little Endian), UTF-32BE (Big Endian), UTF-32LE (Little Endian).
444 * Full documentation for all classes can be generated (again) by using
445 the --with-gjdoc configure option.
446 * javax.awt.imageio support through gdkpixbuf.
447
448 Runtime interface changes:
449
450 * VMSecurityManager has been replaced by gnu.classpath.VMStackWalker.
451 currentClassLoader() is no longer needed, and there are also two new
452 methods with non-native implementations. VM implementors are encouraged
453 to provide more efficient versions.
454 * VMRuntime.nativeLoad() now takes an additional ClassLoader parameter.
455
456 New in release 0.13 (Jan 6, 2005)
457
458 * The http url protocol handler has been replaced with a full HTTP/1.1
459 version from GNU inetlib.
460 * A new ftp url protocol handler has been added also from GNU inetlib.
461 * java.beans has been updated to 1.4 including support for XMLEncoder
462 and XMLDecoder.
463 * The java.util.Locale support is now based on the Common Locale Data
464 Repository (CLDR) Project (see http://www.unicode.org/cldr/).
465 GNU Classpath provides support for more than 250 locales now.
466 This new support is experimental and the GNU Classpath hackers are
467 working together with runtime developers and the unicode consortium
468 to improve them in the future.
469 If your runtime misdetects your locale or if the default locale gives
470 problems please try running with -Duser.language=en and -Duser.region=US
471 to fall back on a known good locale.
472 * Added implementations of javax.xml (JAXP 1.3), org.xml.sax (SAX2) and
473 org.w3c.dom (DOM Level 3) interfaces. It is possible to switch between
474 different implementations AElfred2, GNU DOM, GNU XSL, libxmlj SAX,
475 libxmlj DOM and libxmlj XSL by setting different system properties.
476 Also provided is a preliminary XPath 1.0 implementation.
477 The libxmlj versions are build around libxml2 and libxslt and have to
478 be enabled during build time by the --enable-xmlj configure flag.
479 The current support is equal to the last released GNU JAXP 1.3 release.
480 These packages will be maintained as part of the GNU Classpath core classes
481 in the future. For more information, conformance results and documentation
482 on selecting different implementations see doc/README.jaxp.
483 * More AWT accessible support.
484 * AWT gtk+ peers component layout, dialog placement, keyboard focus
485 handling and text positioning have been improved.
486 * ImageIO interfaces are more complete.
487 * JList, JTable and JTree have been hugely improved.
488 * java.awt.Robot support with GdkRobot in the gtk+ awt peers.
489 Needs XTest Extension (libXtst) XServer support.
490 * New --disable-examples configure argument.
491
492 Runtime interface changes:
493
494 * Added a new method (VMRuntime.enableShutdownHooks) that enables the VM
495 to lazily register an exit handler.
496 * The java.lang.Class constructor now automatically sets the protection
497 domain for array classes, based on the protection domain of the component
498 type class.
499 * New gnu.classpath.VMSystemProperties class. This replaces the
500 system properties initialization in VMRuntime. Note that it is
501 now the VMs responsibility to set one additional property:
502 gnu.cpu.endian should be set to "big" or "little".
503 * VMRuntime.nativeGetLibname() has been renamed to VMRuntime.mapLibraryName()
504 and has only one argument, the name of the library.
505 * String and StringBuffer now call VMSystem.arraycopy() directly and don't
506 go through java.lang.System. Be careful to not initialize java.lang.System
507 early in the bootstrap sequence in your VM runtime interface classes.
508 * Some (wrong) documentation about the behavior of VMThread.sleep(0, 0)
509 has been updated. Also, VMThread.sleep() now has a default non-native
510 implementation, but it is a generic implementation that ignores the
511 nano-seconds argument. Runtime hackers are encouraged to provide a more
512 efficient version.
513 * There is prelimenary support for nio direct byte buffers.
514 See VMDirectByteBuffer. Please contact the GNU Classpath mailinglist when
515 you add support for this to your runtime.
516
517 New in release 0.12 (Nov 14, 2004)
518
519 * GNU Classpath's JAR implementation now has preliminary support for
520 signed entries, for so called "signed JAR" file support. Signed JAR
521 files are one of the key security features of managed runtimes, and
522 allows code to run privileged given unforgeable proofs of identity.
523 * A much improved version of X.509 certificates has been added,
524 including a robust certificate path checking algorithm. Also
525 included is an implementation of the RSA signature scheme.
526 * Full java.awt.color implementation, with all standard ICC profiles,
527 except for PhotoYCC color space.
528 * java.beans 1.4 updates and bug fixes.
529 * java.awt.image support updated to 1.4.
530 * Improved build process. Uses less memory with gcj and C code is
531 buildable with -Werror on most platform. Please configure with
532 --enable-Werror and report any remaining issues.
533 * Big-endian (PowerPC) fixes for native awt GTK+ peers.
534 * Checkstyle support, see scripts/checkstyle-config.xml.
535 * Better AWT focus management fro GTK+ peers.
536 * Much faster and better fonts support
537 (for both gdk Graphics and cairo Graphics2D)
538 * AWT Choice fixes for hidden components.
539 * HTTP Connection Handler fixes for POST support.
540 * Much fuller collection documentation.
541 * Lots of Calendar bug fixes.
542 * More javax.imageio support.
543 * Better AWT Help MenuBar support.
544 * Lookahead support for regular expressions.
545 * Serialization object stream fixes for multiple ClassLoader scenarios.
546 * Swing TabbedPane, ColorChooser and ComboBox improvements.
547 * Start of JTree functionality.
548 * Improved Eclipse 3 support for GNU Classpath based runtimes.
549
550 Runtime interface Changes:
551
552 * New --enable-java-lang-system-explicit-initialization configuration
553 option. (Warning, will be replaced in next release, please consult
554 the mailinglist.)
555 * The reference implementation of VMClassLoader has default
556 implementations for getResource(s) and provides support for a new
557 default getSystemClassLoader implementation.
558
559 New in release 0.11 (Sep 13, 2004)
560
561 * javax.swing.Spring and SpringLayout support.
562 * Added pluggable look and feel support for BasicTextFieldUI and
563 BasicToolBarSeparatorUI.
564 * java.swing.text support for (Default and Layered) Highlighter, FieldView,
565 PlainView, TabExpander and TabableView added.
566 * Start of JTable and JTree implementation.
567 * Internal Swing frames work.
568 * JMenu and JPopupMenu work.
569 * New gtk+ AWT FileDialog peer now based on gtk+2.4 or higher.
570 * java.awt.image LookupTables and kernel support.
571 * Improved java.awt.image.BufferedImage support.
572 * AWT 1.0 event model support.
573 * GNU Classpath now comes with some example programs (see examples/README).
574 * New javax.crypto, javax.crypto.interfaces, javax.crypto.spec, javax.net,
575 javax.net.ssl, javax.security.auth, javax.security.auth.callback,
576 javax.security.auth.login, javax.security.auth.x500, javax.security.sasl
577 and org.ietf.jgss packages are now officially part of GNU Classpath.
578 Extra crypto algorithms can be obtained from the GNU Crypto project,
579 a full TLS implementation is provided by the Jessie project.
580 http://www.gnu.org/software/gnu-crypto/
581 http://www.nongnu.org/jessie/
582 * Frame.setIconImage() support.
583 * AWT GDKGraphics scaling.
584 * New configure flag --enable-gtk-cairo to build Graphics2D implementation
585 build on cairo and pangoft2. Enabled at runtime by defining the system
586 property gnu.java.awt.peer.gtk.Graphics=Graphics2D.
587 * javax.swing.JSpinner implemented.
588 * Extensive documentation update for java.util collection classes.
589 * java.awt.geom completed. Area, Arc2D, Ellipse2D and Line2D implemented.
590 * GNU JAXP is no longer included with GNU Classpath. Runtime, compiler and
591 tool integrators are encouraged to directly integrate GNU JAXP.
592 This release has been tested against GNU JAXP 1.1.
593 http://www.gnu.org/software/classpathx/jaxp/jaxp.html
594 * JColorChooser, JComboBox and JTextField implemented, including example
595 uses in GNU Classpath Examples swing Demo.
596
597 Runtime interface Changes:
598
599 * java.lang.Compiler now uses the new java.lang.VMCompiler; there is
600 a reference implementation that most VMs can use.
601 * java.lang.VMSystem has a new getenv(String) method and a reference C/JNI
602 implementation that should work on most Posix like systems.
603 * java.util.TimeZone has been split into a platform independent class and
604 a platform dependent class VMTimeZone. GNU Classpath comes with a generic
605 way to get at the default time zone for Posix/GNU-like platforms.
606 * [VM]AccessController improvements. In particular it handles
607 `doPrivileged' calls better, and allows for recursive `doPrivileged'
608 calls in the same Thread. (see vm/reference/java/security/)
609
610 New in release 0.10 (Jul 9, 2004)
611
612 * java.net.URL now uses application classloader to load URLStreamHandlers
613 and reuses URLStreamHandlers when URL is reset (but protocol isn't changed).
614 * java.io.File.deleteOnExit() implementation.
615 * java.text multiple new features and bug fixes
616 (only 2 out of the 1000+ java.text Mauve tests now fail).
617 * Better (non-black) default AWT System colors.
618 * AWT lists use GTK treeviews.
619 * Proper AWT focus management has been implemented.
620 * Swing menus and scrollpanes are beginning to work.
621 * Swing splitpanes, dialogs and internal frames were added.
622 * Swing repainting / double buffering was redone.
623 * Font management and Pango DPI conversion fixes.
624 * A lot of AWT imaging and event bugs have been picked out.
625 * More of javax.swing.text has been implemented.
626 * javax.swing.Timer has been reimplemented.
627 * java.security.AccessController has been implemented
628 (see runtime section).
629 * The default java.lang.SecurityManager now uses AccessController.
630 * New java.beans.Statement and Expression implementations.
631 * Small FileChannel implementation speed improvement for traditional
632 JNI based systems.
633 * Regenerated all included JNI header files with gcjh (3.5 CVS),
634 removes extra extern modifier and allows stricter compiler warning.
635 * More C code cleanups (-Wmissing-declarations, -Wmissing-prototypes and
636 -Wstring-prototypes) and jni.h fixes (a few funtion prototype fixes,
637 made it compilable with C++ compilers and jni.h got renamed from jni.h.in).
638 * Double.toString() and Float.toString() now work properly on 64-bit
639 PowerPC systems.
640 * PPC Darwin, arm, x86-64 and s/390 JNI C code compilation fixes.
641 * Build system refactored and removed old Japhar specific support.
642 * The gnu.java.awt.EmbeddedWindow class has been improved, and now
643 supports embedding AWT windows in other top-level X windows.
644 This functionality is required by gcjwebplugin.
645 * gcjwebplugin, an applet viewer that can be embedded into several web
646 browsers, has been extensively tested with this release of classpath.
647 (See http://www.nongnu.org/gcjwebplugin/)
648 * Runtime environments based on GNU Classpath 0.10 should be able to
649 start up Eclipse 3.0 out of the box now.
650
651 Runtime interface Changes:
652
653 * VMProcess.destroy() default implementation fixes.
654 * Fixed the "portable native sync" code; it had been broken since
655 Classpath release 0.06, when we upgraded to GTK+2.
656 Classpath's AWT peers use GTK+. GTK+ uses GLIB. GLIB by default uses
657 the platform's native threading model -- pthreads in most cases.
658 If the Java runtime doesn't use the native threading model, then you should
659 specify --portable-native-sync when configuring Classpath, so that GLIB will
660 use the Java threading primitives instead. (For a superior alternative,
661 see below.)
662 * The VM can set the system property
663 gnu.classpath.awt.gtk.portable.native.sync instead of using the
664 --portable-native-sync configure-type option.
665 See doc/vmintegration.texinfo for details.
666 * We intend that the next release of GNU Classpath will require the VM
667 to provide JNI 1.2. Classpath currently uses only JNI 1.1, except for
668 one JNI 1.2 function: GetEnv(), in the JNI Invocation API.
669 If this poses problems, please raise them on the classpath mailing list.
670 * The reference implementation of VMThread.holdsLock(Object) now has
671 a default implementation written in java. For efficiency and to
672 prevent spurious wakeups a real 'native' runtime version can be supplied.
673 * There is a new java.security.VMAccessController class that runtimes need
674 to implement to properly support SecurityManagers. The default
675 implementation that comes with GNU Classpath makes sure that ANY attempt
676 to access a protected resource is denied when a SecurityManager is
677 installed. Which is pretty secure, but also no very useful.
678 Please see the documentation in
679 vm/reference/java/security/VMAccessController.java,
680 and please give feedback on the GNU Classpath mailinglist whether or not
681 the current AccessController framework is flexible enough.
682
683 New in release 0.09 (May 2, 2004)
684
685 * Includes updated GNU JAXP version from 2004-02-01.
686 * Native C code is now -ansi -pedantic (C89) clean and (almost) -Wall clean.
687 * java.io is now implemented by delegating most tasks directly to java.nio.
688 * Reworked/Optimized implementations of java.nio.Buffer and subclasses.
689 * New javax.print, javax.print.attribute[.standard] and javax.print.event
690 packages and classes.
691 * java.text attributed iterators support.
692 * New javax.imageio, javax.imageio.event and javax.imageio.spi packages and
693 classes.
694 * GNU Classpath can now load service providers that are described via
695 META-INF/services/* resources in extension JARs. This is useful for
696 implementing the various APIs that are supposed to be extensible via
697 custom plugins. For details, please see the documentation of
698 gnu.classpath.ServiceFactory.
699 Application developers are strongly discouraged from calling glibj
700 internal packages. Instead, they might want invoke the newly implemented
701 javax.imageio.spi.ServiceRegistry.lookupProviders, which is a standard
702 method for loading plug-ins.
703 * New developers wanting to help the GNU Classpath project might want to
704 review the greatly expanded Hacker Guide included in the doc directory
705 or online at http://www.gnu.org/software/classpath/docs/hacking.html
706 Also the FAQ has been expanded. And when working from CVS you can now use
707 a simple autogen.sh script to get all autotools magic done automagically.
708 * New configure option --with-glibj which defines how to install the glibj
709 class files as zip, as flat directory files or both (zip|flat|both)
710 [default=zip]. When working with multiple runtimes some of which might
711 not support bootstrap classes in zip files the --with-glibj=both option
712 is recommended (this does take extra disc space).
713 * Two big code drops from the libgcj gui branch updating various java.awt
714 and javax.swing classes.
715 * Multiple java.net.InetAdress fixes and java.rmi fixes.
716 * ServerSocket.accept() now restarts listening when system call interrupted.
717 * Much cleanups to make standard API doc valid XHTML (not completed yet).
718 * A scan for unused variables and non-static invocation of static methods
719 turned up a couple of subtle bugs which have now all been fixed.
720 * The Mauve testsuite has been cleaned up considerable and lots of issues
721 in the GNU Classpath core class implementation have been fixed.
722
723 VM Interface changes:
724
725 * java.lang.Class/VMClass interface was changed. The interface now no
726 longer requires an instance of VMClass for each Class instance. Instead
727 the field vmdata in Class is now of type Object.
728 * GNU Classpath now assumes that JNI calls SetXField can modify final
729 fields. This was previously used silently for System.in/out/err and should
730 be considered as a feature now.
731 * A new VMProcess and a sample JNI C implementation are now provided to
732 make Runtime.exec() work out of the box on some systems. This requires
733 a small change to VMRuntime.exec() when a runtime wants to use it as the
734 default java.lang.Process implementation.
735 * The implementation of most of java.io through java.nio moved serveral
736 runtime specific I/O methods. Most methods do have a generic default native
737 C JNI implementation in native/jni/java-nio.
738 * Runtime support methods for java.io.File have been moved to VMFile which
739 also comes with a default JNI C implementation.
740 * To support the new service provider mechanism runtimes must make sure that
741 extension JARs are made accessible via the default context class loader.
742
743 New in release 0.08 (2004/12/03)
744
745 * java.util.regexp implementation through gnu.regexp wrappers.
746 * java.net.URI implementation.
747 * Working implementation of javax.swing.undo.
748 * java.awt.geom.CubicCurve2D/QuadCurve2D: Can now solve cubic and quadratic
749 equations; implementation adapted from the GNU Scientific Library.
750 * Lots of java.awt and gtk+ peer improvements. Also more Swing work. Start
751 of EmbeddedWindow support.
752 * BufferedReader speed improvements.
753 * Improved useabilty of java.text implementation for several applications.
754 * ObjectInputStream is much faster and more compatible with other
755 implementations.
756 * Fix handling of alias methods, where a method has been deprecated in
757 favour of a new one with the same funtion but a different name.
758 (See Deprecated Methods section in the GNU Classpath Hacking Guide.)
759 * javax.print.attribute.standard added.
760 * Lots of java.nio, java.net, java.io
761 * Depend on autoconf 2.59+ and automake 1.7+, GCJ 3.3+, jikes 1.18+.
762
763 VM Interface changes:
764 * Split native methods in java.lang.Runtime into java.lang.VMRuntime.
765 * Resources are now also loaded/needed through the bootstrap classloader
766 (gnu.regexp needs MessageBundle included in glibj.zip
767
768 Fixed Classpath bugs:
769 #6095 java.awt.geom.QuadCurve2D.solveQuadratic sometimes gives
770 wrong results
771 #7099 EventListenerList.getListenerCount should accept null argument
772 #7104 EventListenerList.add does not work
773 #7105 EventListenerList.remove does not work
774 #7107 DefaultBoundedRangeModel.setValue and friends should not throw
775 And lots more.
776
777 New in release 0.07 (2003/30/11)
778
779 * Works with libtool 1.5 (and 1.4.3).
780 * java.awt gtk+ peers now depend on gtk+ 2.2.x and uses pango.
781 Lots and lots improvements on the peers.
782 * java.awt.geom.CubicCurve2D, java.awt.geom.QuadCurve2D:
783 Subdivision and flatness calculation implemented.
784 * java.awt.geom.FlatteningPathIterator: Working implementation.
785 * gnu.java.awt.BitwiseXORComposite helper class.
786 * New rmic compilers (jikes, kjc) support.
787 * java.text bug fixing and 1.4 updates (Currency).
788 * Hashtable and HashMap function more similar to other implementations.
789 * javax.naming and java.beans classloader fixes.
790 * URL parsing, URLConnection, protocol and (needed) permission fixes.
791 * More java.nio implementation
792 (API complete, but implementation not finished yet).
793 * Lots of java.net code cleanup.
794 * Improved documentation.
795 * Numerous bug fixes in almost every package, and lots of updates for
796 1.4 functionality.
797 * Fixed Classpath bugs:
798 #2944 Incorrect synchronization in java.util.logging.ErrorManager
799 #6075 java.awt.geom.GeneralPath.getCurrentPoint returns wrong results
800 #6076 java.awt.geom.GeneralPath constructor sometimes hangs
801 #6089 java.awt.geom.GeneralPath.getPathIterator does not work
802 [...]
803
804 VM Interface changes:
805
806 * Thread has been split in a VM-independent Thread class and a VM-dependent
807 VMThread class.
808
809 New in release 0.06 (2003/22/08)
810
811 * Update java.awt peers to GTK+2.
812 * java.awt.GridBagLayout implementation.
813 * javax.swing.border implementation.
814 * java.security and java.security.cert updated to 1.4 spec.
815 * New JNI native target code layer. See native/target/readme.txt.
816 * --enable-regen-headers configure flag for automatic jni .h file generation.
817 * Removed workaround for gcj 3.2 and lower, gcj 3.3+ or jikes 1.18+ is now
818 needed for compiling.
819 * Lots of improvements and/or new classes for java.awt, java.awt.dnd,
820 java.awt.font, java.awt.geom, java.awt.image, java.io, java.math, java.net,
821 java.nio, java.rmi, java.text, java.util, javax.swing, javax.swing.plaf,
822 javax.swing.text.
823
824 VM Interface changes:
825
826 * VMClassLoader.loadClass(), the bootstrap classloader called by
827 Class.forName() and ClassLoader.loadClass(), may now return null when
828 a class is not found instead of throwing a new ClassNotFoundException.
829 This is a performance optimization in some cases. This also changes
830 the Class.forName() reference code.
831 * Native methods in Class have been moved to VMClass. A few additional
832 methods are also available in VMClass to provide optional performance
833 improvements.
834 * A VM can now supply its own String.intern() strategy through the
835 VMString class. The supplied VMString reference class implements the
836 original WeakHashMap strategy.
837 * Float and Double to/from bits conversion functions can now be supplied by
838 the VM through VMFloat and VMDouble. Default JNI conversion methods are
839 supplied.
840
841 New in release 0.05 (2003/02/15)
842 * Supports free Java VMs Jikes RVM and Kissme out of the box, perhaps others.
843 * Supports GNU Crypto 1.1 as the official provider of cryptographic primitives
844 and tools for GNU Classpath, available separately from
845 http://www.gnu.org/software/classpathx/crypto/crypto.html.
846 * Supports GNU Classpath Tools sub-project of GNU Classpath, official provider
847 of standard tools such as gjdoc, a javadoc replacement, and others. Future
848 releases of GNU Classpath will begin to include these tools, available
849 separately from http://www.gnu.org/software/cp-tools/.
850 * Java primitives can be used to support AWT native threading, see
851 the --enable-portable-native-sync configure option which may become the
852 default in a future release.
853 * Include file jni.h has been updated to the 1.4 specification.
854 * VM specific internal types for jobject, jfieldID, and jmethodID are
855 supported in jni.h. More details can be found by reading the comment
856 in include/jni.h.in. By default the old definitions are used instead.
857 * New VM helper class java.io.VMObjectStreamClass which should provide
858 the hasClassInitializer() method. Previously ObjectStreamClass used
859 Class.getDeclaredMethod("<clinit>") but according to the spec this
860 should always throw NoSuchMethodException for class initialization methods.
861 A JNI reference implementation is provided as
862 vm/reference/java-io/java_io_VMObjectStreamClass.c
863 * There have been numerous infrastructure improvements
864 * Configure option --enable-gjdoc to generate javadoc-like output
865 * Gjdoc output is included with distribution, see doc/api/html/
866 * DESTDIR fully supported for install and uninstall
867 * Runtime.execInternal contract changed to allow for null `env'
868 and to accept `dir' argument.
869 * VMObject.getClass() removed. It was never used.
870 * java.lang.Throwable is now a 'normal' GNU Classpath class that uses the
871 VM specific java.lang.VMThrowable to get at the VM state and (if needed)
872 the StackTraceElements for a particular exception. A default implementation
873 (that does nothing) is provided in vm/reference/java/lang/VMThrowable.java.
874 * The vm/reference classes from the gnu.vm.stack and their counterparts
875 ExecutionStack and StackFrame in gnu.java.lang have been removed since they
876 are not actually part of the VM interface anyway.
877 * The GPLed com.sun.javadoc classes have been moved to the gjdoc application
878 from the GNU Classpath Tools project. See for more information the homepage
879 at: <http://www.gnu.org/software/cp-tools/>.
880
881 New in release 0.04 (2002/05/05)
882 * Additional configure options to disable zip creation and installation as
883 well as disable gtk peer native compilation.
884 * Addition of java.nio, java.util.logging, and javax.swing.
885 * Integration of most or all of the ORP patches to date, the purpose of
886 which are to make it possible to use JBOSS with ORP and Classpath. This
887 is still in a testing phase however.
888 * Significant changes in the reference VM interface that may require
889 support from the JVMs.
890 * Lots of bugfixes.
891
892 New in release 0.03 (2002/02/08)
893 * More merges with libgcj have been performed including java.math which now
894 provides a pure Java implementation of that package.
895 Current status at <http://gcc.gnu.org/java/libgcj-classpath-compare.html>
896 * A pure Java implementation (Jazzlib) of java.util.zip is available.
897 * Added the java.rmi implementation that Transvirtual donated to the FSF.
898 * Includes jni.h now, eliminating the need to specify a particular VM
899 via configure.
900 * No proprietary classes or programs are required to compile.
901 Compiles out of the box with jikes or gcj.
902 * Separation of compiling Java source and native libraries through the
903 configure mechanism. If given no arguments, configure will setup the
904 subsequent build to only produce Java bytecode (.class files). More
905 information is available in INSTALLING.
906 * Support for compiling in a separate directory, as an example you may
907 cd classpath-0.03; mkdir build; cd build; ../configure; make
908 * Works with Orp 1.0.9 out of the box. Build instructions can be found at
909 <http://www.gnu.org/software/classpath/doc/orp.html>
910 * Lots of bugfixes that were found by using Classpath with the gcj, Orp,
911 SableVM, KissMe and Jaos VMs. Please use our bugdatabase at
912 <http://savannah.gnu.org/support/?group_id=85>
913 * Lots of updates to make Classpath more compliant with the 1.2, 1.3 and 1.4
914 API specification. The current status can be found at
915 <http://www.gnu.org/software/classpath/status.html>
916 * All files are now distributed under the same terms. Added clarification to
917 GPL exception.
918
919 New in release 0.02 (2001/01/06)
920 * Support for printing exceptions with Japhar 0.09 + patch included in
921 resource/japhar-0.09.patch.1.
922 * Typos, assorted bugfixes.
923
924 New in release 0.01 (2000/11/20)
925 * More packages are included now, though many remain untested.
926 * Support for Japhar 0.09 included.
927
928 New in release 0.00 (1999/02/01)
929 * First official development release of clean room class library for Java
930 * Following packages included:
931 -- java.beans
932 -- java.io
933 -- java.lang
934 -- java.lang.reflect
935 -- java.math
936 -- java.net
937 -- java.security (partial and non-functioning)
938 -- java.security.acl
939 -- java.security.interfaces
940 -- java.util
941 * Code is mostly Java 2 (see JDK 1.2) compatible with some functionality
942 missing and/or untested.
943 * Support for Japhar (http://www.japhar.org/) virtual machine is included.
944 Requires the current Japhar from CVS.
945 * Extensive javadoc comments for public API included
946 * Licensed under the GNU Library General Public License (see COPYING.LIB)
947 * Does not depend on any non-free code - developed in a "clean room"
948 environment.
949