The Java programming language, being a portable and safe object-oriented language, has gained much interest among embedded and real-time systems developers. However, standard Java implementations exhibit problems with performance, memory footprint, and predictability. The question is then, are these limitations inherent in the technology?Reviewing run-time aspects and the possibility to compile Java to native code, reveals some real limitations as well as common misconceptions. Investigation of the real limitations shows that for implementing real-time Java on small embedded platforms, native compilation via C is an appropriate solution for many platforms and applications.A revised technique for Java-compatible memory management is proposed to reduce latencies, and linkage of externally generated (C) code with natively compiled Java is considered in a prototype that has been implemented. Based on application demands and experimental verification, we find that real-time Java can, and should, retain the standard simple Java memory model to the programmer.