Problems with Java

Jeff Vroom
2/23/2004

This is a quick list of the structural performance problems I see in the commonly used implementations I'm familiar with. It is true that in some toy benchmarks, particularly those that eliminate startup time that Java can perform on-par with similar applications written in C and Java but for most real applications, I still believe it is anywhere from 20% to 10X slower. See these performance benchmarks. Performance tuning is one of the most time consuming phases of the development process so I view this loss of performance in the language as a loss of efficiency in the programming process, hence my desire to see these problems get fixed.

For most applications, the benefits of Java such as the safe memory model, "lazy linking" and improved standard apis far outweigh the performance loss so that makes Java a very successful language for most applications. But Java struggles to compete on the desktop, small devices where more performance control is necessary, small script level programs where startup time is dominant, and in applications with large memory requirements or where performance is critical. If you are competing on a price/performance curve with another company using a more efficient language, you may well lose in the long run with Java.

I also think that each of the major performance problems in the Java environment can be fixed though probably not without breaking some of the rules in the language spec. It is my opinion that the performance problems inherant in the Java platform are not structurally tied to the most important efficiency gains you get from using it. Instead, these performance problems are due to abstractions in the Java language which are not compatible with the implementation of these basic concepts in windows and unix.