Enterprise Java performance: best practices
Java Programming Tutorial: This paper discusses best practices for maximizing the performance of enterprise Java workloads. First, we introduce the importance of performance of enterprise Java applications. We then describe our top-down, data-driven, and closed-loop approach to characterize where the problems are.

by Kingsum Chow, Ricardo Morin, Kumar Shiv, Software and Solutions Group, Intel Corp.

Citation for this paper: Chow, K., Morin, R., and Shiv, K. "Enterprise Java Performance: Best Practices." Intel Technology Journal. http://developer.intel.com/technology/itj/2003/volume07issue01/ (February 2003).

Abstract
This paper discusses best practices for maximizing the performance of enterprise Java workloads. First, we introduce the importance of performance of enterprise Java applications. We then describe our top-down, data-driven, and closed-loop approach to characterize where the problems are. We examine the performance of the software/hardware stack, first from the system-level perspective (topology, I/O, network), then from the top software layer (application level), through the middle layer (Java Virtual Machine), and down to the platform layer (processor, memory). We conclude by summarizing our recommendations for attaining the best performance on enterprise Java applications.

Introduction
Managed runtime environments such as Java have proven to be a very attractive platform for developing and deploying enterprise applications. Accessible object orientation, programming safety, and automatic memory management features deliver a highly productive foundation for business application development. In addition, the platform independence offered by managed runtime environments provides unprecedented investment protection, which is appealing to Information Technology (IT) managers, as enterprise applications tend to have a long life span.

Advanced Just-In-Time (JIT) compilation, memory management, and garbage collection technologies have effectively addressed initial concerns raised about the poor performance of Java-based applications. Today's Java Virtual Machines (JVM) take full advantage of a variety of target platforms, and keep up to date with the performance of the latest hardware and operating system advances as they evolve over time.

As Java[1] gained popularity in the development of server-based applications, standardized, robust, and scalable application support frameworks became a must. Enter Java 2 Enterprise Edition (J2EE)[2], a comprehensive specification for application servers, a class of system software designed to relieve application developers from creating and re-creating the "plumbing" necessary to support enterprise applications, including component models and life-cycles, object models, database access, security, transactional integrity, and safe multi-threading.


Enterprise Java performance: best practices -performance optimization considerations

Figure 1: Performance optimization considerations at the three levels of the top-down stack: system-level, application-level, and machine-level

Since the emergence of J2EE, application servers have grown to become important IT infrastructure components of many enterprises[3]. They support complex, multi-tier configurations with well-defined separation of functions (user interface, business processing, and database access), often including multiple servers arranged in clustered configurations, as well as back-end relational database management systems and legacy applications, integrated in the overall design.

As applications move from development to production, performance becomes a critical life-cycle requirement. Applications must not only meet stringent performance requirements upon deployment, but they must be able to gracefully scale with varying usage patterns and increased demand. Performance optimization and management in this environment is a difficult task, as performance is affected by many interrelated elements.

In this paper, we describe an iterative, data-driven, top-down methodology and the tools needed to systematically optimize the performance of application-server-based applications. We also describe performance optimization considerations at the three levels of the top-down stack: system-level, application-level and machine-level (see Figure 1).

At the system level, we identify performance and scalability barriers such as input/output (I/O), operating system and database bottlenecks, and we discuss techniques to overcome those barriers. At the application level, we discuss application design considerations and application server tuning. At the machine level, we discuss JVM implementations and hardware-level performance considerations such as processor frequency, cache sizes, and multi-processor scaling.

Throughout the paper, we introduce several case studies to illustrate the application of the techniques presented.

Read the rest of this article: click download, below.

© 2004 Intel Corp.


Subscribers who liked this article also read:
Mobilized applications and solutions: using intelligent documents as enterprise front-ends
by Chris S. Thomas. Intel Corp. A growing number of large providers...
J2EE application tier tuning
by Dan Middleton, Intel Corp. This article is the second of two tha...

If you're interested in this topic, these articles may be helpful:

Determine the correct XML parser type for a Java application
by Padma Apparao, senior performance architect, Software Solutions Gro...
Rapid application development with Python and Glade
by David Reed, Ph.D., Capital University. Create and modify your P...
Managed mobile clients with OSGi: managed smart clients - developing Java OSGi applications for PDAs and other embedded devices
by Michael Juntao Yuan, research associate, Center for Research in Ele...
Java SE 6 snapshot releases
from Sun Microsystems Inc. Sun is releasing weekly snapshots of the...
Overview of the methodology of functional blocks
from The Comp-Aid Company The use of the Comp-Aid Company's Func...

Related Jobs:

MTS3, SW #553646 - MA - Burlington - Sun Microsystems
Title: MTS3, SW Location: BURLINGTON, MA Job Role: Individual Con...
Technology Director #69247 - CA - Glendale - The Walt Disney Internet Group
Technology Director - Online posted 2/16/2007 Glendale, CA JOB...
DSP Validation Engineer #40425 - TX - Dallas - Formalized Design
Required Skills/Experience: * 3-5 years silicon verification an...
User Interface Programmer #15000 - CA - Woodland Hills - Activision, Inc.
User Interface Programmer Apply Online Descrip...
QA Engineer #RX1000021581 - CA - Burbank - Yahoo! Inc.
QA Engineer Job No. RX1000021581 Location US - Burbank Job Fu...
MTS3, SW #553628 - MA - Burlington - Sun Microsystems
Title: MTS3, SW Location: BURLINGTON, MA Job Role: Individual Con...
Senior Software Engineer #J00885 - CA - Santa Clara - BAE Systems
Description: Senior Software Engineer Description: An experienced s...
Flash Developer II #6535 - CA - San Francisco - International Game Technology
SUMMARY: The Flash Developer uses his/her software and Flash develo...
VR Studio - Intl. Localization Technical Staff #37361 - CA - North Hollywood - The Walt Disney Internet Group
VR Studio - Intl. Localization Technical Staff posted 9/19/2006 Nor...
Embedded Software Applications Developer #368599 - TX - Dallas - Formalized Design
Dallas, TX - 6+ Months Formalized Design is currently looking for a...