Skip to content
Jan Kąkol edited this page Dec 3, 2015 · 5 revisions

#Welcome to the JVM wiki!

Instrukcja tworzenia bibliotek dla JNI:

  1. Tworzymy klasę, która posiada natywną metodę.
  2. Kompilujemy z java oraz javah - ważne, żeby robić to z poziomu src i z pełną nazwa kwalifikowaną (np. com.jankkol.jni.HelloWorld)
  3. Tworzymy plik żródłowy c. Importujemy nasz wygenerowany header.
  4. Implementujemy metody (np JNIEXPORT void JNICALL Java_Hello_sayHello (JNIEnv *env, jobject obj) )
  5. Tworzymy biblioteke libnazwa.so za pomocą polecenia g++ -o libhello.so -I/opt/java/jdk1.8.0_65/include/ -fPIC -shared -lc hello.c .
  6. Odpalamy naszą klasę javy z parametrem -Djava.library.path= sciezka_do_lib

Skrypt do kompilowania żródeł C/C++

  • dla żródeł C - compileC.sh z nazwą pliku w parametrze np. compileC.sh hello
  • dla żródeł C++ - compileCPP.sh z nazwą pliku w parametrze np. compileCPP.sh hello

Ważne flagi JVM

  • -XX:+PrintFlagsFinal - wyświetla wszystkie flagi jvm(bez eksperymentalnych)
  • -Djava.compiler=NONE - flaga ustawia JIT compiler (NONE - brak kompilatora)