Sık sık geliştiriciler Java "olamayacağını söz duymuş do Gerçek Zamanlı böyle bir şey vb RIOT-OS üzerinde çalışan bir deterministik gerçek zamanlı sistem gereksinimlerini karşılamak olamaz Linux üzerinde çalışan bir Java uygulaması anlamına gelen"
Nedenini anlamaya çalışıyorum . Benim SWAG bu muhtemelen herhangi bir zamanda çalışacak ve tamamen sistem duraklatabileceğinizi Java'nın Çöp Toplayıcı, büyük ölçüde kaynaklanmaktadır söylüyor. Ve orada "pauseless GC'ler" olmasına rağmen, reklamlarına mutlaka inanmıyorum ve aynı zamanda bir hobi projesi için çatallanacak JVM örneği başına 80.000 $ 'ım yok!
Ayrıca drone yazılımını Linux'ta çalıştırmakla ilgili bu makaleyi okuyordum . Bu makalede yazar, Linux'un neredeyse drone'unun arabasına çarpmasına neden olduğu bir senaryoyu açıklıyor:
Pi'de düşük seviye kontrol döngüsünü (PID'ler) seçtikten sonra zor bir ders öğrendim - akıllı olmaya çalışıyorum, hata ayıklamak için döngünün ortasına bir günlük yazmaya karar verdim - dört başlangıçta iyi uçtu ama Linux karar verdi bir günlük girişi yazmak için 2 saniye almak ve dört neredeyse arabama çarptı!
Şimdi bu yazar drone yazılımını C ++ 'da yazmasına rağmen, Linux üzerinde çalışan bir Java uygulamasının aynı kaderi çok iyi etkileyebileceğini hayal ediyorum.
Wikipedia'ya göre:
Bir işlemin toplam doğruluğunun sadece mantıksal doğruluğuna değil, aynı zamanda gerçekleştirildiği zamana da bağlı olması durumunda, sistemin gerçek zamanlı olduğu söylenir.
Yani bana, bu araçlar " toplam doğruluğu mantıksal doğruluğunu ve güncelliğini gerektiriyorsa gerçek zamanlı yok. "
Süper bir performans için bir Java uygulaması yazdım ve konuşabilmek için "limonu sıktım" gibi davranalım ve daha hızlı olması için makul bir şekilde (Java'da) yazılamazdı.
Sonuçta, sorum şu: Birini bana açıklayacak birini arıyorum / n Linux çalıştıran bir Java uygulamasının bir "gerçek zamanlı uygulama" olmasının nedenlerinin çoğunu. Yani, bir Java / Linux yığınında "zamanında" olmasını ve dolayısıyla " tamamen doğru " olmasını engelleyen tüm kategoriler nelerdir? Belirtildiği gibi, GC ve Linux log-flushing yürütmeyi duraklatabilir, ancak Java uygulamasının dışında kötü zamanlama / performansa neden olacak ve zor son tarih kısıtlamalarına uymasına neden olacak daha fazla şey olduğundan eminim. Onlar neler?