The problem I have with Java is that, once you make a standalone program from a Java code, it isn't actually standalone anymore. So where normally, system calls would go System --> Program an vice versa, now it goes System --> Java Runtime Layer --> Program and vice versa. You ar no longer running a single program, but rather two programs to run one single program. "Standalone" applications coded in Java are more process-heavy due to this. Furthermore, if the Java Layer segfaults (or encounters any other error and terminates), it takes the whole shebang down with it.