native
ist ein Java Schlüsselwort. Es kennzeichnet eine Methode, dass sie in anderen Sprachen implementiert wird, nicht in Java. Die Methode wird ohne einen Körper deklariert und kann nicht abstract
sein. Sie arbeitet mit JNI (Java Native Interface) zusammen.
Syntax:
method();
Native Methoden wurden in der Vergangenheit verwendet, um leistungsrelevante Abschnitte zu schreiben, aber da Java immer schneller wird, ist dies jetzt weniger üblich. Native Methoden werden derzeit benötigt, wenn
- Sie von Java aus eine Bibliothek aufrufen müssen, die in einer anderen Sprache geschrieben wurde.
- Sie müssen auf System- oder Hardwareressourcen zugreifen, die nur von der anderen Sprache aus erreichbar sind (typischerweise C). Tatsächlich können viele Systemfunktionen, die mit dem realen Computer interagieren (z.B. Festplatten- und Netzwerk-IO), dies nur tun, weil sie nativen Code aufrufen.
Um das Schreiben nativer Methoden zu vervollständigen, müssen Sie Ihre Klasse mit dem Tool javah
bearbeiten, das einen Header-Code in C generiert. Sie müssen dann die Implementierung des Header-Codes bereitstellen, eine dynamisch ladbare Bibliothek erzeugen (.so
unter Linux, .dll
unter Windows) und sie laden (im einfachsten Fall mit System.load(library_file_name)
. Die Codekomplettierung ist trivial, wenn nur primitive Typen wie Integer übergeben werden, wird aber komplexer, wenn Strings oder Objekte aus dem C-Code ausgetauscht werden müssen. Im Allgemeinen kann alles auf C-Ebene erfolgen, einschließlich der Erstellung neuer Objekte und des Rückrufs von Methoden, die in Java geschrieben wurden.
Um den Code in einer anderen Sprache (einschließlich C++) aufzurufen, müssen Sie eine Brücke von C zu dieser Sprache schreiben. Dies ist normalerweise trivial, da die meisten Sprachen von C aus aufrufbar sind.