At the risk of bumping an old topic i wanted to add my 2cents.
Sure with an ANSI compiler you can write C that will compile on lots of things. But you better not do anything other than std out and read/write to files. Hell even then you better hope you use “file name” conventions that work across platforms (I just learned that OSX command line is case insensitive!). But if you want to write a GUI, then you need the right libs on every platform you deploy too, and someone has to maintain them etc… Before even getting to the gate, the situation is as bad as java or worse (generally worse).
Yes it would be nice if it really ran on everything, but the hardware market is diverse, and supporting even the 3 core platforms is hard enough and you don’t really have anything usefull unless you have some libs (well nothing that really an improvment over C/C++).
Its like wanting DX support for java, whats the point? Why not just use C# since the code can’t run on anything but windows anyway.
Frankly having work with cross platform projects before, java is far easier than most languages. God i hate #IF …
As for GCJ, its quite a lot slower than just a plain old sun jvm. In fact all the AOT compilers i tested where slower than jvm with my code.