Ada dua item tambahan yang bisa saya ingat begitu saja:
- Kompilasi JIT
- Implementasi Threading
Dalam hal waktu nyata, prediktabilitas kinerja mungkin merupakan faktor terpenting; Itu sebabnya siklus GC yang tidak dapat diprediksi membuat Java tidak cocok untuk waktu-nyata.
JIT menawarkan kinerja yang lebih baik, tetapi muncul di beberapa titik setelah program berjalan, mengambil beberapa sumber daya, dan mengubah kecepatan eksekusi sistem. Ini juga dapat terjadi lagi pada tahap selanjutnya, jika VM percaya dapat melakukan pekerjaan yang "lebih baik" pada saat itu.
Sejauh threading: Saya tidak begitu ingat pada saat ini jika ini adalah bagian dari desain bahasa, atau hanya implementasi yang sangat umum, tetapi Java biasanya tidak menyediakan alat untuk secara tepat mengontrol eksekusi thread; Misalnya, sementara ada 10 "prioritas" yang ditentukan untuk utas, tidak ada persyaratan bahwa VM benar-benar mempertimbangkan prioritas ini. Operator untuk menghentikan dan mengalihkan utas juga tidak ditentukan, atau tidak dipatuhi dengan kaku oleh sistem.
Ada beberapa implementasi JSR 1: Spesifikasi Real-time untuk Java - spesifikasi yang telah disetujui pada tahun 1998. Spesifikasi ini membahas sebanyak mungkin masalah yang membuat Java standar tidak cocok untuk waktu-nyata.
Pada mungkin 5 tahun yang lalu, Sun (Sekarang Oracle) memiliki RTSJ VM (Itu tidak pernah memiliki nama, AFAIK); IBM memiliki WebSphere Real Time; Dan JamaicaVM adalah solusi platform-independen gratis (?). Googling hari ini tidak banyak menghasilkan.