I'm not sure, but the reason a separate thread is started for spawning the jvm is due to the fact that aolserver blocks some signals that are needed by the jvm. IIRC sigusr2 is used by some jvms to run the garbage collector, and aolserver was blocking it in the main thread, so the GC wouldn't run. I know ns_java doesn't explicitly block any signals, so I'm not sure why sigchld wouldn't be working normally.
Yes, send me the patch.