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