Java Native Interface (JNI) — это платформа, которая позволяет приложениям Java подключаться к собственному коду. Нативный код — это код, который выполняется непосредственно в операционной системе, а JNI позволяет Java-программам взаимодействовать с собственным кодом. Собственный интерфейс Java (JNI) предлагает метод вызова собственного кода из Java и наоборот. В этом посте мы представим введение в JNI, а также инструкции по его использованию, а также обсуждение его преимуществ и недостатков.

Курс разработки Java даст вам больше информации по теме.

Что такое JNI?

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

Собственный интерфейс Java (JNI) и виртуальная машина Java являются двумя основными компонентами, составляющими JNI (JVM).

Java Native Method Interface (JNMI) — это интерфейс, который соединяет язык программирования Java с собственным кодом. Он делает это, предоставляя набор методов, которые Java-приложения могут использовать для вызова функций, написанных в машинном коде, и для передачи данных туда и обратно между Java и машинным кодом.

Приложения Java выполняются на платформе, известной как виртуальная машина Java (JVM). Он предлагает среду выполнения, которую можно использовать для выполнения байт-кода Java. Виртуальная машина Java (JVM) предлагает набор методов, позволяющих собственному коду получать доступ к объектам Java и вызывать код Java.

КАК ПОЛЬЗОВАТЬСЯ JNI?

При использовании JNI требуются следующие процедуры:

Создайте нативный код:

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

Создайте код Java:

Напишите код Java, который будет вызывать код, написанный на исходном языке. Этот фрагмент кода должен содержать объявление нативного метода, соответствующего функции нативного кода.

Создайте файл заголовка:

Создайте файл заголовка, определяющий собственный метод, с помощью инструмента Java Native Interface (JNI).

Внедрите нативный код:

Создайте функцию, используя собственный код, и поместите ее в общую библиотеку.

Загрузить общую библиотеку:

Перенесите общую библиотеку в JVM, чтобы ее можно было использовать.

Вызов собственного метода:

Java следует использовать для вызова соответствующего нативного метода.

Чтобы продемонстрировать, как использовать JNI для вызова метода собственного кода, который возвращает строку, рассмотрим следующий пример:

Собственный код:

c

Скопировать код

#include ‹jni.h›

JNIEXPORT jstring JNICALL Java_MyClass_hello(JNIEnv *env, объект задания) {

return (*env)-> NewStringUTF(env, «Привет из нативного кода!»);

}

Java-код:

Джава

Скопировать код

открытый класс MyClass {

статический {

System.loadLibrary («mylib»);

}

общедоступная нативная строка hello();

public static void main(String[] args) {

Объект MyClass = новый MyClass();

Результат строки = obj.hello();

System.out.println(результат);

}

}

ПРЕИМУЩЕСТВА JNI

Возможность доступа к нативному коду:

Доступ к собственным библиотекам кода и системным функциям, которые обычно недоступны в контексте Java, возможен через собственный интерфейс Java (JNI).

Производительность:

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

Переносимость:

Собственный интерфейс Java (JNI) позволяет переносить приложения Java на широкий спектр платформ, включая те, которые не поддерживают виртуальную машину Java.

Курс разработки бэкенда на Java улучшит ваши знания и навыки.

НЕДОСТАТКИ JNI

Сложность:

Из-за своей сложности JNI требует от разработчика знакомства как с Java, так и с созданием собственного кода.

Код для конкретной платформы:

Поскольку JNI требует построения кода, который отличается для каждой платформы, может быть сложно поддерживать и переносить программы между несколькими операционными системами.

Безопасность:

При неправильном использовании JNI может создавать потенциальные проблемы с безопасностью. Тот факт, что код JNI может выполнять произвольный собственный код, представляет собой возможный риск для безопасности.

ЗАКЛЮЧЕНИЕ

JNI — это надежная инфраструктура, которая позволяет приложениям Java взаимодействовать с кодом, написанным на родных языках. Он обеспечивает доступ к собственным библиотекам кода, а также к системным службам, которые недоступны в контексте Java. JNI — это собственный интерфейс Java, который можно использовать для переноса программ Java на широкий спектр различных платформ. Это также может повысить производительность некоторых видов приложений. Тем не менее, JNI — это сложная среда, которая требует от разработчика навыков работы с Java в дополнение к разработке собственного кода.

Стоимость курса разработчика Java может доходить до 1 лакха индийских рупий.