One person said that Swing apps wont work because the window will remain open. This is mostly false. Echidna's security manager keeps track of what windows were opened and destroys them when the process dies.
Another person was worried about different command line arguments for different programs. When you launch Echidna, you are allowed to lauch other programs from it's interface, where you can specify command line arguments.
And lastly, I don't think anybody should worry about a non-preemptive OS. While kernel-preemption is kinda new in Linux, I'm pretty sure all major Unixes have user-process preemption. I think Mac users were the last people to be stuck with a non-preemptive OS but even now, with the new BSD-based kernel, they can enjoy it too. I also think that the threading libraries used by JVM implementations on Linux use preemption.
There's still some problems with the way the Java environment was designed that hinder isolation. I encountered them when trying to write something like Echnida myself. While you can get around some of the static variables in java.lang.System with ThreadLocals most of the time (in, out, err, getProperties, etc.), there appears to be no way to change the current working directory. While some methods of java.io.File will use the "user.dir" property, the exists() method, for example, ignores it. While there are other problems, this is the real show-stopper in my opinion. The other problems arise when the target programs invoke some infrequently-used methods (such as setIn/Out/Err or setSecurityManager). Too bad...I was planning to write a pure-java replacement for all the common shell commands as well as the shell itself when I encountered this mess. :(
I've heard that something called an "isolation API" is on the way (in the Java Community Process). Hope they get it right.