Є два додаткові речі, які я можу запам'ятати без проблем:
- Складання JIT
- Нитка реалізація
Що стосується реального часу, передбачуваність результатів є, мабуть, найважливішим фактором; Ось чому непередбачуваний цикл GC робить Java непридатною для реального часу.
JIT пропонує покращені показники роботи, але починається в якийсь момент після запуску програми, забираючи певні ресурси та змінюючи швидкість виконання системи. Це також може повторитися на більш пізньому етапі, якщо ВМ вважає, що може зробити «кращу» роботу на той час.
Що стосується нарізки: я зараз не дуже пам’ятаю, чи це частина мовної розробки, чи просто дуже поширена реалізація, але Java зазвичай не пропонує інструментів, щоб точно контролювати виконання потоків; Наприклад, хоча для потоків визначено 10 "пріоритетів", немає необхідності, щоб ВМ насправді враховувала ці пріоритети. Оператори для зупинки та перемикання потоків також або не визначені, або не жорстко дотримуються системою.
Існує кілька реалізацій JSR 1: Специфікація в режимі реального часу для Java - специфікація, затверджена в 1998 році. Ця специфікація максимально вирішує проблеми, які роблять стандартну Java непридатною для реального часу.
Станом на, можливо, 5 років тому, у Sun (зараз Oracle) був RTSJ VM (Це ніколи не було назви, AFAIK); IBM мав WebSphere в режимі реального часу; І JamaicaVM - це вільне (?) Рішення, незалежне від платформи. Гуглі ті, хто сьогодні, не приносять багато.