Обычно каждый язык предлагает некоторые средства взаимодействия с другими языками. Например, Java поддерживает ключевое слово native
, которое можно использовать для описания метода, написанного не на Java, а на каком-либо другом языке. Поищите в файлах Java слово «native», и я уверен, что вы найдете некоторые методы. Затем, если вы посмотрите на файлы C, вы увидите, что эти методы реализованы там. Конечно, языки работают в среде выполнения, и каждая такая среда также должна обеспечивать поддержку времени выполнения для смешивания модулей, написанных на разных языках. В мире Java есть нечто, называемое Java Native Interface (JNI) для этой задачи.
Если вы хотите подробно о том, как на самом деле написать программу на Java и C, поиск "JNI" был бы хорошей отправной точкой.