Selain pengumpul sampah, fitur apa saja di Jawa yang membuatnya tidak cocok untuk pemrograman waktu nyata? Di internet, setiap kali Java vs C ++ didiskusikan sehubungan dengan pemrograman waktu nyata, selalu ada pemulung yang disebutkan. Apakah ada hal lain?
java
c++
garbage-collection
real-time
Kaushik
sumber
sumber
Jawaban:
Ada dua item tambahan yang bisa saya ingat begitu saja:
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.
sumber
Sistem operasi
Selama Java berjalan di atas Unix atau Windows atau OS "reguler" lainnya, realtime tidak dijamin.
OS waktu nyata adalah wajib untuk menjalankan aplikasi waktu nyata.
sumber
Secara teknis dimungkinkan untuk memiliki java waktu nyata (seperti komentar SK-logika menyarankan). namun itu tidak umum karena sejumlah alasan non-teknis:
Standar lama
Kesulitan menemukan referensi untuk ini, tetapi saya yakin saya telah melihat standar keselamatan, atau saran kesesuaian standar keselamatan, memberlakukan larangan total terhadap Jawa. Benar atau salah jika Anda harus menyesuaikan diri dengan sesuatu yang mengatakan Java adalah verboten maka Java adalah Verboten.
Insinyur keamanan lama
Sekalipun standar yang Anda butuhkan untuk bekerja tidak melarang Java, bekerja dengan auditor Keselamatan / Kualitas tanpa pengalaman Java akan sangat berarti Anda tidak mengikuti jalan yang paling tidak resistan. Apa pun yang tidak biasa bagi auditor kemungkinan akan menarik banyak pertanyaan yang pada gilirannya berarti banyak pekerjaan untuk Anda membenarkan pilihan Anda.
Komunitas
yaitu ada banyak ketergantungan jalur, sebagian besar pakar real time saat ini akan mengetahui C ++, C atau ADA dalam ke luar sehingga merupakan pilihan alami untuk melakukan pekerjaan baru di.
(catatan: Saya agak menyatukan waktu nyata dan keselamatan di atas, yang merupakan masalah lain, bahkan standar keselamatan sering mengacaukan keduanya)
sumber