The qualities are similar to those of any real-time system, basically: it must be predictable and deterministic, provide priority-based scheduling of threads with run-to-block semantics, have support of periodic tasks. It's all well summarized in the beginning of the specification (rtsj.org).
I wanted to add to this to be more thorough. The RTSJ, to which Java RTS compliant, outlines several key qualities for real-time Java implementations. It must be backward compatible with Java; it must not extend the language or make any syntactical changes to Java in any way; it must allow for predictable execution in terms of time; it must support Java's WORA mantra in the context of RTSJ-compliant implementations; must support priority-based scheduling; allow for memory management outside the scope of any GC or GC algorithm; must support priority inversion avoidance; support prioritized processing of asynchronous events, transfer of control, and thread termination for efficient and deterministic behavior in response to real-world events; and provide physical memory access.