Wizard API updated!
Tim Boudreau has released a new version of the Swing Wizard library (version 0.997) that fixes the WizardException bug reported in JavaWorld's recent Open Source Java Project profile. The article's examples have been reworked to test out the new, improved WizardException. Thanks, Tim, for this helpful fix!
Open Source Java Projects: The Wizard API

Newsletter sign-up

Sign up for our technology specific newsletters.

Enterprise Java
View all newsletters

Email Address:

Profiling the profilers

A comparative review of three commercial Java code profilers

Modern software is such an unwieldy multidimensional beast that no single development tool can ever hope to give programmers the complete picture of their creations. Even performance—that elusive metric we all love to hate when our code struggles with second gear, and love, when our code travels at O(1) speed—consists of many devilishly interlocked facets.

Performance's proverbial tip of the iceberg consists of the subjective, user-tangible perception of program speed and responsiveness. If we temporarily eliminate the user from the equation, then we can equate performance with the sum effect of objective performance facets such as algorithm choice, overall memory usage, object allocation and de-allocation dynamics, and multithreading design and runtime behavior. Helping you to understand your program's dynamic behavior in these select dimensions is the burdensome job of code profilers.

In this article, I look at three commercial Java profilers and determine which ones come close to satisfying your, and my, needs:

  • Borland's Optimizeit Suite
  • Quest Software's JProbe Suite
  • ej-technologies' JProfiler


Profiler basics

Not surprisingly, all three products have a lot in common. All modern profilers begin from an identical starting point and constraint: the Java Virtual Machine Profiler Interface (JVMPI) (see sidebar, "The Java Virtual Machine Profiler Interface"). This Sun Microsystems API lets tool vendors interface or connect with a JVMPI-compliant JVM, and monitor the workings and key events of a JVM running any Java program—from standalone application to applet, servlet, and Enterprise JavaBeans (EJB) component.

Given that JVMPI imposes a standardized, level playing field for all profiler tool vendors, it is no surprise that the main differentiating factor vendors compete on boils down to the tools' metafeatures (i.e., features that add significant value to raw JVMPI data and functionality, and, even more important, the graphical user interface (GUI) fronting those features).

As you'll see in the rest of this product review, the products' make-or-break GUIs each have an individual approach to the core problem of how to exploit the raw JVMPI features to maximize analytic and debugging productivity. Unfortunately, as for so many applications tasked with visualizing large datasets in an intuitive and truly user-friendly way, not every profiler convinced me that its makers succeeded in that respect.

The three reviewed profilers have almost identical profiling session configuration capabilities, so I briefly mention them here and move on to the comparison:

  • JVM selection
  • To-be-profiled program selection
  • CLASSPATH and source path selection


To start any profiling session, all three products let you select the JVM on which you normally run your application. Once you select a JVM, you must specify your program's main class, or executable jar file, and what arguments, if any, your program expects. Finally, setting the CLASSPATH for a profiling session also typically lets you point the tool at your source code hierarchy. Figure 1 shows a typical session configuration dialog.

1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |  Next >

Discuss

Start a new discussion or jump into one of the threads below:

Subject Replies Last post
. JProfiler
By Klaus B.
4 02/13/08 04:46 AM
by Bhart
. I have to disagree
By Tom Davies
3 08/09/07 01:38 PM
by Nam_Nguyen
. disappointed
By Maxine A. Moire
2 10/29/06 08:11 AM
by Anonymous
. NISUS
By Anonymous
1 10/29/06 06:29 AM
by Anonymous
. note on jprofiler
By Anonymous
0 10/29/06 06:28 AM
by Anonymous
. Unsupported platforms
By Warren Dew
2 10/29/06 06:28 AM
by Anonymous
. CPU Profiling
By Max
5 10/29/06 06:27 AM
by Anonymous
. Compuware DevPartner
By Anonymous
2 10/29/06 02:08 AM
by Anonymous
. jProfiler memory usage analysis
By Anonymous
2 10/29/06 01:47 AM
by Anonymous
. JProbe vs JProfiler
By Anonymous
0 09/04/03 11:40 AM
by Anonymous
. JProfiler Tutorials
By Anonymous
0 08/26/03 10:08 AM
by Anonymous


Resources