Taking the broad view of Java, that is, including the JVM, by far the single biggest current deficiency in Java, IMHO is the lack of the ability to run multiple applications in the same JVM (robustly, efficiently, of course).
In other words, implement JSR 121 and JSR 284, but with JSR 284 explicitly including memory as a managed resource in JSE.
And include an option to start the JVM at boot time, and the ability to have multiple JVM's, each with multiple applications, for separation where needed.
I really surprised nobody else has mentioned this.
The inclusion of scripting languages in Java, that is, another category of small programs, makes this more pressing.
Applets will always be perceived as slow until this is done, and, when it is done, the perception will be reversed: they will be perceived as very fast.
Startup time (if the JVM is loaded at boot time) will be ZERO, and the memory footprint will go down, since there will be only one JVM, typically. The class data sharing work is great, but this is needed to go the rest of the way. |