Java Performance Tuning

Java(TM) - see bottom of page

|home |services |training |newsletter |tuning tips |tool reports |articles |resources |about us |site map |contact us |

Our valued sponsors who help make this site possible
New Relic: Try free w/ production profiling and get a free shirt! 

ManageEngine's Site24x7: End-to-End analysis on Java EE web transactions. Sign up for FREE! 

AppDynamics: Get complete browser to backend visibility. Monitor Now! 

Application Performance Management (APM)

Chart Java Jitter with jHiccup
Monitor and identify pauses in your Java apps. Download now

Use jKool analytics as a service
Spot patterns in time-series data - real-time and free

JProfiler
Get rid of your performance problems and memory leaks!


Java Performance Training Courses
COURSES AVAILABLE NOW. We can provide training courses to handle all your Java performance needs

See Your Message Here
You could have your tool advertised here, to be seen by thousands of potential customers

Java Performance Tuning, 2nd ed
The classic and most comprehensive book on tuning Java

Java Performance Tuning Newsletter
Your source of Java performance news. Subscribe now!
Enter email:


New Relic
New Relic: Try free w/ production profiling and get a free shirt!

ManageEngine
ManageEngine's Site24x7: End-to-End analysis on Java EE web transactions. Sign up for FREE!

AppDynamics
AppDynamics: Get complete browser to backend visibility. Monitor Now!


Chart Java Jitter with jHiccup
Monitor and identify pauses in your Java apps. Download now

Why is my application so slow?
Learn 3 ways to detect Java Application Performance Trends

JProfiler
Get rid of your performance problems and memory leaks!


Java Application Performance Management (APM) is about managing the performance of your Java application. Here Jack Shirazi covers the basics including examples, tools and the market.
Published July 2004, Author Jack Shirazi

Page 2 of 2
previous page: Application Performance Management in action

The Java APM Market Size

Not everyone reading this article will care about the Java APM market size: you are probably more interested to know what these tools can do for you, and at what cost - not how much the tools vendors can make! But some people find this interesting, including me, and I thought it would be a bit of fun to carry out a little look at how much the Java APM market may be worth.

There doesn't currently seem to be a reliable estimate for the size of the APM market segment and sub-segments. The J2EE application server market is considered to be over $1billion (source Gartner), including the mainstream EJB container servers (Weblogic, WebSphere) and the more niche products which handle only specific J2EE components (servlet containers, JMS implementations, JDBC drivers, ...).

On the other hand, the Automated Software Quality (ASQ) market is considered to be $3billion dollars (source DRW), and is considered to be one of the fastest growing segments of the industry.

Given these numbers; the fact that APM solutions are needed for freeware application servers as well as commercial ones; and factoring a figure for the Java IDE market size of approximately $500million (IDC); I would guess at a current figure of $100m-$200m market size for Java APM tools, in a strongly growing sector of the I.T. market. The rumoured takeover prices of those Java tool vendors now under new ownership also seems to be consistent with this range.

Looked at a different way, large customers could quite easily spend $100,000 and more on an APM solution. Indeed our experience with customers who have serious performance issues, and customers with a number of projects with many disparate performance issues, is that they would happily spend $100,000 if that was the cost of a tool that would actually solve their performance management issues. And a $100m market is equivalent to just 1000 global customers each spending $100,000 on their APM solution.

So the potential market size is clearly much larger, but $100m-$200m seems a reasonable estimate for the current Java APM sector.

The Tools

[Note: Most tools mentioned in the following sections can be found listed on our resources page].

There are a number of APM tool segments, but the Java specific ones seems to break down to tools which target monitoring aspects of individual JVMs in detail - generically called J2SE profilers or monitoring tools; and J2EE application monitoring and management tools which try to give you and end-to-end view and control over how your J2EE application server is running.

Testing Tools

There are also many load generating and performance unit testing tools, which simulate user or client process activity. Some of these are Java specific tools like those that integrate in with JUnit or the GUI record and playback frameworks like Abbot. But most are generic tools like Apache's Jmeter, which is a fairly fully featured open-source load tester tool. Although written in Java, Apache Jmeter can test many different types of applications including webservers, application servers, web services, databases, etc. The top end of this particular market subsector is probably Mercury with it's Astraload tool, but there are over 100 load testers in this increasingly crowded subsector ( this now aged study lists 75). Some commercial load testers differentiate themselves by integrating monitoring tools into the application server and even the database layer, thus effectively turning themselves into J2EE application monitoring and management tools.

J2SE Profilers

Which brings us back to those Java specific J2SE and J2EE tools. The venerable grandfathers of all these Java tools are two profilers, JProbe and OptimizeIt, both of which were available within a year or two of Java first being released. These two tools have competed with each other over many years, each adding new features which set the standard for subsequent Java profilers. Amongst the features they introduced was to separate JVM profiling into four areas:

Over the years, JProbe (now owned by Quest) and OptimizeIt (now owned by Borland) have added features which gradually sent them upscale (and up-price), keeping them the market standard. Meanwhile other Java profilers have entered this market, competing on features and price. For example Enerjy boasts their tight IDE integration and ease of use; AppPerfect emphasize their integration to system monitoring, allowing you to co-relate system and JVM performance; while J-Sprint aims at the lowest price point. YourKit specializes in low overhead profiling; and others such as JProfiler (award winning features), Java Profiler Tool (low overhead and small, targeted at embedded and real-time Java), Javix (ease of use); and yet more, compete on their various distinctive features. Some profilers are embedded as part of the IDE, like WebSphere Studio's profiling tool. Most of these Java profilers are targeted at development only, though YourKit claims to be suitable for production monitoring and the JRockit JVM comes with a partially featured production monitoring "Runtime Analyzer" profiler.

There are, of course, a whole range of open-source Java profilers: unfortunately all seem to be in perpetual alpha. And the JVMs themselves have embedded profilers which can be used, but even with extra third-party profile analysis tools like HPjmeter, these profilers are of limited use and it can be difficult to extract the right type of information unless you know exactly what to look for. One of the frequently asked questions we get at Java PerformanceTuning.com is how to choose the right profiler for your project. We featured the answer to this question as our Question of the month back in February 2003, and the given procedure is still relevant.

J2EE APM Solutions

The big bucks, and the big features, are over in the J2EE APM solutions. These enterprise level tools are designed to handle the end-to-end performance of your J2EE application. The imaginary JFantasticAPM featured at the start of this article gives you an idea of the sort of value added performance management features these tools are aiming to bring to your enterprise. The target is not specifically Java developers, though you will need to involve the developers to resolve many types of performance problems. The target operator is the J2EE application administrator. Where the J2SE profiling tool looks at code and JVM level activity, the J2EE APM tool looks at those aspects as well but focuses on the business process and distributed component resource usage. These are most definitely production performance management tools, though all also recommend that you use their tools in development as well to gain the maximum benefit of managing your application's performance.

J2EE APM tools integrate to the application server, monitoring

Control panels for these tools are increasingly of the "dashboard" variety, showing a number of easily understandable displays which lets the operator quickly identify the performance of the system, and also to quickly identify if there are performance problems and where such problems may be occurring. All products are low overhead (under 10%, usually under 5%) and scalable monitoring solutions; they are increasingly able to install and integrate to your application automatically, and are normally fully customizable to your J2EE environment. All are designed to be able to track requests across your distributed J2EE environment.

The J2EE APM Tool Vendors

Wily The market leader, according to Gartner, is Wily 5 from Wily, a privately owned VC backed company which certainly seems to have had explosive growth. Wily's Founder & CTO, Lewis Cirne, claims that Wily 5 "is used to manage more production applications for more enterprises than any solution in the market." Boasting support for a wide range of platforms and covering all aspects of the Java platform, Wily is currently the one to beat. But this is a competitive market sector, which is great for prospective J2EE APM tool buyers. Any of the competing J2EE APM tools may have just the right feature set or integration level that is perfect for your application.
 
Veritas And the competition is driving innovation of the sort that surprises even me, although I've been in Java performance for over 8 years! For example, Veritas Indepth for J2EE has an intelligent rules-based analysis tool in their solution, called SmarTune, which provides advice on how to correct automatically identified performance problems. And in addition, Tom Mulvehill the Indepth Product Manager tells us that their latest release includes an "adaptive instrumentation" feature which allows the operator to select the acceptable overhead the tool will impose, after which Indepth re-configures itself to maximize monitoring while remaining within that overhead target.
 
Quest Brad Micklea, Product Marketing Manager for Quest's APM Suite for J2EE tells me that their customers state that Quest's solutions "provide the most comprehensive data on J2EE and the database" from the various APM solutions.
 
Borland Meanwhile Lax Sakalkale, Senior Product Manager of Borland's Optimizeit ServerTrace tells us that their solutions are "designed to make J2EE performance management much easier for developers", a claim backed by many a Java developer using the OptimizeIt profiler.
 
IBM Candle (now part of IBM) OMEGAMON's Senior Product Manager, John Knutson, tells us that they provide the "ability to view and monitor the entire application from an enterprise business view. This allows the user to integrate the J2EE monitoring solution with other monitoring components like MQ, CICS, IMS, DB2, etc, to see the complete picture from end to end"
 
Acsera Acsera, a recent entrant to this market, focuses on higher level business process performance. The aim is to give the operator a business oriented management of the performance, rather than reporting on code, components, pools and caches. Grover Righter, VP of Marketing explains the concept behind their approach: "You don't manage an automobile by monitoring the rotation of ball bearings, so you should not attempt to manage several million lines of Java code deployed on a J2EE architecture by monitoring thread pools"
 
Cyanea [NOTE Cyanea was acquired by IBM shortly after publication of this article]. Les Png, VP Worldwide Sales and Marketing for Cyanea/One tells us that Cyanea/One makes it possible for support analysts to quickly detect, identify, and resolve performance issues that would otherwise go undetected within summarized metrics. They even have the ability to "take action against an errant thread, primarily using the 'cancel request' feature which throws a runtime exception into the application and purges it from the system. This can eliminate the need for customers having to recycle the entire app server in deadlock or deadly embrace situations."
 
H&W [Note, OPNET Technologies acquired Diagnosys at end 2004 and have also acquired Altaworks together with their Panorma product]. And John Baisch, Senior Product Manager for H&W's DiagnoSys solution says "DiagnoSys is an intelligent performance management solution that automates tasks instead of making you do all the work." And he goes on to explain "DiagnoSys automatically identifies essential metrics, sets and adjusts important metric thresholds, and statistically correlates crucial data to pinpoint problems fast."
 
DevStream  [NOTE DevStream were acquired by Compuware and renamed JView into Compuware's Vantage Analyzer] DevStream with their JView 2004 feel that if you try their solution, you'll buy their solution. Consequently they claim to have the only production capable monitor which you can download and try out. Tom Cross, DevStream's CEO points out that "Our Native Agent has the lowest overhead in the market for monitoring the J2EE server, and our very simplified interface supports rapid analysis of J2EE bottlenecks."
 
Others Other J2EE APM tool vendors include Mercury Interactive, Dirig (now owned by ASG), ProactiveNet and HyPerformix. In addition non-Java APM vendors like BMC, HP, and Tivoli are adding some support for the collection of J2EE stack statistics, but these are coarse-grained component availability statistics, and are not really the comprehensive Java APM tools that the other vendors provide.

What Do You Need?

If you are doing Java development, or have a Java system in production, you need to identify if you have a performance issue. Primarily that means you should have a set of performance targets against which to judge your system. If your existing system meets those performance targets, you are fine. Though prudence suggests that if you are anywhere close to your performance target thresholds, then you should start being pro-active about potential performance problems.

If you have, or expect to have a performance problem, there are a number of things you need to do. Firstly, send some developers on our training courses, that's exactly why we have created them. We comprehensively cover all you need to know about Java performance for your Java project, using industry expert trainers. Secondly, start evaluating which Java APM tools you need for your projects. This article and the resources it references give you an excellent starting point to decide on which tools are available and which tools you need.

Page 2 of 2
previous page: Application Performance Management in action


Last Updated: 2014-10-29
Copyright © 2000-2014 Fasterj.com. All Rights Reserved.
All trademarks and registered trademarks appearing on JavaPerformanceTuning.com are the property of their respective owners.
Java is a trademark or registered trademark of Oracle Corporation in the United States and other countries. JavaPerformanceTuning.com is not connected to Oracle Corporation and is not sponsored by Oracle Corporation.
URL: http://www.JavaPerformanceTuning.com/articles/apm1b.shtml
RSS Feed: http://www.JavaPerformanceTuning.com/newsletters.rss
Trouble with this page? Please contact us