1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
|
New in release 0.91 (UNRELEASED)
* 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.
* Free Swing improvements: Support for OceanTheme has been mostly completed
and turned on as default Metal theme.
New in release 0.90 (March 6, 2006)
* Free Swing improvements: JTable columns are rearrangeable and
resizeable with mouse. Painting and scrolling are now much
faster. Plain text components now support highlighting and
copy+paste to the system clipboard. Support for styled text has been
improved, including some very basic HTML support. JFileChooser is
now usable. Global event dispatching has been implemented. Memory
consumption of Swing components has been reduced. Lots of general
bugfixes. Added new system property to turn off Graphics2D use in
Swing, even if Graphics2D is available: gnu.javax.swing.noGraphics2D
* 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.
* More correct handling of Object methods and serialization support
for Proxy and abstract classes.
* The new folder tools includes GIOP and RMI stub and tie source code
generators, IOR parser and both transient and persistent GIOP naming
services.
* Added experimental support for dynamic creation of the RMI stubs
using proxy classes. The rmic compiler is no longer required (unless
for research and specific stubs).
* 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.
* The default back end for java.util.prefs has been changed. The new
default is capable of saving and restoring preferences to and from
the file system.
* javax.imageio.plugins.bmp implementation.
* Added --enable-collections configure option which builds
"collections.jar", a 1.1 VM compatibility jar.
* 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.
New in release 0.20 (Jan 13, 2006)
* New StAX pull parser and SAX-over-StAX driver. Lots of DOM, SAX/StAX,
XPath and XSLT improvements. Support for XInclude and XML Base added.
Conformance is now regularly tested against various test-suites at
http://builder.classpath.org/xml/ See also doc/README.jaxp.
* Full beans XMLEncoder implementation.
* javax.sound.sampled implementation.
* javax.print.attribute and javax.print.event implementated.
* Lots of new datatransfer, print swing and swing.text work and optimization.
* Additional 1.5 support. Including new (separate) generic branch release.
* SecurityManager cleanups and start of review of all Permission checks
(includes adding lots of new checks to the Mauve test-suite).
* Buildable on cygwin.
* Fully buildable as "in-workspace" library-plus-vm inside (native) Eclipse
see http://developer.classpath.org/mediation/ClasspathHackingWithEclipse
* Full example that shows a real world CORBA and Free Swing implementation.
See examples/gnu/classpath/examples/CORBA/swing/README.html
* A list of bug fixes can be found at:
http://gcc.gnu.org/bugzilla/buglist.cgi?product=classpath&target_milestone=0.20
Runtime interface changes:
* New method VMStackWalker.getClassLoader() was added to avoid an infinite
loop between getCallingClassLoader() and Class.getClassLoader().
* The included fdlibm implementation has seen several cleanups to handle
new architectures and namespacing issues (in particular for ppc, darwin
and non-C99 compilers). Please double check any arithmetic test against
new platforms/runtimes.
* The gnu.java.net.Plain[Datagram]Socket implementations have been
turned into VM reference classes with JNI/Posix implementations.
New in release 0.19 (Nov 2, 2005)
* The Swing RepaintManager has been reworked for more efficient painting,
especially for large GUIs.
* The Swing layout manager OverlayLayout has been implemented, the BoxLayout
has been rewritten to make use of the SizeRequirements utility class and
caching for more efficient layout.
* Improved accessibility support for Swing.
* The java.net.HttpURLConnection implementation no longer buffers the
entire response body in memory. This means that response bodies
larger than available memory can now be handled.
* The Andrew Watson, Vice President and Technical Director of the Object
Management Group, has officially assigned us 20 bit Vendor Minor Code Id:
0x47430 ("GC") that will mark remote Classpath - specific system exceptions.
Obtaining the VMCID means that GNU Classpath now is a recogniseable type of
node in a highly interoperable CORBA world.
* Classpath now includes the first working draft to support the RMI over
IIOP protocol. The current implementation is capable for remote invocations,
transferring various Serializables and Externalizables via RMI-IIOP protocol.
It can flatten graphs and, at least for the simple cases, is interoperable
with Sun's jdk 1.5.
* Qt4 configury switches for OS-X. Additional to the --enable-qt-peer, OS-X
users with a Qt4 installation can build the qt-peers with the argument
--with-qt4dir=<Qt4-installation-dir>.
* Significant progress has been made in the implementation of the
javax.swing.plaf.metal.* package, with most UI delegates in a working state
now. Please test this with your own applications and provide feedback that
will help us to improve this package.
* The GUI demo (gnu.classpath.examples.swing.Demo) has been extended to
highlight various features in our free-swing implementation. And includes
a look and feel switcher (Metal default, Ocean or GNU).
Runtime interface changes:
* Changed implementation of VMClassLoader.getPackage(s) : new method
VMClassLoader.getBootPackages should be implemented by the vm, and sould
return a string array of boot package names ("java.lang", "java.net", ...).
Feedback from vm implementors for usability and relevance of the
getBootPackages method would be greatly appreciated.
New in release 0.18 (Sep 6, 2005)
* GNU JAWT implementation, the AWT Native Interface, which allows direct
access to native screen resources from within a Canvas's paint method.
GNU Classpath Examples comes with a Demo, see examples/README.
* awt.datatransfer updated to 1.5 with supports for FlavorEvents.
The gtk+ awt peers now allow copy/paste of text, images, uris/files
and serialized objects with other applications and tracking
clipboard change events with gtk+ 2.6 (for gtk+ 2.4 only text and
serialized objects are supported). A GNU Classpath Examples
datatransfer Demo was added to show the new functionality.
* org.omg.PortableInterceptor and related functionality in other packages
is now implemented:
- The sever and client interceptors work as required since 1.4.
- The IOR interceptor works as needed for 1.5.
* The org.omg.DynamicAny package is completed and passes the prepared tests.
* The Portable Object Adapter should now support the output of the
recent IDL to java compilers. These compilers now generate servants and
not CORBA objects as before, making the output depended on the existing
POA implementation. Completing POA means that such code can already be
tried to run on Classpath. Our POA is tested for the following usager
scenarios:
- POA converts servant to the CORBA object.
- Servant provides to the CORBA object.
- POA activates new CORBA object with the given Object Id (byte array)
that is later accessible for the servant.
- During the first call, the ServantActivator provides servant for this
and all subsequent calls on the current object.
- During each call, the ServantLocator provides servant for this call
only.
- ServantLocator or ServantActivator forwards call to another server.
- POA has a single servant, responsible for all objects.
- POA has a default servant, but some objects are explicitly connected
to they specific servants.
The POA is verified using tests from the former cost.omg.org.
* The javax.swing.plaf.multi.* package is now implemented.
* Editing and several key actions for JTree and JTable were implemented.
* Lots of icons and look and feel improvements for Free Swing basic and
metal themes were added. Try running the GNU Classpath Swing Demo in
examples (gnu.classpath.examples.swing.Demo) with:
-Dswing.defaultlaf=javax.swing.plaf.basic.BasicLookAndFeel
-Dswing.defaultlaf=javax.swing.plaf.metal.MetalLookAndFeel
* Start of styled text capabilites for java.swing.text.
* NIO FileChannel.map implementation, fast bulk put implementation for
DirectByteBuffer (speeds up this method 10x).
* Split gtk+ awt peers event handling in two threads and improve gdk lock
handling (solves several AWT lock ups).
* Speed up awt Image loading.
* Updated TimeZone data against Olson tzdata2005l.
* Make zip and jar UTF-8 "clean".
* "native" code builds and compiles (warning free) on Darwin and Solaris.
Runtime interface changes:
* All native resource "pointers" in the VM interface classes are now exposed
as gnu.classpath.Pointer objects. This might impact runtimes that
optimize and support java.nio.DirectByteBuffers. Creating these classes
and accessing the contents as void * pointers for the native reference JNI
implementation is done through the JCL_NewRawDataObject and JCL_GetRawData
functions.
* Simplified the Class/VMClass interface.
* Removed loadedClasses map from ClassLoader. It's now the VMs responsibility
to manage the list of defined and loaded classes for each class loader.
* Moved native methods from java.lang.reflect.Proxy to VMProxy.
* Added hook to VMClassLoader to allow VM to do class caching.
New Untested/Disabled Features:
The following new features are included, but not ready for production
yet. They are explicitly disabled and not supported. But if you want
to help with the development of these new features we are interested
in feedback. You will have to explicitly enable them to try them out
(and they will most likely contain bugs). If you are interested in any
of these then please join the mailing-list and follow development in
CVS.
* QT4 AWT peers, enable by giving configure --enable-qt-peer.
* JDWP framework, enable by deleting the jdwp references from
lib/standard.omit and vm/reference/standard.omit. No default
implementation is provided. Work is being done on gcj/gij integration.
* StAX java.xml.stream, enable by deleting the gnu.xml.stream and
java.xml.stream references in lib/standard.omit.
New in release 0.17 (Jul 15, 2005)
* gnu.xml fix for nodes created outside a namespace context.
* Add support for output indenting and cdata-section-elements output
instruction in xml.transform.
* xml.xpath corrections for cases where elements/attributes might have
been created in non-namespace-aware mode. Corrections to handling of
XSL variables and minor conformance updates.
* DefaultMutableTreeNode preorder, postorder, depthFirst and breadthFirst
traversal enumerations implemented.
* JInternalFrame colors and titlebar draw properly.
* JTree is working up to par (icons, selection and keyboard traversal).
* JMenus were made more compatible in visual and programmatic behavior.
* JTable changeSelection and multiple selections implemented.
* JButton and JToggleButton change states work properly now.
* JFileChooser fixes.
* revalidate and repaint fixes which make Free Swing much more responsive.
* Correctly handle system call interrupts and timeouts in native nio
and net functions.
* MetalIconFactory implemented.
* Handle image loading errors correctly for gdkpixbuf and MediaTracker.
* Added Tree World to GNU Classpath examples Free Swing demo.
* FileChannel.lock() and FileChannel.force() implemented.
* java.util.logging.FileHandler now rotates files.
* Better handle GDK lock. Properly prefix gtkpeer native functions (cp_gtk).
* Corba bug fixes and documentation updates.
* Updated gcj build infrastructure.
* Documentation fixes all over the place.
See http://developer.classpath.org/doc/
* VM Integration Guide updates with a full section on VM/Classpath hooks.
New in release 0.16 (Jun 30, 2005)
* Better GTK scrollbar peer implementation when using GTK >= 2.6.
* GdkGraphics2D has been updated to use Cairo 0.5.x APIs.
* BufferedImage and GtkImage rewrites. All image drawing operations
should now work correctly (flipping requires gtk+ >= 2.6)
* Future Graphics2D, Image and Text work is documented at:
http://developer.classpath.org/mediation/ClasspathGraphicsImagesText
* Free Swing Top-Level Compatibility. JFrame, JDialog, JApplet,
JInternalFrame, and JWindow are now 1.5 compatible in the sense that you
can call add() and setLayout() directly on them, which will have the same
effect as calling getContentPane().add() and getContentPane().setLayout().
* The JTree interface has been completed. JTrees now recognizes mouse clicks
and selections work, but the visual implementation is not yet complete.
Work on expansion and collapsing of the tree nodes is being implemented.
* BoxLayout works properly now.
* Fixed GrayFilter to actually work.
* Metal SplitPane implemented.
* Lots of free swing text and editor stuff work now.
* When gtk+ 2.6 or higher is installed the default log handler will produce
stack traces whenever a WARNING, CRITICAL or ERROR message is produced.
* The CORBA implementation is now a working prototype that should support
features up till 1.3 inclusive.
We would invite groups writing CORBA dependent applications to
try Classpath implementation, reporting any possible bugs.
The CORBA prototype is interoperable with Sun's implementation v 1.4,
transferring object references, primitive types, narrow and wide
strings, arrays, structures, trees, abstract interfaces and
value types (feature of CORBA 2.3) between these two platforms.
The remote exceptions are transferred and handled correctly.
The stringified object references (IORs) from various sources are
parsed as required.
The transient (for current session) and permanent (till jre restart)
redirections work.
Both Little and Big Endian encoded messages are accepted.
The implementation is verified using tests from the former cost.omg.org.
The current release includes working examples (see the examples directory),
demonstrating the client-server communication, using either CORBA Request
or IDL-based stub (usually generated by a IDL to java compiler).
These examples also show how to use the Classpath CORBA naming service.
The IDL to java compiler is not yet written, but as our library must be
compatible, it naturally accepts the output of other idlj implementations.
* New --with-vm-classes configure option, and new 'build' setting
for --with-glibj. (Only for integrators.)
Runtime interface changes:
* Start of a generic JDWP framework in gnu/classpath/jdwp.
This is unfinished, but feedback (at classpath@gnu.org) from runtime
hackers is greatly appreciated. Although most of the work is currently
being done around gcj/gij we want this framework to be as VM neutral as
possible. Early design is described in:
http://gcc.gnu.org/ml/java/2005-05/msg00260.html
* Native method VMClass.getModifiers() now takes an additional
boolean parameter.
* Deprecated native method VMClassLoader.defineClass(ClassLoader,
String, byte[], int, int) has been replaced by
VMClassLoader.defineClass(ClassLoader, String, byte[], int, int,
ProtectionDomain)
* VMClassLoader.loadClass(String name, boolean resolve) is now native,
replacing the former version which just returned null.
* Deprecated native method VMClassLoader.getPrimitiveClass(String) has
been replaced by new native method VMClassLoader.getPrimitiveClass(char).
* Previously empty implementations of methods VMThread.countStackFrames(),
VMThrowable.fillInStackTrace(), and VMThrowable.getStackTrace() have
been removed; these methods are now native methods.
* Fields "exceptionTypes" and "parameterTypes" have been removed from
Contructor.java and getExceptionTypes() and getParameterTypes() are
now native methods.
New in release 0.15 (Apr 29, 2005)
* The old character encoding framework (gnu.java.io.EncodingManager)
has been replaced by a system based completely on nio.charset
providers. Many converters have been added, both the io, lang and nio
frameworks now use the same set of converters and the whole character
stream framework (Readers and Writers) have been optimized. For some
workloads this leads to 2x till 20x speedups.
The default charsets supported are:
Cp424, Cp437, Cp737, Cp775, Cp850, Cp852, Cp855, Cp857, Cp860, Cp861,
Cp862, Cp863, Cp864, Cp865, Cp866, Cp869, Cp874, ISO_8859_1, ISO_8859_13,
ISO_8859_15, ISO_8859_2, ISO_8859_3, ISO_8859_4, ISO_8859_5, ISO_8859_6,
ISO_8859_7, ISO_8859_8, ISO_8859_9, KOI_8, MS874, MacCentralEurope,
MacCroatian, MacCyrillic, MacDingbat, MacGreek, MacIceland, MacRoman,
MacRomania, MacSymbol, MacThai, MacTurkish, US_ASCII, UTF_16, UTF_16BE,
UTF_16Decoder, UTF_16Encoder, UTF_16LE, UTF_8, UnicodeLittle, Windows1250,
Windows1251, Windows1252, Windows1253, Windows1254, Windows1255,
Windows1256, Windows1257, Windows1258.
Many more encoding are supported through the new IconvProvider
depending on the platform iconv support. GNU libiconv is recommended.
The IconvProvider is currently not enabled by default. To enable it
define the system property gnu.classpath.nio.charset.provider.iconv=true.
Some runtimes might choose to enable this by default by setting it
through VMSystemProperties. We would like to get feedback on whether
enabling or disabling the IconvProvider by default results in the
highest speedups.
* Free swing metal and pluggable look and feels have been improved.
The GNU Classpath free swing example can now be run with different
"skins" by setting the system property swing.defaultlaf to the GNU,
Basic or Metal look and feel.
* Some of the org.omg.CORBA classes and packages have now been
implemented. The Savannah bug tracker contains additional tasks for
which we are seeking help.
* Fixed compatibility problems in the java.beans which affected
Eclipse's Visual Editor Project.
* New completely lock free (Inheritable)ThreadLocal implementation.
* javax.swing.text.rtf framework added which can handle simple (plain)
text tokens.
* Support for parsing html files into Level 2 Document Object Model
(org.w3c.dom.html2 and javax.swing.text.html.parser). And a start of
javax.swing.text.html framework added.
Runtime interface changes:
* jni.h changed to better support compiling runtimes implementing jni;
see VM integration guide for details.
* New --enable-default-toolkit option to configure can be used to set
the fully qualified class name of the default AWT toolkit to use.
If not given, the old default of gnu.java.awt.peerk.gtk.GtkToolkit
is used.
* New --disable-core-jni option can be used to disable building the
"core" JNI libraries. This is primarily useful if your VM can use the
Gtk peers but not the core JNI libraries.
* New system property "gnu.classpath.boot.library.path" can be specified
to define the location of the JNI libraries. It is by all means meant
ONLY for VM implementors and GNU Classpath hackers. See the hacking
guide for more information.
* The helper methods currentLoader() and allocateObject() for
java.io.ObjectInputStream have been moved to a VMObjectInputStream class.
Reference implementations are provided.
* java.net.InetAddress now uses VMInetAddress for runtime/platform
specific methods getLocalHostname(), getHostByAddr() and
getHostByName(). java.net.NetworkInterface now uses VMNetworkInterface
for runtime/platform specific getInterfaces() support. Default
(Posix/GNU JNI) implementations are provided.
* VMClass has a new method getModifiers(Class, boolean) which can be
used to get the real modifiers for an inner class or the ones
specified by the InnerClasses attribute.
* All (possible) runtime specific methods of Object and Double are now
in VMObject and VMDouble. Where possible generic reference
implementations are provided.
* The reference implementation of VMClassLoader now handles zip files
on the boot loader class path in getResources().
Other changes:
New in release 0.14 (Feb 25, 2005)
* Character encoders and decoders have been added for:
iso-8859-6 (arabic), iso-8859-7 (greek), iso-8859-8 (hebrew),
iso-8859-9 (latin-5), iso-8859-13, iso-8859-15 (latin-9), cp1047 (ebcdic),
ebcdic-xml-us,ascii, windows-1250, windows-1252, UTF-16BE (Big Endian),
UTF-16LE (Little Endian), UTF-32BE (Big Endian), UTF-32LE (Little Endian).
* Full documentation for all classes can be generated (again) by using
the --with-gjdoc configure option.
* javax.awt.imageio support through gdkpixbuf.
Runtime interface changes:
* VMSecurityManager has been replaced by gnu.classpath.VMStackWalker.
currentClassLoader() is no longer needed, and there are also two new
methods with non-native implementations. VM implementors are encouraged
to provide more efficient versions.
* VMRuntime.nativeLoad() now takes an additional ClassLoader parameter.
New in release 0.13 (Jan 6, 2005)
* 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.
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.
Runtime interface Changes:
* New --enable-java-lang-system-explicit-initialization configuration
option. (Warning, will be replaced in next release, please consult
the mailinglist.)
* The reference implementation of VMClassLoader has default
implementations for getResource(s) and provides support for a new
default getSystemClassLoader implementation.
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.
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.
New in release 0.05 (2003/02/15)
* Supports free Java VMs Jikes RVM and Kissme out of the box, perhaps others.
* Supports GNU Crypto 1.1 as the official provider of cryptographic primitives
and tools for GNU Classpath, available separately from
http://www.gnu.org/software/classpathx/crypto/crypto.html.
* Supports GNU Classpath Tools sub-project of GNU Classpath, official provider
of standard tools such as gjdoc, a javadoc replacement, and others. Future
releases of GNU Classpath will begin to include these tools, available
separately from http://www.gnu.org/software/cp-tools/.
* Java primitives can be used to support AWT native threading, see
the --enable-portable-native-sync configure option which may become the
default in a future release.
* Include file jni.h has been updated to the 1.4 specification.
* VM specific internal types for jobject, jfieldID, and jmethodID are
supported in jni.h. More details can be found by reading the comment
in include/jni.h.in. By default the old definitions are used instead.
* New VM helper class java.io.VMObjectStreamClass which should provide
the hasClassInitializer() method. Previously ObjectStreamClass used
Class.getDeclaredMethod("<clinit>") but according to the spec this
should always throw NoSuchMethodException for class initialization methods.
A JNI reference implementation is provided as
vm/reference/java-io/java_io_VMObjectStreamClass.c
* There have been numerous infrastructure improvements
* Configure option --enable-gjdoc to generate javadoc-like output
* Gjdoc output is included with distribution, see doc/api/html/
* DESTDIR fully supported for install and uninstall
* Runtime.execInternal contract changed to allow for null `env'
and to accept `dir' argument.
* VMObject.getClass() removed. It was never used.
* java.lang.Throwable is now a 'normal' GNU Classpath class that uses the
VM specific java.lang.VMThrowable to get at the VM state and (if needed)
the StackTraceElements for a particular exception. A default implementation
(that does nothing) is provided in vm/reference/java/lang/VMThrowable.java.
* The vm/reference classes from the gnu.vm.stack and their counterparts
ExecutionStack and StackFrame in gnu.java.lang have been removed since they
are not actually part of the VM interface anyway.
* The GPLed com.sun.javadoc classes have been moved to the gjdoc application
from the GNU Classpath Tools project. See for more information the homepage
at: <http://www.gnu.org/software/cp-tools/>.
New in release 0.04 (2002/05/05)
* Additional configure options to disable zip creation and installation as
well as disable gtk peer native compilation.
* Addition of java.nio, java.util.logging, and javax.swing.
* Integration of most or all of the ORP patches to date, the purpose of
which are to make it possible to use JBOSS with ORP and Classpath. This
is still in a testing phase however.
* Significant changes in the reference VM interface that may require
support from the JVMs.
* Lots of bugfixes.
New in release 0.03 (2002/02/08)
* More merges with libgcj have been performed including java.math which now
provides a pure Java implementation of that package.
Current status at <http://gcc.gnu.org/java/libgcj-classpath-compare.html>
* A pure Java implementation (Jazzlib) of java.util.zip is available.
* Added the java.rmi implementation that Transvirtual donated to the FSF.
* Includes jni.h now, eliminating the need to specify a particular VM
via configure.
* No proprietary classes or programs are required to compile.
Compiles out of the box with jikes or gcj.
* Separation of compiling Java source and native libraries through the
configure mechanism. If given no arguments, configure will setup the
subsequent build to only produce Java bytecode (.class files). More
information is available in INSTALLING.
* Support for compiling in a separate directory, as an example you may
cd classpath-0.03; mkdir build; cd build; ../configure; make
* Works with Orp 1.0.9 out of the box. Build instructions can be found at
<http://www.gnu.org/software/classpath/doc/orp.html>
* Lots of bugfixes that were found by using Classpath with the gcj, Orp,
SableVM, KissMe and Jaos VMs. Please use our bugdatabase at
<http://savannah.gnu.org/support/?group_id=85>
* Lots of updates to make Classpath more compliant with the 1.2, 1.3 and 1.4
API specification. The current status can be found at
<http://www.gnu.org/software/classpath/status.html>
* All files are now distributed under the same terms. Added clarification to
GPL exception.
New in release 0.02 (2001/01/06)
* Support for printing exceptions with Japhar 0.09 + patch included in
resource/japhar-0.09.patch.1.
* Typos, assorted bugfixes.
New in release 0.01 (2000/11/20)
* More packages are included now, though many remain untested.
* Support for Japhar 0.09 included.
New in release 0.00 (1999/02/01)
* First official development release of clean room class library for Java
* Following packages included:
-- java.beans
-- java.io
-- java.lang
-- java.lang.reflect
-- java.math
-- java.net
-- java.security (partial and non-functioning)
-- java.security.acl
-- java.security.interfaces
-- java.util
* Code is mostly Java 2 (see JDK 1.2) compatible with some functionality
missing and/or untested.
* Support for Japhar (http://www.japhar.org/) virtual machine is included.
Requires the current Japhar from CVS.
* Extensive javadoc comments for public API included
* Licensed under the GNU Library General Public License (see COPYING.LIB)
* Does not depend on any non-free code - developed in a "clean room"
environment.
|