Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger

 << zurück
Java ist auch eine Insel von Christian Ullenboom
Programmieren für die Java 2-Plattform in der Version 5
Java ist auch eine Insel

Java ist auch eine Insel
5., akt. und erw. Auflage
1454 S., mit CD, 49,90 Euro
Galileo Computing
ISBN 3-89842-747-1
gp Kapitel 24 Java Native Interface (JNI)
  gp 24.1 Java Native Interface und Invocation-API
  gp 24.2 Einbinden einer C-Funktion in ein Java-Programm
    gp 24.2.1 Schreiben des Java-Codes
    gp 24.2.2 Compilieren des Java-Programms
    gp 24.2.3 Erzeugen der Header-Datei
    gp 24.2.4 Implementierung der Methode in C
    gp 24.2.5 Übersetzen der C-Programme und Erzeugen der dynamischen Bibliothek
    gp 24.2.6 Setzen der Umgebungsvariable
  gp 24.3 Nativ die Stringlänge ermitteln
  gp 24.4 Erweiterte JNI-Eigenschaften
    gp 24.4.1 Klassendefinitionen
    gp 24.4.2 Zugriff auf Attribute
  gp 24.5 Links und Weiteres


Galileo Computing

24.5 Links und Weiteretoptop

Weitere Themen sind dem Buch »Advanced Programming for the Java 2 Platform« auf den Web-Seiten von Sun unter http://developer.java.sun.com/developer/onlineTraining/Programming/JDCBook/jniref.html zu entnehmen. Auch findet sich eine intensivere Auseinandersetzung mit den anderen Themen unter http://java.sun.com/docs/books/tutorial/native1.1/. Eine JNI-FAQ bietet die Webseite von JGuru: http://www.jguru.com/faq/subtopic.jsp?topic-ID=472.

cxxwrap (http://www.deaven.net/~deaven/Software/cxxwrap/) liest Header-Dateien von C++ ein und generiert automatisch für die Klassen Stellvertreter auf der Java-Seite sowie Delegates in JNI, die auf die tatsächliche Implementierung weiterleiten. Aus den Beschreibungen der Header-Dateien nimmt cxxwrap nicht nur die Klassen mit Methoden, sondern auch die Konstanten. Auch versucht cxxwrap so gut wie möglich die Parametertypen zu übersetzen, etwa char unsigned char in byte und Pointer auf primitive Zellen in Arrays. Die Konstruktoren, Destruktoren und Methoden werden von der Java-Seite auf die C++-Seite weitergeleitet.

Sind die nativen Methoden über DLL bzw. COM zugänglich, kann ein anderer Weg eingeschlagen werden. Jawin (http://jawinproject.sourceforge.net/) ermöglicht mit einer kleinen nativen Bibliothek den Zugriff auf diese Ressourcen; besonders praktisch ist für MS-Office all das, was sich fernsteuern lässt. Die Webseite nennt etwa folgendes Beispiel, um in PowerPoint Folien hinzuzufügen:

Ole32.CoInitialize();
DispatchPtr app = new DispatchPtr("PowerPoint.Application");
app.put("Visible"true);
DispatchPtr preses = (DispatchPtr)app.get("Presentations");
DispatchPtr pres = (DispatchPtr) preses.invoke("add"new Integer(-1));
DispatchPtr slides = (DispatchPtr)pres.get("Slides");
DispatchPtr slide = (DispatchPtr) slides.invoke("Add"new Integer(1)new Integer(2));
DispatchPtr shapes = (DispatchPtr)slide.get("Shapes");
DispatchPtr shape = (DispatchPtr) shapes.invoke("Item"new Integer(1));
DispatchPtr frame = (DispatchPtr)shape.get("TextFrame");
DispatchPtr range = (DispatchPtr)frame.get("TextRange");
range.put("Text""Use Jawin to call COM objects");
Ole32.CoUninitialize();

Eine weitere Bibliothek ist NativeCall (http://nativecall.sourceforge.net/). Die Webseite gibt ein Beispiel zum Kopieren von Dateien mit der Windows-API:

import com.eaio.nativecall.*;
...
NativeCall.init();
IntCall ic = new IntCall( "CopyFileA" );
ic.executeCall

Abschließend sei noch com4j (https://com4j.dev.java.net/) genannt, welches ebenso wie Jawin zwischen Java und Microsoft COM kommuniziert. Interessant ist hier die Einbeziehung von Java 5, insbesondere der Annotationen.

 << zurück




Copyright © Galileo Press GmbH 2005
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de