Friday, January 18, 2008

Aging JMX Books

It is difficult to find a "new" book exclusively covering Java Management Extensions (JMX). Here are some JMX books that are available with their release dates.

Java Management Extensions (O'Reilly, June 2002)

Java and JMX: Building Manageable Systems (Addison-Wesley, December 2002)

JMX Programming (Wiley, August 2002)

JMX in Action (Manning, October 2002)

JMX: Managing J2EE with Java Management Extensions (Sam's, January 2002)

Pro JMX: Java Management Extensions (Apress, February 2004)

In late January 2008, all of the above-listed JMX books have release dates between 2002 and 2004. It is somewhat surprising to me that there have not been any newer books released (or at least newer editions of these books) because several advancements have been made in the JMX world since the last one of these was released.

Here are some reasons why we may have not seen a newer edition of a JMX book:

1. Publishers may feel the changes have been minor enough not to warrant a new book. After all, the information in the current books is not incorrect and these books still provide the basics and gist of using JMX. However, this might change when JMX 2.0 is released. Also, these books did have the JMX Reference Implementation (JMX RI) to talk about and many of the classes and interfaces in JMX RI were migrated with only relatively minor changes to the J2SE 5 and Java SE 6 platform support of JMX.

2. Publishers may feel that articles and blogs have covered the improvements and enhancements to JMX well enough to not warrant a new edition of their books.

3. Publishers may feel that most JMX developers have their needs covered with the current books and that the advances in JMX tools render new editions of these books unnecessary.

4. Publishers may feel (perhaps even from experience with the current editions) that JMX books do not sell particularly well and that the cost to publish a newer edition is unlikely to be covered in additional revenues.

UPDATE (04 February 2008): I stumbled across the blog of the author of the book Java Management Expressions (O'Reilly, 2002) cited above and noted that this fourth reason seems to be accurate, at least in one case. In his blog entry JMX Back from the Dead, Perry states that O'Reilly is not interested in a second edition of the book because of "poor" sales of the first edition. I really like this particular JMX book and my biggest complaint about it is that it pre-dated JMX Remote API (JSR-160) and so does not address remote access much outside of page 20 of the book. I hope that Perry is able to provide information on his blog about JMX Remote API in the future because I like his style of covering JMX.

So, what are some JMX enhancements that are not covered in these books or receive only very little coverage in these books? I don't own copies of all of these, but based on their release dates, I believe that most of the following items are either not covered at all or are not covered very thoroughly in these first edition JMX books.

1. J2SE 5 (1.5) incorporates "platform MBean server," delivered out-of-the-box with Java 1.5. As part of this, the JVM itself is instrumented, allowing for significantly greater access to the JVM for performance tuning and other needs. JConsole is included as an experimental example client-side JMX tool. These and several other J2SE 5 JMX-related improvements changed JMX from being a largely Java EE technology (though certainly not limited to Java EE) to being being an all-inclusive Java management technology more generally accessible and useful to Java SE developers.

2. Java SE 6 further improves built-in JVM support for JMX with Attach API, JConsole Plug-in, MXBean, generification of JMX API, and other useful JMX enhancements. JConsole enjoys some improvements and becomes a full-fledged tool. Java SE 6 includes enhancements such as SwingWorker and the Service Provider Interface (SPI) that facilitate with these JMX improvements.

3. Spring Framework provides significant JMX support, including metadata annotations that allow for easy setting of metadata to be displayed in JConsole and other JMX tools.

It would be nice to have a single JMX book covering these new developments in JMX, but fortunately there are many good online resources that cover these new developments.

JMX 2.0 (JSR 225) is anticipated to be released as part of Java SE 7. It will likely include Spring-inspired annotations support for metadata on standard MBeans. I hope that we'll see new JMX books released at that time that bring coverage of all these developments in the JMX world to a single source.

No comments: