Хотя это бывает редко и совершенно случайно, но иногда может возникнуть желание вызвать подпрограмму, которая написана на другом языке, а не на Java. Как правило, такая подпрограмма существует как выполняемый код для CPU и среды, в которой вы работаете — то есть как "родной" (native) код. Например, нужно вызвать подпрограмму native-кода для достижения более быстрого времени выполнения. Или нужно использовать специализированную библиотеку типа статистического пакета. Однако из-за того, что Java-программы компилируются в байт-код, который затем интерпретируется (или компилируется "на лету") исполнительной системой Java, казалось бы, невозможно вызвать подпрограмму native-кода изнутри Java-программы. К счастью, это не так. В Java существует ключевое слово native, которое используется для объявления методов native-кода. После объявления эти методы можно вызывать внутри Java-программы точно так же, как вызывается любой другой метод Java.
Для объявления native-метода нужно предварить его заголовок модификатором native, при этом, однако, не следует определять никакого тела. Например:
public native int meth();
После объявления native-метода, следует записать сам родной метод и выполнить довольно сложную процедуру для связи его с кодом Java.
Большинство родных методов записываются на С. Механизм, используемый для интеграции С-кода с Java-программой, называется JNI-интерфейсом (Java Native Interface) — native-интерфейс Java). Эта методология была создана для Java 1.1и затем расширена и улучшена в Java 2. Cледующее описание обеспечивает достаточную информацию для большинства приложений.
Лучше всего процесс воспринимается на примере. Для начала, введем следующую короткую программу, которая использует метод native с именем test():