Введение в ключевое слово native:

Ключевое слово native действует как связь между языком JAVA и фрагментом кода или библиотекой, написанными на разных языках, кроме JAVA, который может зависеть от компьютера, на котором вы работаете. Если к методу применяется ключевое слово native, это означает, что метод будет реализован с использованием собственного кода, написанного на каком-либо другом языке (например, C или C ++) через JNI (собственный интерфейс JAVA).

Синтаксис:

Синтаксис машинного кода такой же, как и у обычного определения функции, с ключевым словом «native», добавленным в начале функции.

Например:

Общедоступное тестирование

{общедоступный собственный String testMethod (параметр String);}

Здесь public - модификатор доступа. Он должен быть общедоступным, чтобы его мог использовать другой файл. Строка - это тип данных, возвращаемых функцией. Это может быть целое, символьное или логическое значение в зависимости от ключевого слова. Параметр, переданный в эту функцию, также имеет строковый тип данных. Все должно быть под классом.

После объявления функции мы вызываем эту функцию через созданный объект и загруженную библиотеку.

public static void main (String [] args)

{

System.loadLibrary («тестирование»);

тестирование testingnew = новое тестирование ();

Строковый вывод = testingnew.stringMethod («ИСХОДНЫЙ»);

}

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

Как работает родное ключевое слово?

Должно быть два файла. Один содержит код JAVA, а другой должен иметь устаревший код C / C ++. Код Java будет использоваться для вызова устаревшего кода. Этот устаревший код будет взаимодействовать с оборудованием и возвращать ожидаемый результат.

Когда унаследованный код взаимодействует с оборудованием, он не будет следовать рекомендациям, изложенным JAVA. Этот код выполнит желаемую обработку, чтобы получить результат и передать результаты в JNI. Затем собственный интерфейс Java проверит свой каталог, содержащий все правила, относящиеся к машинному коду (в SDK это находится в файле с именем javah.exe). JNI разработан как часть набора инструментов Java. После этой обработки JAVA опубликует выходные данные на самом языке JAVA. Когда мы создаем программу на JAVA, мы должны убедиться, что существует связь переменной / потока данных между файлом JAVA и устаревшим файлом, чтобы между ними был плавный поток данных.

Шаги, объясняющие, как использовать собственные ключевые слова, приведены ниже:

  1. Напишите код JAVA, содержащий собственный метод, загруженную разделяемую библиотеку и сохраните его, используя «filename.JAVA».
  2. Скомпилируйте код JAVA и преобразуйте его в байт-код.
  3. Создайте файл заголовка C / C ++, содержащий подпись собственной функции, которая должна быть вызвана.
  4. Напишите код C / C ++, имеющий реализацию собственного метода.
  5. Запустите исполняемый файл JAVA, чтобы увидеть результаты.

Примеры, демонстрирующие реализацию ключевого слова native:

Мы должны написать код в Eclipse и запустить его, чтобы создать библиотеку, с помощью которой затем будет реализован код C.

Код: package com.slackerOne;

public class JPP {

общедоступный статический собственный void pAccess ();

общедоступный статический собственный int pRead ();

общедоступный статический собственный void pWrite (порт int, вывод int);

static {

System.loadLibrary («JPPlibs»);

}

public void jAccess () {

JPP.pAccess ();

}

public int jRead () {

вернуть JPP.pRead ();

}

public void jWrite (int port, int output) {

JPP.pWrite (порт, вывод);

}

}

После сохранения этого кода в новом «классе» java-проекта. Нам нужно настроить среду выполнения для создания файла заголовка.

Когда мы запустим это, мы должны сгенерировать библиотеку.

Выход:

Здесь мы создали файл заголовка из кода Java, который будет действовать как связь между собственным кодом и языком Java.

Преимущества:

  1. Это дает JAVA дополнительное преимущество для взаимодействия с кодом, написанным на других языках, и сокращает объем работы, чтобы тот же код был написан на JAVA, тем самым уменьшая избыточность кода.
  2. Это улучшает общую производительность кода. Поскольку код, написанный на другом языке, может быть быстрее, когда он работает с машинным языком, по сравнению с JAVA. Затем мы можем использовать программу JAVA для вызова этого кода.
  3. Используя этот подход, мы можем напрямую выполнять системные вызовы. Снижение вероятности внешнего вмешательства и повышение скорости выполнения кода.
  4. Вы можете динамически вызывать предварительно загруженную библиотеку (написанную на любом языке, отличном от JAVA), используя произвольный управляющий код, написанный на JAVA, и при этом получать ответ на JAVA.
  5. Делает доступным для JAVA доступ к аппаратным ресурсам, которые доступны для использования только другими языками.
  6. Если у вас есть платформенно-зависимый код, уже созданный для вашего приложения, и функции которого не поддерживаются через JAVA, в этом случае мы можем иметь собственный код и связать этот собственный код с JAVA через ключевое слово native.

Правила:

  1. Перед именем метода следует использовать ключевое слово Native.
  2. Объявление собственного метода не имеет тела и должно заканчиваться точкой с запятой, поскольку эти методы не определены в JAVA, но представлены на языке C / C ++.
  3. Нативные методы не могут быть объявлены абстрактными.
  4. Поскольку нет никакой гарантии, что предыдущий старый код написан в соответствии со стандартом IEEE 754 (Стандарт IEEE для арифметики с плавающей запятой является техническим стандартом для арифметики с плавающей запятой, установленным в 1985 году Институтом инженеров по электротехнике и электронике), поэтому, мы не можем объявить эти собственные методы как strictftp.
  5. Спецификация Java Native Interface (JNI) разработана JAVA для определения правил и объявлений для реализации собственных методов, таких как преобразование типов данных между Java и собственным кодом.

Заключение:

Ключевое слово Native - это преодоление разрыва между родными языками и JAVA. Это можно использовать в качестве критического звена, если наше программное обеспечение взаимодействует с оборудованием больше для получения эффективного кода с использованием уже существующего кода. Это снижает объем работы по реализации по сравнению с разработкой нового кода приложения с нуля, где бы этого можно было избежать.