<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Java_Native_Interface</id>
	<title>Java Native Interface - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Java_Native_Interface"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Java_Native_Interface&amp;action=history"/>
	<updated>2026-05-14T21:15:13Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Java_Native_Interface&amp;diff=125156&amp;oldid=prev</id>
		<title>imported&gt;Wurgl: /* Weblinks */ Deutscher Artikel ist vorhanden</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Java_Native_Interface&amp;diff=125156&amp;oldid=prev"/>
		<updated>2024-10-21T08:21:09Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Weblinks: &lt;/span&gt; Deutscher Artikel ist vorhanden&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Java Native Interface&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;JNI&amp;#039;&amp;#039;&amp;#039;) ist eine standardisierte [[Application Programming Interface|Anwendungsprogrammierschnittstelle]] (API), die die Möglichkeit schafft, aus der Programmiersprache [[Java (Programmiersprache)|Java]] heraus [[Plattform (Computer)|Plattform-spezifische]] [[Funktion (Programmierung)|Funktionen]] bzw. [[Methode (objektorientierte Programmierung)|Methoden]] aufzurufen.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu gewöhnlichen Java-Programmen ist ein Java-Programm, das JNI-Aufrufe verwendet, nur dann plattformunabhängig, wenn die native [[Programmbibliothek]] auf allen Plattformen verfügbar ist.&lt;br /&gt;
&lt;br /&gt;
== Einsatzzweck ==&lt;br /&gt;
&lt;br /&gt;
JNI ermöglicht es, native Methoden zu schreiben für Situationen, in denen es nicht möglich ist, ausschließlich Java als Programmiersprache einzusetzen. Dies ist der Fall, wenn beispielsweise die Standard-Java-Klassenbibliothek bestimmte Plattform-abhängige Features oder andere Programmbibliotheken nicht unterstützt. Weiterhin ist es per JNI möglich, eine weitere in einer anderen Programmiersprache programmierte Anwendung für Java zugreifbar zu machen. Viele Klassen der Java-Standardbibliothek basieren auf JNI, um beispielsweise die Datei-Ein- und Ausgabe oder Soundwiedergabe zu ermöglichen. Indem Java Leistungs- und Plattform-abhängige Implementierungen in die Standardbibliothek integriert, kann der Java-Programmierer und -Nutzer diese Features in sicherer und Plattform-unabhängiger Weise nutzen.&lt;br /&gt;
&lt;br /&gt;
Gelegentlich wird JNI als Fluchttür (&amp;quot;escape hatch&amp;quot;) für Java-Entwickler bezeichnet, da es ihnen den Zugriff auf Funktionalitäten ermöglicht, der andernfalls über die Standard-Java-API nicht möglich wäre. Es stellt die Schnittstelle zu anderen Programmiersprachen wie C oder C++ dar.&lt;br /&gt;
&lt;br /&gt;
Mit JNI ist es möglich, Funktionen einer [[Microsoft Windows|Windows]]-[[Dynamic Link Library|DLL]] oder einer &amp;#039;&amp;#039;[[Shared Library|shared library]]&amp;#039;&amp;#039; unter [[Linux]] bzw. [[Mac OS X]], die in [[C (Programmiersprache)|C]] oder [[C++]] programmiert sind, aus Java aufzurufen. Umgekehrt können „native“ Programme Java-Methoden über JNI aufrufen oder eine [[Java Virtual Machine|JVM]] ausführen.&lt;br /&gt;
&lt;br /&gt;
=== Java ruft native Methode auf ===&lt;br /&gt;
Um aus Java eine native Methode aufzurufen, muss diese zunächst als „&amp;lt;code&amp;gt;native&amp;lt;/code&amp;gt;“ deklariert werden. Zudem muss das Objekt selbst die native Programmbibliothek mit dem Aufruf von „&amp;lt;code&amp;gt;System.loadLibrary(&amp;quot;&amp;#039;&amp;#039;&amp;lt;Name der Bibliothek&amp;gt;&amp;#039;&amp;#039;&amp;quot;)&amp;lt;/code&amp;gt;“ laden, bevor die native Methode selbst aufgerufen werden kann.&lt;br /&gt;
&lt;br /&gt;
Das Java-Programm wird übersetzt und anschließend mit dem Softwarewerkzeug &amp;#039;&amp;#039;&amp;lt;code&amp;gt;javah&amp;lt;/code&amp;gt;&amp;#039;&amp;#039; eine [[Header-Datei]] erstellt, die die Funktionsdeklaration vorgibt. Mit dieser Header-Datei kann dann die native Programmbibliothek erstellt werden.&lt;br /&gt;
&lt;br /&gt;
In der nativen Programmbibliothek müssen spezielle Typen für primitive und komplexe Datentypen verwendet werden. Beispielsweise wird für ein Wahrheitswert &amp;lt;code&amp;gt;jboolean&amp;lt;/code&amp;gt; verwendet, anstatt der Typ &amp;lt;code&amp;gt;boolean&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;jdouble&amp;lt;/code&amp;gt; für Variablen vom Typ &amp;lt;code&amp;gt;double&amp;lt;/code&amp;gt;. Außer den Abbildungen für primitive Typen, existieren auch Abbildungen für komplexe Typen. Zu den primitiven und komplexen Typen zählen folgende:&lt;br /&gt;
{{Mehrere Bilder&lt;br /&gt;
| align       = center&lt;br /&gt;
| Richtung    = horizontal&lt;br /&gt;
| Kopfzeile   = &lt;br /&gt;
| Kopfzeile_align = left&lt;br /&gt;
| Kopfzeile_Hintergrund = &lt;br /&gt;
| Fußzeile    = &lt;br /&gt;
| Fußzeile_align = left/right/center&lt;br /&gt;
| Fußzeile_Hintergrund = &lt;br /&gt;
| Breite      = &lt;br /&gt;
| Hintergrund = &lt;br /&gt;
| unten       = &lt;br /&gt;
| center      = &lt;br /&gt;
&lt;br /&gt;
| Bild1       = Jni-primitive-typen.png&lt;br /&gt;
| Untertitel1 = JNI: Primitive Typen&lt;br /&gt;
| Breite1     = 300&lt;br /&gt;
&lt;br /&gt;
| Bild2       = Jni-komplexe-typen.png&lt;br /&gt;
| Untertitel2 = JNI: Komplexe Typen&lt;br /&gt;
| Breite2     = 428&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Eine der populärsten Anwendungen von JNI ist die Programmbibliothek &amp;#039;&amp;#039;[[Standard Widget Toolkit]]&amp;#039;&amp;#039; (SWT), die über JNI die Verwendung von Elementen der [[Grafische Benutzeroberfläche|Grafischen Benutzeroberfläche]] des [[Betriebssystem]]s ermöglicht.&lt;br /&gt;
&lt;br /&gt;
=== Natives Programm ruft Java auf ===&lt;br /&gt;
Aus einem nativen Programm kann Java-Code aufgerufen werden. Dies ist beispielsweise notwendig, um eine enge Verzahnung zwischen Java und dem nativen Programm zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Java Native Access]] (JNA) – Alternative zu JNI&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://docs.oracle.com/javase/7/docs/technotes/guides/jni/index.html &amp;#039;&amp;#039;Java Native Interface&amp;#039;&amp;#039;] – offizielle Dokumentation bei [[Oracle]]&lt;br /&gt;
* [http://forge.objectweb.org/projects/javaservice Projektseite des JavaService]&lt;br /&gt;
* [http://gcc.gnu.org/onlinedocs/gcj/About-CNI.html Compiled Native Interface (CNI)] Alternative zu JNI (siehe auch [[GNU Compiler for Java]])&lt;br /&gt;
* [http://johannburkard.de/software/nativecall/ NativeCall] Alternative, um native Methoden ohne JNI aus Java aufzurufen&lt;br /&gt;
* [https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/types.html JNI Typen]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Java-Programmierschnittstelle]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Wurgl</name></author>
	</entry>
</feed>