Interkompatibilität von Programmiersprachen Java Native Interface Seminar aus Informatik SS2012 Christian Sesser, BSc Salzburg, 02.07.2012 Java Native Interface (JNI) Vor- und Nachteile • Pros – Funktionalität der std API wird erweitert – JNI bietet bietet Interkompatibilität in beide Richtungen (JVM Native, Native JVM) • Cons – Destabilisierung der JVM bei schlechter Programmierung – Nativer Teil ist Plattformabhängig – Nativer Teil hat keinen Garbage Collector – Keine Typen-Sicherheit und –prüfung Vorgehen mit JNI Vorgehen mit JNI ... static native int process(String message, MyObject mObj); static{ System.loadLibrary("print"); } ... JNIEXPORT void JNICALL Java_HelloWorld_print (JNIEnv *, jobject); #include <jni.h> #include <stdio.h> #include "HelloWorld.h" JNIEXPORT void JNICALL Java_HelloWorld_print(JNIEnv *env, jobject obj) { printf("Hello World!\n"); return; } JNI Grundlagen JNIEXPORT void JNICALL Java_ClassName_MethodName (JNIEnv *env, jobject obj) { /*Implement Native Method Here*/ } Datentypen Garbage Collector