AFAIK, я думаю, что это в основном сводится к эффективности и мобильности. Хотя написание JRE / JVM с Java может быть переносимым, это не очень эффективно, поскольку есть несколько переводов, чтобы добраться до инструкций машинного уровня (например, байт-код Java -> инструкции платформы -> машинные инструкции). Прелесть написания программ в ANSI C состоит в том, что программы, как правило, довольно быстрые, и код можно скомпилировать на большинстве платформ.