Your SlideShare is downloading. ×
Let's talk about jni
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Let's talk about jni

625
views

Published on

Brief introduction to JNI

Brief introduction to JNI

Published in: Technology, Education

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
625
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Let’s talkabout JNIYongqiang Li
  • 2. Agenda JNI Overview JNI Sample Step by Step More Details of JNI JVM Native Memory Reference
  • 3. JNI (Java Native Interface)Overview Linux C/C++ Side Java Side Windows C/C++ Side(Code, VM) Mac OS C/C++ Side
  • 4. Java –verbose:jni HelloWorld
  • 5. JNI Sample (Step 1) Define the Java class and native functions
  • 6. Step 2 Use “javah” to generate the header for native functions.
  • 7. Header File
  • 8. Step 3 Implement .c/.cpp
  • 9. Step 4 Build the native code  g++ -I/usr/lib/java/include – I/usr/lib/java/include/linux -share org_yli_jni_SampleJNI.cpp -o libNative.so
  • 10. Step 5 Run it!  java -Djava.library.path=. SampleJNI
  • 11. A Real Case – Use Java tostart GTK+ application.
  • 12. More Details of JNI JNI Type
  • 13. JNIEnv Definea set of functions to manipulate JNI data, get field/method id, find class.  env->GetVersion()  env->Throw()  env->FindClass()  env->NewLocalRef()a Thread Local Storage variable
  • 14. Fields Can’t access directly Need to get Field ID first
  • 15. Methods Method ID is needed, just like fields.
  • 16. Use “javap” to find out the signature.
  • 17. And Constructor Use GetMethodID as well But method name is special. It’s “<init>”. Still use “javap” to find out its signature. Need use env->NewObject() to create a new instance.
  • 18.  As well, jstring can’t be manipulated directly. jstring• Depends on JNIEnv Functions • GetStringChars/GetStringUTFChars • ReleaseStringChars/ReleaseStringUTFChars • GetStringLength/GetStringUTFLength • NewString/NewStringUTF
  • 19. Other things depends onJNIEnv Manage Reference Find Class Access Array Throw exception…
  • 20. Native Memory
  • 21. Consume native memory
  • 22. More topics… Launch JVM in C/C++ Traps and pitfalls
  • 23. Reference Java Native Interface Specification Thanks for the memory

×