As for exiting, have you tried setting a shutdown hook to exit cleanly regardless of how the JVM goes down?
As I've said elsewhere, I've been updating the Magician bindings. I've really struggled with the "proper shutdown" problem (WinXP, Sun JDK 1.4.x). I had thought my implementation was working, but it was failing silently.
Running the registered shutdown Runnables is the last thing the JVM does, meaning the AWT stuff has already gone bye-bye. So my GLComponent's destoy() method, which deletes the GL context then unlocks AWT, fails. Sometimes with an error 170 (resource not ready), sometimes with an ABEND.
There's probably a simple solution, but I haven't been clever enough to find it.