Они используют JNI, в точности как это публично задокументировано, для вызова собственных общих библиотек для конкретной платформы.
Что касается вызова JVM из кода C, JVM использует общие библиотеки (DLL, SO,так далее).Быстрый поиск исходного кода JDK 6 не обнаруживает ни одного System.loadLibrary () для основной поддержки ядра (например, собственных методов в Object, String и т. Д.).Это наводит меня на мысль, что нативный код для этих методов, который, судя по содержимому каталога JRE / bin, находится в DLL, явно связан с java.exe (и javaw.exe в Windows).
Когда я в последний раз смотрел этот материал, требования для вызова JVM из кода C были хорошо документированной частью JNI - я настоятельно рекомендую вам обратиться к этому документу, чтобы продолжить.Мы даже дошли до того, что успешно написали собственный упаковщик / загрузчик C для JVM IBM AS / 400 Java 1.1.