1.2 Hintergrund
NEXT |
PREVIOUS |
CONTENT
- verschiedene JVMs nutzen verschiedene Native Interfaces, wofür verschiedene
Versionen des native Code nötig sind
- Folgende Native Mathode Interfaces standen als Ausgangspunkt für JNI zur Wahl:
- JDK 1.0 Native Method Interface
- Netscape Java Runtime Interface
- Microsoft's Raw Native Interface und Java/COM Interface
JDK 1.0 Native Method Inferface
Nachteile:
- native Methoden greifen auf Felder von Java Klassen zu wie auf Membervariablen von C Strukturen,
aber: die Java Sprachspezifikation definiert nicht, wie Objekte im Speicher repräsent werden.
Daraus folgt: man darf darüber auch keine Annahmen treffen.
- es verläßt sich auf einen "vorsichtigen" (conservative) Garbage Collector
Netscape Java Runtime Interface
Vorteile:
- Es wurde hinsichtlich Portierbarkeit entwickelt
- Es trifft wenige Annahmen über die Implementierungsdetails der zugrundeliegenden JVM
- Es berücksichtigt Gesichtspunkte, wie native methodes, debugging, reflection,
invocation (embedding), etc....
Microsoft's Raw Native Interface und Java/COM Interface
Vorteile:
- Es stellt auf einem niedrigen Level ein effizientes raw native interface (rni) zur
verfügung
- Auf Source-Level ist es stark abwärtskompatibel zum JDK 1.0 NMI mit einem großen
Unterschied: native Methoden nutzen RNI Funktionen, um mit dem Garbage Collector zu
interagieren, anstatt sich direkt auf den GC zu verlassen.
- Auf höherem Level bietet es ein standard binary interface, das sprachunabhängig.
ist; Java Xode kann ein COM Objekt benutzen, als ob es ein Java Objekt wäre und eine Java
Klasse kann dem System auch als COM Klasse zur Verfügung gestellt werden.
© 1999 Lars Jordan,
Chemnitz Java User Group