real-time java is tricky and limits the platforms you can run on (Sun's implementation is Sparc Solaris 10 only, IBM's uses real-time linux). The RT JVM's are also not free (last I checked, it could cost thousands of $$$ per seat). If you don't have hard real time requirements, it seems like a lot of pain to go through just to get the garbage collector under control. It's mostly for applications where people could get hurt or die if the system is late responding to a task (for example, air traffic control). It's totally inappropriate for applications where application freezing is merely annoying (like a game).
The concurrent mark/sweep collector (a command line option in recent standard JVM's) does an ok job of limiting pause times in the GC (it's probably appropriate for the majority of applications out there), but it increases total time in the GC a bit.... and it can take a fair amount of fine tuning to get the pause times under control, especially if you need rather low pause times.... and it still doesn't guarantee you won't occasionally get a full GC that could take seconds or minutes depending on the app.