GC isn't a problem for realtime systems, if configured correctly. For example, have the GC running incrementally in a separate thread.
But it's true, there's flavors of Java that are certified for hard realtime. If you stop the GC for 100ms every 2s regardless if you need it or not, that's pretty nice and predictable behavior for a realtime system.
http://www.infoq.com/articles/azul_gc_in_detail, for one example.