ยกเว้นตัวรวบรวมขยะคุณสมบัติอื่น ๆ ของ Java ที่ไม่เหมาะสมสำหรับการเขียนโปรแกรมแบบเรียลไทม์คืออะไร บนเน็ตทุกครั้งที่มีการพูดถึง Java vs C ++ เกี่ยวกับการเขียนโปรแกรมแบบเรียลไทม์มันจะเป็นตัวรวบรวมขยะที่กล่าวถึงเสมอ มีอะไรอีกไหม?
ยกเว้นตัวรวบรวมขยะคุณสมบัติอื่น ๆ ของ Java ที่ไม่เหมาะสมสำหรับการเขียนโปรแกรมแบบเรียลไทม์คืออะไร บนเน็ตทุกครั้งที่มีการพูดถึง Java vs C ++ เกี่ยวกับการเขียนโปรแกรมแบบเรียลไทม์มันจะเป็นตัวรวบรวมขยะที่กล่าวถึงเสมอ มีอะไรอีกไหม?
คำตอบ:
มีอีกสองรายการที่ฉันจำได้ไม่ทัน:
ในแง่ของเรียลไทม์การคาดการณ์ประสิทธิภาพเป็นปัจจัยที่สำคัญที่สุด นั่นเป็นเหตุผลที่วัฏจักร GC ที่ไม่สามารถคาดการณ์ได้ทำให้ Java ไม่เหมาะสมกับเวลาจริง
JIT นำเสนอการแสดงที่ดีขึ้น แต่เริ่มทำงานในบางจุดหลังจากที่โปรแกรมกำลังทำงานใช้ทรัพยากรบางอย่างและเปลี่ยนความเร็วการดำเนินการของระบบ นอกจากนี้ยังสามารถเกิดขึ้นอีกครั้งในภายหลังหาก VM เชื่อว่าสามารถทำงานได้ดีขึ้นในเวลานั้น
เท่าที่เธรด: ฉันไม่จำจุดนี้ถ้าเป็นส่วนหนึ่งของการออกแบบภาษาหรือเพียงการใช้งานทั่วไป แต่ Java มักจะไม่มีเครื่องมือในการควบคุมการดำเนินการเธรดอย่างแม่นยำ; ตัวอย่างเช่นในขณะที่มี 10 "ลำดับความสำคัญ" ที่ระบุไว้สำหรับหัวข้อไม่มีความต้องการที่ VM จะพิจารณาลำดับความสำคัญเหล่านี้ ตัวดำเนินการสำหรับการหยุดและการสลับเธรดไม่ได้ถูกกำหนดเช่นกันหรือไม่ยึดติดกับระบบอย่างเคร่งครัด
มีการนำไปใช้งานหลายอย่างของJSR 1: ข้อมูลจำเพาะตามเวลาจริงสำหรับ Java - ข้อมูลจำเพาะที่ได้รับการอนุมัติในปี 1998 ข้อมูลจำเพาะนี้ระบุถึงปัญหาที่ทำให้ Java มาตรฐานไม่เหมาะสมแบบเรียลไทม์
เมื่อประมาณ 5 ปีที่แล้วซัน (ตอนนี้ Oracle) มี RTSJ VM (ที่ไม่เคยมีชื่อ AFAIK) IBM มี WebSphere แบบเรียลไทม์ และ JamaicaVM นั้นเป็นโซลูชันที่ไม่ขึ้นกับแพลตฟอร์ม Google ในวันนี้ไม่ได้นำมาซึ่งมากนัก
ตราบใดที่ Java ทำงานบน Unix หรือ Windows หรือระบบปฏิบัติการ "ปกติ" อื่น ๆ ระบบจะไม่รับประกันเรียลไทม์
ระบบปฏิบัติการตามเวลาจริงเป็นสิ่งจำเป็นสำหรับการเรียกใช้แอปพลิเคชันตามเวลาจริง
ในทางเทคนิคเป็นไปได้ที่จะมี java แบบเรียลไทม์ (ตามความเห็นของ SK-logic แนะนำ) อย่างไรก็ตามมันไม่ใช่เรื่องธรรมดาสำหรับเหตุผลที่ไม่ใช่ด้านเทคนิค:
มาตรฐานเก่า
มีปัญหาในการค้นหาข้อมูลอ้างอิงสำหรับเรื่องนี้ แต่ฉันมั่นใจว่าฉันเคยเห็นมาตรฐานความปลอดภัยหรือคำแนะนำเกี่ยวกับความปลอดภัยตามมาตรฐานแล้ววางคำสั่งห้ามบน Java ถูกหรือผิดถ้าคุณต้องปฏิบัติตามสิ่งที่บอกว่า Java เป็น verboten Java นั้นเป็น Verboten
วิศวกรความปลอดภัยเก่า
แม้ว่ามาตรฐานที่คุณต้องทำงานเพื่อห้ามแบน Java การทำงานกับผู้ตรวจสอบด้านความปลอดภัย / คุณภาพโดยปราศจากประสบการณ์ของ Java จะช่วยให้คุณไม่ต้องติดตามเส้นทางที่มีการต่อต้านน้อยที่สุด สิ่งใดที่ไม่ธรรมดาสำหรับผู้สอบบัญชีจะดึงดูดคำถามมากมายซึ่งหมายความว่างานจำนวนมากสำหรับคุณที่จะพิสูจน์ตัวเลือกของคุณ
ชุมชน
กล่าวคือมีการพึ่งพาเส้นทางจำนวนมากผู้เชี่ยวชาญด้านเรียลไทม์ในปัจจุบันส่วนใหญ่จะรู้ว่า C ++, C หรือ ADA เป็นสิ่งที่อยู่ภายในดังนั้นจึงเป็นทางเลือกที่เป็นธรรมชาติในการทำงานใหม่
(หมายเหตุ: ฉันได้พูดคุยแบบเรียลไทม์และความปลอดภัยในด้านบนซึ่งค่อนข้างเป็นปัญหาอีกแบบหนึ่งซึ่งแม้มาตรฐานความปลอดภัยมักจะทำให้ทั้งสองแช็ทกัน)