Начало работы с Java Native Interface (JNI)

Getting Started With Java Native Interface



Собственный интерфейс Java, сокращенно JNI, представляет собой программный интерфейс, который позволяет разработчикам Java запускать коды и фрагменты из других языков программирования на Java. Он поставляется вместе с основным пакетом разработки программного обеспечения Java или SDK (мы рассмотрим это в другом руководстве).

JNI также известен своей функцией вызова API для проникновения в виртуальную машину Java в приложениях Java. Это позволяет разработчикам вызывать Java-код в коде собственного приложения.







Если вы потратили некоторое время на работу с java, вы, вероятно, уже сталкивались со многими проблемами производительности, которые неизбежно встречаются на вашем пути. Это не проблема, если вы запускаете один и тот же код на родном языке, который может работать более чем в восемнадцать раз быстрее при чтении в скомпилированной модели. В дополнение к этому вы также можете использовать устаревшие / несовместимые аппаратные процедуры с собственными кодами на других языках.



Это руководство продемонстрирует, как машинный код C / C ++ может быть вызван из Java-приложения.



Предпосылки

Чтобы правильно изучить это руководство, вам понадобится несколько вещей. К ним относятся компилятор Java или Javac.exe вместе с JVM, а также генератор собственных методов C (javah.exe). Все три из них встроены в комплект для разработки программного обеспечения, так что вам все хорошо, если они у вас есть. Помимо этих трех, вам также потребуются файлы, определяющие JNI, включая файлы заголовков Native и полные файлы библиотеки.





И, конечно же, в учебнике по запуску кодов C и C ++ мы также будем использовать компилятор C для создания общей библиотеки.

Компоненты JNI

JNI в основном управляется двумя компонентами, а именно h и javah. H - это компонент файла заголовка, который заменяет собственные коды кодом java, тогда как Javah делает это так, что этот файл может быть загружен в файлы заголовков приложения сам по себе.



Вызов C / C ++ из кода Java

Шаг 1. Написание кода на Java

Код сначала написан на java и соответствует трем условиям. Во-первых, он написан с использованием собственного метода, который будет вызываться позже. Во-вторых, он должен загрузить общую библиотеку, частью которой является собственный код, и, наконец, он должен вызвать собственные методы.

Давайте воспользуемся этим кодом для дальнейшей иллюстрации:

Обратите внимание на строки 3 и 6; это строки, в которых включены собственные методы. Код, загружающий разделяемые библиотеки, расположен в строке 10, что приводит к вызову метода между строками с 12 по 15.

Шаг 2. Компиляция кода Java в байт-код

Второй шаг связан с компиляцией java-кода. Компилятор javac может сделать здесь эту работу за нас; просто введите команду ниже:

$ javac Пример1.Джава

Шаг 3. Создайте файлы заголовков C / C ++

Затем необходимо создать заголовочные файлы на родном языке. Эти файлы заголовков обеспечивают подписи собственных кодов.

Эти файлы заголовков могут быть созданы с помощью собственного инструмента javah, генератора заглушек C, поставляемого с SDK, с помощью следующей команды:

javah Example1

Должен вернуться следующий вывод:

Шаг 4: написание нативного кода

Здесь мы напишем код C / C ++. Вы должны отметить все подписи, которые должны напоминать заявления, которые мы сделали на шаге 1.

Ниже приведена реализация, написанная на языке C:

Шаг 5. Создайте общую библиотеку

Общую библиотеку можно создать с помощью любого компилятора. Поскольку общая библиотека содержит собственный код, нам придется его создать.

Шаг 6: Запустите вашу программу

Этот шаг включает в себя оценку кода и выявление любых проблем с программой. Это будет включать среду выполнения Java, потому что код будет выполняться в первую очередь в JVM.

Выполните следующую команду:

java Example1

Он должен вернуть:

Это было наше краткое руководство для начинающих по использованию Java Native Interface. Надеемся, вы сочли это полезным.

Изучение работы с JNI важно для всех, кто хочет разрабатывать приложения Java, особенно приложения Android для смартфонов.