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
|
*** Changes in GCC 3.4:
* Compiling a .jar file will now cause non-.class entries to be automatically
compiled as resources.
* libgcj has been ported to Darwin.
* Jeff Sturm has adapted Jan Hubicka's call graph optimization code to gcj.
* libgcj has a new gcjlib URL type; this lets URLClassLoader load code from
shared libraries.
* libgcj has been much more completely merged with GNU Classpath.
* Class loading is now much more correct; in particular the caller's class
loader is now used when that is required.
* Eclipse 2.x will run out of the box using gij.
* Parts of java.nio have been implemented. Direct and indirect buffers work,
as do fundamental file and socket operations.
* java.awt has been improved, though it is still not ready for general use.
* The HTTP protocol handler now uses HTTP/1.1 and can handle the POST method.
* The MinGW port has matured. Enhancements include socket timeout support,
thread interruption, improved Runtime.exec() handling and support for
accented characters in filenames.
*** Changes in GCC 3.3:
* The java.sql and javax.sql packages now implement the JDBC 3.0 (JDK 1.4)
API.
* The JDK 1.4 assert facility has been implemented.
* The bytecode interpreter is now direct threaded and thus faster.
*** Changes in GCC 3.1:
* libgcj now includes RMI, java.lang.ref.*, javax.naming, and
javax.transaction.
* Property files and other system resources can be compiled into executables
which use libgcj using the new gcj --resource feature.
* libgcj has been ported to more platforms. In particular there is now a
mostly-functional mingw32 (Windows) target port.
* JNI and CNI invocation interfaces were implemented, so gcj-compiled Java
code can now be called from a C/C++ application.
* gcj can now use builtin functions for certain known methods, for instance
Math.cos.
* gcj can now automatically remove redundant array-store checks in some common
cases.
* The --no-store-checks optimization option was added. This can be used to
omit runtime store checks for code which is known not to throw
ArrayStoreException
* The following third party interface standards were added to libgcj:
org.w3c.dom and org.xml.sax.
* java.security has been merged with GNU Classpath. The new package is now
JDK 1.2 compliant, and much more complete.
* A bytecode verifier was added to the libgcj interpreter.
* java.lang.Character was rewritten to comply with the Unicode 3.0 standard,
and improve performance.
* Partial support for many more locales was added to libgcj.
* Socket timeouts have been implemented.
* libgcj has been merged into a single shared library. There are no longer
separate shared libraries for the garbage collector and zlib.
* Several performance improvements were made to gcj and libgcj:
o Hash synchronization (thin locks)
o A special allocation path for finalizer-free objects
o Thread-local allocation
o Parallel GC, and other GC tweaks
*** Changes in GCC 3.0:
* libgcj now includes a bytecode interpreter. If a compiled version of a class
is not found in the application binary or linked shared libraries, the
class loader will search for a bytecode version in the CLASSPATH and execute
it using the interpreter. A new front end that behaves like the traditional
`java' command is also provided: `gij'.
* Support for specifying java system properties. Properties can either be set
at runtime via the GCJ_PROPERTIES environment variable in the format
"<name>=<value> ..."'; or can be compiled into an application binary using
-D<name>=<value>.
* Support for setjmp/longjmp (sjlj) exception handling has been added, as an
alternative to the existing range-table based mechanism. sjlj is the default
on non-sparc, non-x86 targets, or can be specified with the
`--enable-sjlj-exceptions' configure parameter.
* Complete JDK 1.1 reflection support, including invocation.
* Throwable.printStackTrace() has been implemented.
* Runtime.loadLibrary() has been implemented.
* Class.forName() will now try to load a series of shared objects in order
to find the requested class. If a class `gnu.quux.whatever' is requested,
libgcj will search the system shared library path (eg LD_LIBRARY_PATH) for
`gnu-quux-whatever.so', then `gnu-quux.so', and finally `gnu.so'.
* A pure-java implementation of java.math.BigInteger.
New in libgcj 2.95:
* First public release
|