Если что, это из-за указателей. В Java все, кроме фундаментальных типов данных, размещается в куче, и любая переменная, которая не похожа на int
, является указателем. Это не очень хороший способ написания операционной системы, потому что он накладывает один уровень косвенности на большинство операций, и при написании ОС этот уровень может убить вас.
Ядро ОС - это место, где вам нужна оптимизация и высокая производительность, поскольку вы не знаете, что на нем будет работать. Это особенно верно для ОС реального времени, в которых задержка в полмисекунды может быть критической. Для этого нужно быть очень дружелюбным с процессором и другим оборудованием, а также с умением писать микрооптимизированный код, который будет выполнять определенные вещи с большой предсказуемостью.
По этой причине C - очень хороший инструмент для сборки ядра RTOS, а Java - нет. Это не значит, что вы не можете сделать это с Java, но это будет сложнее и, вероятно, не так успешно.
Мне любопытно, почему вы задаете вопрос. Если вы используете ОСРВ, на самом деле не имеет значения, во что она была написана. Если вы хотите взломать ее, важно, во что она была написана, но концепции и реализация ОС сами по себе достаточно сложны, чтобы изучение нового языка тривиально для изучения. (Более того, если вы изучаете проектирование и реализацию ОС, вы почти наверняка обнаружите, что используемые вами ресурсы будут использовать C в качестве языка обучения.)