gij as JRE 5

Tom Tromey tromey@redhat.com
Sat Nov 13 19:51:00 GMT 2004


>>>>> "Bojan" == Bojan Antonovic <bojan@antonovic.com> writes:

Bojan> Java 5.0 has some new language extensions. Many (?) of them, like
Bojan> generics, are compiled in the way that the byte code binary is
Bojan> compatible to older versions. While extending GCJ to support the new
Bojan> language extensions can take a while, it should be easier that GIJ can
Bojan> run them. Does anybody know when those new binaries will be supported?
Bojan> Can it be done for GCC 4.0 ?

Here are the minimal changes required to support 1.5 bytecode.

* Make sure we recognize the new class file version number.

* Change the bytecode verifiers to accept "ldc <class>" when the
  bytecode in question came from a 1.5 file.  (For the libgcj
  verifier I already have a patch for this, it is in gcjx.  It could
  easily be merged.)

* Change the interpreter and the bytecode front end to the compiler
  to recognize this opcode.

This set of changes is pretty easy.


Note that 1.5 adds many new classes.  Code using these classes still
won't work on libgcj, at least until they are written.  There is some
work in this area in the `generics' branch of the Classpath CVS
repository.

In particular, attributes won't work properly at runtime, enums won't
work at all, the new enhanced "for" loop will only iterate over arrays
(since libgcj doesn't have Iterable), and auto-boxing will not work
(this requires new methods in the primitive wrapper classes).

Static import is purely source-side, and varargs is also implemented
that way, so these will work fine.  Generics ought to work fine as
well.

Tom



More information about the Java mailing list