Just saw the release of the Java Native Access (JNA) library that allows easier access to native shared access.  Instead of annoying JNI adapter code to integrate the libraries, you can now just define an interface and use the JNA classes to manage the translation between the Java and the native code.  It’s easy to use and really makes it easier to both build and deploy your application.  Instead of complicated Ant scripts to auto-generate and compile JNI code, you can just define your interfaces and build normally.  It’s amazing it took so long for such a library to come out.