gcjx can now build all of libgcj, at least if you provide it with
the correct flags. I’ve been finding compiler bugs by running a small
gcjx-compiled program and looking into the crashes.
GCC as library?
suggests that GCC might profitably be split into parts with
well-defined APIs separating them. I think there’s little
disagreement on that point — GCC has been moving in that direction.
However, GCC’s internals aren’t really well-suited to this kind of
thing. Still, hopefully someday GCC will end up there. It won’t be
soon enough to make libjava builds bearable, though; we must find some
other solution to that problem. The plan on everybody’s lips is
splitting the library into multiple pieces; I’ll probably look into it
more seriously soon.
LLVM and Java
There’s been some work on a
JVM based on LLVM. Diversity in the VM space is nice, but at the
moment we have too many VMs trying to inhabit the same niche. This
makes no sense. Instead, we should be looking at sharing more code,
just as we already share the class library, the test suite, and some
random other bits. There is no reason we couldn’t have a somewhat
configurable core VM, implementing things like class layout and
runtime linking, that would be shared among all VMs.
Bigger dreams aside, LLVM would have done better to simply pick an
existing VM, say kaffe, and target it. That would be simple, even.