Today, Java is used at the heart of the world’s largest and most critical computing
systems. However, when I joined the Java team in 1997 the platform was young and
just gaining popularity. People loved the simplicity of the language, the portability
of bytecodes, and the safety of garbage collection (versus traditional malloc/free
memory management of other systems). However, there was a trade-off for these
great features. Java was slow, and this limited the kinds of environments where you
could use it.
Over the next few years, we set about trying to fix this. We believed that just
because Java applications were portable and safe they didn’t have to be slow. There
were two major areas where we focused our attention. The first was to simply make
the Java platform faster. Great strides were made in the core VM with advanced
Just In Time compilation techniques, parallel garbage collection, and advanced lock
management. At the same time the class libraries were tweaked and tuned to make
them more efficient. All this led to substantial improvements in the ability to use
Java for larger, more critical systems.
The second area of focus for us was to teach people how to write fast software in
Java. It turned out that although the syntax of the language looked similar to C, the
techniques you needed to write efficient programs were quite different. To that end,
Jeff Kessleman and I wrote one of the first books on Java performance, which was
published back in 2000. Since then, many books have covered this topic, and experienced
developers have learned to avoid some of the most common pitfalls that used
to befall Java developers.