GCJ on ARM TODO

Being a handhelds.org guy I talked to Andrew Haley at the Oldenburg DevJam about how feasible running GCJ on ARM would be and what needs to be done to make it happen. Incidentally Tom Tromey had given an overview on the same topic on IRC a few days before. So, thanks to Tom I wasn't totally clueless ;)

Anyways, here's a short summary:

  • GCJ is the production quality (just have a look at how many packages Fedora ships use GCJ) runtime of choice ATM. We want this on ARM as well.
  • The ARM port of GCJ isn't finished. Code that has been compiled to native binaries/libraries using the BC ABI should run fine. The interpreter, however, needs some work to be fully usable.
  • For the interpreter to work closure support would have to be added to libffi. Lack of closure support is also why DotGNU Portable.NET can't run Gtk# applications on ARM yet. (Making pnet/gtk# work on ARM was one of the Summer of Code projects mentored by handhelds.org).
  • Some platform specifics in libjava (for locks, stack traces, turning null pointer dereference into a Java exception, ...) will have to be written.
  • Versions of boehm gc earlier than 6.6 won't work properly on ARM.

Andrew also pointed out that Java classes compiled to native code add significantly to the space requirements of the class library. Michael Koch and me had blogged about possible solutions to this issue before.

That's it for now. As usual, any corrections/suggestions are welcome. Oh, I should note that in order to work on this myself I'd have to learn a *lot*, which doesn't mean it won't happen but don't hold your breath on it...