Skip to main content

Notes About JNI

Note #0:

How to create JNI:

public class AJNIClass {

static {
System.load("myLib.so");
}

private native static void aMethod (int aParam, String aParamToo, byte[] yetAnotherParam);

}


Note #1:

There are two ways of loading native library:
  1. Using "System.load". This is like loading a file. 
  2. Using "System.loadLibrary". This is like asking JVM loader to search in system path the right library.
    Example: System.loadLibrary("SMJava"); will try to load libSMJava.so in *nix or SMJava.dll in Windoze.
Note #2:

How to create JNI Code:

# javac AJNIClass.java
# javah AJNIClass

It will generate a header. Implement it and compile the arbitary library. Voila! Your program will start to run (of course with bug included).

Note #3:

A pointer in C/C++ is an integer long in the Java. So, you can save pointers in Java. Java will prevent its Garbage Collector from erasing the memory where the data inhabitate. So, be sure to free the memory after using it.

Note #4:

People always use static branch of  a class to load a native. This isn't a bad idea since the library is loaded once when the class is loaded. But, to give you a fairness and control, you could load the native library in any static method. The main method may applicable, this is necessary in times where you want to walk with many platform supported and you may choose which library should be loaded. Oh, with the Singleton around, maybe it can be suitable for non static object. But, I've never tried it before.

Note #5:

There is a God, pray when you see a segmentation fault. :P

Comments

Popular posts from this blog

STAN vs. UI

Ugh, kasihan banget adek gue. Saking kepinteran dia jadi dapet Akuntansi UI dan STAN. Jadi bingung mau masuk yang mana. Beberapa orang (termasuk orang tua gue), menyarankan masuk STAN. Gue malah memperburuk suasana dengan membela memasuki Akuntansi UI, maklum bela almamater. Duh, gue jadi merasa bersalah bikin dia ragu-ragu. Kira-kira enakan masuk mana, yah? Gue juga gak tahu keuntungan masing-masing. Hasil debat sementara: ~ Untuk jangka panjang masuk UI, untuk jangka pendek STAN. ~~Tapi, dia itu kan cewek, ntar pas menikah kemungkinan besar karir terhambat. Eits, ntar, dulu, sekarang kan jamannya emansipasi, bisa aja cowoknya yang jadi BRT. ~ STAN sarang korupsi, kalo masuk STAN jadi pegawai negeri. Kalo mau kaya harus korupsi. Tapi kalo masuk UI, lulus masuk jadi akuntan publik. Sekarang ini, orang membayar akuntan publik untuk memanipulasi nilai pajak dan aset. *SIGH*. Jadi gak ada yang beres ~ dll. Yah, udah gue jadi bingung, apa lagi dia nanya saran gue. Buah, gue gak pengalaman ...

Installing Goodix Fingerprint Reader Driver on Fedora

I currently have a Lenovo Thinkpad L14 laptop equipped with fingerprint. I was `belok` from KDE Neon to use Fedora 40 because of someone. Now I am tempted to enable my fingerprint: lsusb | grep -i fingerprint Bus 001 Device 004: ID 27c6:55b4 Shenzhen Goodix Technology Co.,Ltd. Fingerprint Reader Dump the firmware Assuming this is a fresh install, lets do some magic by getting some dependencies: sudo dnf install gcc git python-pip python-devel openssl Let's get the source code: git clone --recurse-submodules https://github.com/goodix-fp-linux-dev/goodix-fp-dump.git cd goodix-fp-dump Create an isolated Python environment: python -m venv .v source .v/bin/activate Do the magic: sudo su pip install -r requirements.txt python run_55b4.py exit There are some python scripts available. I run run_55b4.py because my device ID is 27c6: 55b4 . It will spell some nonsense, which is a good thing. That nonsense actually the firmware captured by our device. Also, I typed exit becaus...

F(N)AQ

After attending the INAICTA, Indonesia ICT Award, I am a little upset. Yeah, I know I shouldn't, we have just been selected to become one of the grand finalists. But, still... I wish people would have Frequently Asked Question about research and development: - Cool, how do you develop that? - Can I have reference of your works? - Hmm.. the technology, can this implemented on x stuff? - I have a great idea, bla.. bla.. bla.., what do you think? - If I'm trying to develop another project, what should I do? - What problem could be solved by this? - What is the future of the project? Yet, those become Frequently [Never] Asked Question. What's wrong with you people? Why I'm suddenly feel ashamed to be an Indonesian? Isn't research about the long term investation? I know that few of them were invitation to work with us. But, why not a single quote I heard about the research? Why people always asking us about the money stuff? Am I wrong, or most of the people can't us...