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

Gecko

интерфейса плагинов для браузера Navigator Open Java Interface (OJI) с поддержкой виртуальной машины Java (JVM) компании Sun Внутренний интерфейс инфраструктуры

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

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

Фабричный метод (шаблон проектирования)

g2 = GovernmentB() g2.set_culture() print(str(g2)) Пример на языке Java interface Product { } class ConcreteProductA implements Product { } class ConcreteProductB

Java PathFinder

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

Интерфейс (объектно-ориентированное программирование)

может быть выставлена на удаление. (1 ноября 2016) Интерфе́йс (англ. interface) — структура программы или синтаксиса, определяющая отношение с объектами

Java

класса создавать нельзя. Высшей степенью абстрактности в Java является интерфейс (модификатор interface). Интерфейс содержит преимущественно абстрактные методы

Элемент интерфейса

на основе AJAX Dojo ExtJS YAHOO User Interface library Под AmigaOS Intuition Reaction MUI (Magic User Interface) Под AROS Zune Под DOS Turbo Vision —

Fluent interface

Текучий интерфейс (англ. fluent interface — в значении «плавный» или «гладкий» «интерфейс») в разработке программного обеспечения — способ реализации