Some Shortcomings of, and Possible Improvements to, the Java Virtual Machine