Previous replies are correct of course... I just wanted to point out that my company still finds JNI useful, sometimes.

We had a couple of application which extract data from an electric device, then put the results into a database, and also allow you to manage the whole thing through a very complex Swing interface. The connection to the devices was written in C, and compiled to native code. The database/swing parts were pure java. Both applications had to run on various platforms (we have Windos 2000, Linux, Mac). So the native part had to be be adjuested for each platform, but at least the db/swing part was re-usable. Roughly, I'd say it saved us a year's work (mainly because the GUI was insanely complex).

Of course, we had a very painful taste of the rule "compile once, test anywhere... and then test it again...".