Java Native Interface (JNI) — стандартный механизм для запуска кода под управлением виртуальной машины Java (JVM), который написан на языках C/C++ или Ассемблере и скомпонован в виде динамических библиотек; позволяет не использовать статическое связывание. Это даёт возможность вызова функции C/C++ из программы на Java, и наоборот. Более ранние интерфейсы, в отличие от JNI, не удовлетворяли условию двоичной совместимости.

Предназначение

править

Основным преимуществом JNI перед предыдущей версией (JDK 1.0 NMI — Native Method Invocation) и другими похожими интерфейсами (Netscape Java Runtime Interface или Microsoft’s Raw Native Interface and COM/Java Interface) является то, что JNI изначально разрабатывался для обеспечения двоичной совместимости, для совместимости приложений, написанных с использованием JNI, для любых виртуальных машин Java на конкретной платформе. Поэтому скомпилированный C/C++ код должен исполняться Java-машинами например, в различных браузерах, средствах разработки, подобных Symantec Visual Cafe и Sun Java Workshop, для конкретной платформы (Win32 в рассматриваемом случае). Более ранние интерфейсы не удовлетворяли условию двоичной совместимости.

С помощью этого механизма байт-код Java может взаимодействовать с системным или прикладным платформенно-ориентированным кодом, запущенным непосредственно под управлением различных операционных систем[1].

Платформенно-зависимый интерфейс JNI предоставляет доступ не ко всему интерфейсу прикладного программирования конкретной операционной системы, а лишь к некоторой его части. Впервые JNI использовался в Java версии 1.1 и был развит в Java 2.

Устаревший интерфейс

править

NMI (Native Method Invocation) был первым механизмом, специфицированным Sun для вызова кода на C из Java, и единственным механизмом, поддерживавшимся в JDK 1.0.2. Во всех последующих версиях Java NMI больше не поддерживается: его заменяет частично совместимый с ним механизм JNI.

Примечания

править
  1. Например, к ряду системных вызовов прикладного интерфейса программирования системы Windows (Windows API), Mac OS API или GNU/Linux

См. также

править

📚 Artikel Terkait di Wikipedia

Экспертная система

подходами к построению пользовательского интерфейса (проекты CLIPS Java Native Interface, CLIPS.NET и др.) не находят поддержки среди крупных компаний-производителей

Интерфейс внешних функций

«привязках к языку[англ.]», в то время как Java называет свой интерфейс Java Native Interface или Java Native Access (JNA)[англ.]. Интерфейс внешних функций

Standard Widget Toolkit

GTK+. SWT написана на стандартной Java и получает доступ к OS-специфичным библиотекам через Java Native Interface, который рассматривается в качестве

История версий Java SE

@FunctionalInterface Возможность наличия у метода интерфейса реализации по умолчанию Аннотации типов JavaScript-движок Nashorn Base64 декодер (java.util.Base64)

Список Java API

три типа Java API: официальный основной Java API, содержащийся в JDK или JRE, в одном из вариантов Java. Три варианта платформы Java: Java ME (Micro

Сравнение C Sharp и Java

средств для реализации параллельных вычислений. Java Native Interface (JNI) позволяет программам вызывать из Java низкоуровневые, системно-зависимые функции

Jakarta EE

платформой Java EE, по умолчанию управляет запуском потоков. Этот пакет определяет Java Message Server (JMS) API (Application Programming Interface). JMS API

Java PathFinder

(используя Model Java Interface), но на данный момент в JPF нет поддержки java.awt, java.net, и только ограниченная поддержка java.io и reflection. Другое