Перш за все, варто відзначити, що JVM Sun написаний на C. C - дуже популярна мова, коли потрібна портативність.
C мову є переносним , хоча багато C програма не є. Це відбувається тому, що C не встановлює стільки обмежень для програміста або робить стільки припущень. Якщо програміст C хоче, щоб його програми були портативними, він повинен покласти ці обмеження на себе.
На практиці це насправді не набагато складніше, ніж жити з обмеженнями, які силами Java на вас. Це здебільшого питання пам’яті про свою витривалість та примітивні розміри, а також використовувати портативні бібліотеки типу GTK + замість бібліотек для платформи.
Ви можете зробити компілятор GTK + target та C, який підтримує віртуальну машину, навіть, можливо, JVM, і отримати існуючий код для роботи з дуже невеликими змінами. Насправді, без збору сміття віртуальна машина С могла б бути набагато простішою. Чому б ти хотів цього зробити?
Зворотний, компілюючи Java до рідного коду, також можливий. Це в основному те, що робить JIT. Чому б ти хотів цього зробити? Я впевнений, що існують проекти для домашніх тварин, щоб зробити це "просто тому", але вони не використовуються серйозно.