The Java® programming language and the Java virtual machine (JVM®) are intended to provide a level of abstraction from the underlying hardware and operating system (OS). This abstraction poses challenges from a performance perspective, because developers are often unable to make use of best-practice approaches during software development for their deployed OSs and hardware platforms. The rise of multicore processor systems has been swift and has changed many software developers' underlying assumptions with respect to the hardware over the last ten years. The role of the JVM is to hide such platform complexity by adapting appropriately through runtime analysis and reaction to application behavior. The JVM is an essential component for exploiting the full potential of multicore processor systems through effective management of the memory subsystem, removing impediments to application and system scalability with respect to the number of logical processors, producing efficient and highly optimized code, and providing user tools for monitoring and analysis. This paper reviews the key techniques and tools available in the IBM Developer Kit for the Java 6 release for managing and optimizing Java for multicore processor environments and describes performance results to demonstrate the effectiveness of such tools and techniques.
Note: The Institute of Electrical and Electronics Engineers, Incorporated is distributing this Article with permission of the International Business Machines Corporation (IBM) who is the exclusive owner. The recipient of this Article may not assign, sublicense, lease, rent or otherwise transfer, reproduce, prepare derivative works, publicly display or perform, or distribute the Article.