IBM listens Joel's complains about Java.
One of the complains about Java, that it does not use native controls http://www.joelonsoftware.com/articles/fog0000000006.html ,
Ramón García Fernández
Borland did this before, as did Microsoft, although it was only for Windows. Sun tends to throw a hissy fit about "100% pure" blah blah when people do this.
In the project I am currently working on I do make JNI calls quite often. However, the use tends to only be needed once. So in this case I do follow the technique mentioned in the article of one to one mapping of native calls and keep the more complex logic in the java code.
There is a performance cost involved in making a JNI call. If performance is an issue, you're better off having fewer, coarser JNI calls, which may involve moving some application logic from Java into the native code to avoid additional round-trips.
Fog Creek Home