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

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

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

JavaScript

выпускаются такие фреймворки как Cordova, NativeScript, React Native, Titanium SDK[англ.]. Учитывая то, что JavaScript используется в таких подвидах мобильных

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

Repository . openjdk.java.net. Дата обращения: 26 февраля 2020. Архивировано 26 февраля 2020 года. JEP 181: Nest-Based Access Control . openjdk.java.net. Дата обращения:

Java

Java — строго типизированный объектно-ориентированный язык программирования общего назначения, разработанный компанией Sun Microsystems (в последующем

Neo4j

Performance of Graph Query Languages: Comparison of Cypher, Gremlin and Native Access in Neo4J. Proceedings of the Joint EDBT/ICDT 2013 Workshops. EDBT '13

Embrace, Extend, and Extinguish

Linux). Microsoft в собственной реализации отказалась от интерфейса Java Native Interface, заменив его собственным J/Direct, доступным лишь для ОС Windows

Список портов TCP и UDP

the Service Name and Transport Protocol Port Number Registry RFC 6751 — Native IPv6 behind IPv4-to-IPv4 NAT Customer Premises Equipment (6a44) RFC 3887 —

Gremlin

Performance of graph query languages: comparison of cypher, gremlin and native access in Neo4j (англ.) // Proceedings of the Joint EDBT/ICDT 2013 Workshops