Wireless Home Digital Interface
- 1 year ago
- 0
- 0
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 может взаимодействовать с системным или прикладным платформенно-ориентированным кодом , запущенным непосредственно под управлением различных операционных систем .
Платформенно-зависимый интерфейс JNI предоставляет доступ не ко всему интерфейсу прикладного программирования конкретной операционной системы, а лишь к некоторой его части. Впервые JNI использовался в Java версии 1.1 и был развит в Java 2.
NMI (Native Method Invocation) был первым механизмом, специфицированным Sun для вызова кода на C из Java, и единственным механизмом, поддерживавшимся в JDK 1.0.2. Во всех последующих версиях Java NMI больше не поддерживается: его заменяет частично совместимый с ним механизм JNI.