* Ok, I will use Unsafe if you insist (you are the boss, after all ;) ).
* About reading directly to a buffer - this is not JNI-style, it's Avian-specific. I just haven't known about it yet. Could you tell me more about using it? I could dig by myself, of course, but it would be great if you explain which functions/methods to use and I'll use them.
* I understand your position well. I'll try to minimize the native code as tight as I could.

By the way (just an idea), there is method which could help you to shrink native binary. You could divide the default library into some parts (java classes + JNI code) and turn them on and off during compilation. For example if I don't want networking I would exclude the whole java.net package with java-net.cpp.