Most read:
Popular archives:
JavaWorld's new look is here!
We've upgraded the site with a fresh look-and-feel, improved topical navigation, better search, new features, and expanded
community platform. Learn more about the changes to JavaWorld.
| Oracle Compatibility Developer's Guide |
| The Explosion in DBMS Choice |
Personally, I have 16 years of experience developing software systems. I worked at the Stanford Research Institute researching network protocols, distributed systems, and a host of Internet technologies. Additionally, I worked at Sybase in the kernel and performance group helping develop Sybase's distributed database engine. I began looking at Java at Sybase when I was working on a project to integrate the Java Virtual Machine (JVM) into the database engine. As you can imagine, there were many issues to resolve. The kernel team was assigned the task of understanding the performance problems and, of course, resolving them in a timely fashion. Java performance has been a central focus for me ever since.
The Java platform consists of three major components: the Java 2 Platform, Standard Edition (J2SE); the Java 2 Platform, Enterprise Edition (J2EE); and the Java 2 Platform, Micro Edition (J2ME). J2SE is the core platform most familiar to developers; that is, it contains the JVM, Java Foundation Classes (JFC), Remote Method Invocation (RMI), JavaBeans, and other traditional components of the Java platform. J2EE is a relatively new platform for enterprise development. It provides a framework for developing robust server-side applications with APIs dedicated to server technology. For example, Enterprise JavaBeans (EJB) and Java Transaction Service (JTS) are included in J2EE and provide a seamless environment for enterprisewide Java development. J2ME is the platform for device and mobile computing. I evangelize the J2SE platform and the associated performance technology (that is, the HotSpot performance engine).
Although the Java language has opened up new dimensions in the world of software development, it has also created new challenges. Given that Java is platform independent and interpreted, writing code that performs well is no longer cut and dried. Java developers need to focus their optimization efforts on a higher level of abstraction, independent of architectural idiosyncrasies.
It has become apparent to me in my travels around the world evangelizing Java technology that some fundamental misconceptions exist regarding Java performance. The same concerns and issues have been voiced time and time again with respect to understanding what components make up the Java execution workload, what developers can do to identify performance bottlenecks, what tools are available, which JVM is available on which platform, and which JVM should be used to deliver the best performance.