Что такое реальное приложение Java Native Interface? - PullRequest
0 голосов
/ 19 мая 2018

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

Ответы [ 3 ]

0 голосов
/ 19 мая 2018

Важное применение JNI - это обернуть существующие библиотеки;альтернативой может быть перенос больших проектов (со стоимостью, связанной с написанием нового кода и тестированием).

См. в примере QuantLib, https://www.quantlib.org.Они переносят всю библиотеку на Java с помощью SWIG, который, в свою очередь, использует JNI.

0 голосов
/ 30 мая 2018

Я добавлю один реальный пример использования здесь.Наше программное приложение подключается к различным поставщикам для получения данных от них.Для этого мы используем API, поставляемые поставщиком.У 2 наших поставщиков есть только API C / C ++, и, поскольку наше приложение на Java, мы используем JNI для связи с этими API.

Хотя JNI довольно хрупкий в использовании, но если бы он не существовал, это означало бы, что нам пришлось бы переписать части нашего приложения на C ++, что составляло бы десятки тысяч строк кода + затраты на обслуживание обслуживания кодаосновы на 2 разных языках.

Один из возможных способов избежать JNI в нашей ситуации - это иметь промежуточное программное обеспечение для обмена сообщениями, которое можно было бы использовать для связи между процессами Java и C ++, но затем у нас возникают проблемы с задержкой + настройка и обслуживание другого сложного программного обеспечения для решения этой проблемы.,

0 голосов
/ 19 мая 2018

... в то время как мы можем сделать что-нибудь в Java

Это недостаток вашего мышления.Есть некоторые вещи, которые вы не можете сделать в Java.Есть и другие вещи, которые вы не можете сделать эффективно в Java.

Примеры включают:

  • взаимодействие с функциями ОС способами, которые не поддерживаются API Java,
  • вызов библиотек, реализованных на других языках программирования, и
  • , взаимодействующих с отображаемыми в памяти устройствами.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...