(I have no horse in this race, I am just writing what I think the grandparent comment was referring to)
(I have no horse in this race, I am just writing what I think the grandparent comment was referring to)
Just like Java[0]. It is just a matter of choosing the right compiler for the use case at hand.
[0] - http://www.excelsiorjet.com/ (one from many vendors)
So producing a binary which doesn't require a separate runtime really isn't a problem.
Almost all commercial JVMs have some form of AOT or JIT caching, specially those that target embedded systems.
Sun never added support to the reference JVM for political reasons, as they would rather push for plain JIT.
Oracle is now finally thinking about adding support for it, with no official statement if it will make it into 9 or later.
JEP 197 is the start of those changes, http://openjdk.java.net/jeps/197
Oracle Labs also has SubstrateVM, which is an AOT compiler built with Graal and Truffle.
GCC only keeps gcj around due to its unit tests.
I'm not an expert on Java, but my experience with it is that it's runtime is fairly huge and requires custom installation.
For that matter, as you allude even C has a runtime.