YOUR FEEDBACK
johnpetersen wrote: Great post. You hit some good points, and hopefully me sending this post. It wil...


2008 East
DIAMOND SPONSOR:
Data Direct
Frontiers in Data Access: The Coming Wave in Data Services
PLATINUM SPONSORS:
Red Hat
The Opening of Virtualization
Intel
Virtualization – Path to Predictive Enterprise
Green Hills
IT Security in a Hostile World
JBoss / freedom oss
Practical SOA Approach
GOLD SPONSORS:
Software AG
The Art & Science of SOA: How Governance Enables Adoption
PlateSpin
Effective Planning for Virtual Infrastructure Growth
Fujitsu
Automated Business Process Discovery & Virtualization Service
Ceedo
Workspace Virtualization
Click For 2007 West
Event Webcasts

2008 East
PLATINUM SPONSORS:
Appcelerator
Think Fast: Accelerate AJAX Development with Appcelerator
GOLD SPONSORS:
DreamFace Interactive
The Ultimate Framework for Creating Personalized Web 2.0 Mashups
ICEsoft
AJAX and Social Computing for the Enterprise
Kaazing
Enterprise Comet: Real–Time, Real–Time, or Real–Time Web 2.0?
Nexaweb
Now Playing: Desktop Apps in the Browser!
Sun
jMaki as an AJAX Mashup Framework
POWER PANELS:
The Business Value
of RIAs
What Lies Beyond AJAX?
KEYNOTES:
Douglas Crockford
Can We Fix the Web?
Anthony Franco
2008: The Year of the RIA
Click For 2007 Event Webcasts
SYS-CON.TV
TOP THREE LINKS YOU MUST CLICK ON


WebLogic JRockit 8.1 by BEA Systems
WebLogic JRockit 8.1 by BEA Systems

The JRockit engineers made two assumptions when they first designed JRockit. First, server VMs run for a long time and, second, memory is cheap and plentiful. This motto still rings true in BEA's offering of the 8.1 (J2SE 1.4.1_03) version of this product. And, unlike the more familiar JVMs, this VM comes with a face.

Acquiring and Installing JRockit
JRockit runs on the MS Windows and Red Hat Linux platforms and is available in a 25MB download. The install was as uneventful as all installs should be. As expected, the directory structure followed the standard JDK/JRE structure. There were some differences in the content, but all of the standard tools were present. What is missing are the familiar Javadoc and Java source JAR. Not having the Javadoc was not an issue as it's the same one that's provided by the JDK and the quantity of online documentation is overwhelming. In addition to ample information on how to tune the JVM, it included a guide that described how to extract the JRE from the distribution.

Using JRockit
The two tools that I use on a regular basis are IntelliJ IDEA and Ant. Configuring IntelliJ to use JRockit required only a few mouse clicks. The following code shows how to set the JVM attribute so that Ant will use JRockit. Unfortunately, the Javac task has no such attribute and JRockit is not in the list of available compilers. The easiest way around this limitation is to use the exec task to invoke the compiler.

<target name="listener">
<java classname="com.jpt.benchmarks.jrockit.EchoServer"
jvm="${JRockit.home}/bin/java" fork="yes">
<classpath>
<pathelement location="classes"/>
</classpath>
</java>
</target>

JRockit supports all the standard VM options and a number of the more "standard" nonstandard -X options (such as heap size and heap max size).

JRockit Features
The reason for using this VM is its feature set. Curiously enough, one of the most interesting features is that the VM lacks an interpreter. As a result, the VM must JIT every method that it encounters. This does result in longer start-up times and the VM will consume more memory. The upside is that once started, your server will run at speeds that are comparable to a natively compiled executable. HotSpot will still aggressively compile the welltrafficked portion of your application.

Other features of the VM include four garbage collectors, thread local object allocation, thin threads, and a rich set of verbose printing options. The garbage collectors include a generational stop and copy single-spaced concurrent, generational concurrent, parallel, and single-spaced stop the world. It's the latter two GC algorithms that are recommended for production systems. Included in the documentation is a very useful discussion on how to choose between them.

By default, each thread is allocated its own private space in the heap, and objects are in this space. While this feature will result in your application consuming more memory, it eliminates the need to synchronize on a global heap. If memory does become an issue, you can configure the VM to allocate on the global heap.

The verbose printing of information includes memory system, garbage collection, class loading, code generation, CPU, and code optimizations. Normally, I would spend some time on the usefulness of this type of information, but that discussion is cut short in favor of the unique set of management and monitoring capabilities that are included with this VM.

Managing and Monitoring the JRockit JVM
The current set of management and monitoring APIs in the JRockit JVM are proprietary. Having said this, they are actively involved with the JSR-174 expert group, busily defining a set of specifications for APIs to manage and monitor a JVM. You have to believe that JRockit's still maturing management console is a demonstration of the future of VM technology.

As is the case with the JPDA, the JVM must be started with the monitoring turned on. As can be seen in Table 1, the associated overhead is barely noticeable until the console manager is attached. Once attached, the console did consume more cycles than was expected in this test, though in others, the resource consumption was much lower.

The good news is, with this VM we can afford to turn on monitoring in production and attach a console when the need arises. The console displays current readings on CPU, memory, heap, and garbage collection. Figure 1 is a complete summary of heap, memory utilization, and GC statistics. The main panel includes a CPU utilization gauge.


Figure 1

In addition to these statistics, the console supports the notification framework, which listens on aspects and triggers rules whenever the specified set of conditions is met. A rule consists of a trigger and an action. The trigger defines the conditions that must be met before the action will be executed. The action is simply what needs to be done when the trigger fires. The notification framework offers a nice point of extensibility. Developers are free to define their own triggers and actions.

Attaching a JRockit Runtime Analyzer recorder to the VM allows you to collect runtime information that can be analyzed at a later time. In addition to heap and GC statistics, the recorder captures method optimizations and the execution profile. An example of the detailed GC statistics can be seen in Figure 2.


Figure 2

While the ability to monitor was limited to a few statistics, there was a good level of detail on heap and memory utilization. One capability that I've used in other tools that was missing from this analysis tool was the ability to overlay and manipulate graphs. This feature is very useful when you're attempting to correlate events. As basic as the presentation was, it did offer a lot of data that is otherwise very difficult (if not impossible) to obtain.

Conclusion
With all the emphasis on performance, it's not surprising that this VM consistently obtains the best results in the SPECjjb2000 benchmarks. It is this drive for performance that has motivated the JRockit engineers to build tools to monitor and manage the VM. And now, these tools are providing us all with insight into the future of how VMs will be monitored and managed. Though the current console is more about monitoring than managing, the future will include such capabilities as being able to alter the choice of GC to altering the size of the nursery.

In creating a server-centric VM, the engineers at JRockit have purposely traded memory for performance, which is a wise choice in this reviewer's humble opinion.

Snapshot
Target Audience:
Developers, system administrators, project managers

Level: Intermediate

Pros:

  • Certified J2SE 1.4 compatible
  • High-performance, server-oriented VM
  • Integrated monitoring system
  • Well-documented feature set
  • Highly configurable

    Cons:

  • Consumes more memory than a traditional VM
  • Slower startup

    BEA Systems, Inc.
    2315 North First Street
    San Jose, CA 95131
    Phone: 800.817.4232
    Web: www.bea.com

    Specifications
    Platforms:
    Window NT/2000/XP, Red Hat Linux

    Test Platform
    Compaq Armada M700, 850 MHz Intel Pentium III processor, 20GB disk, 576 MB RAM, Windows 2000 service pack 3

    References

  • http://e-docs.bea.com/wljrockit/docs81/
  • www.bea.com/framework.jsp? CNT=index.htm&FP=/content/products/jrockit/
  • www.spec.org/jbb2000/results/res2003q3/
  • About Kirk Pepperdine
    Kirk Pepperdine has more than 10 years of experience in OO technologies. In edition to his work in the area of performance tuning, Kirk has focused on building middleware for distributed applications.

    LATEST JAVA STORIES & POSTS
    JavaScript is pretty much everywhere you look these days, reaching far beyond your desktop browser. Adobe AIR lets you use JavaScript to create desktop installed HTML and AJAX apps. Apple uses it in its gadgets and in the iPhone's browser. And Nokia recently announced support for...
    The Java Community Process (JCP) Program Management Office has announced the final results of the 2008 JCP Executive Committees (EC) elections. After two ballot rounds – for ratified and elected seats – the winners are Ericsson, SpringSource, SAP, Intel, and Werner Keil for t...
    If you think your network is safe from the new strains of content security threats, think again. Today’s cybercriminals use sophisticated attacks that multiply quickly and thwart traditional defenses, rendering conventional security ineffective and unmanageable. To protect your...
    Tidal Software has announced Intersperse 8.0, a product that monitors J2EE and .NET applications and their transaction component performance to produce meaningful metrics for managing applications and high-level business processes. The product leverages a combination of lightwei...
    Emulex has announced that it will offer Fibre Channel Host Bus Adapters (HBA) and Fibre Channel over Ethernet (FCoE) Converged Network Adapters (CNAs) for use with OpenSolaris’ Common Multiprotocol SCSI Target (COMSTAR), thereby providing end-to-end Fibre Channel and FCoE suppo...
    ILOG has announced ILOG JViews 8.5, the latest version of ILOG’s Java-based visualization suite, with new features that enhance the creation of Rich Internet Applications as well as desktop applications. ILOG JViews 8.5 adds support for the Eclipse platform including the new IL...
    SUBSCRIBE TO THE WORLD'S MOST POWERFUL NEWSLETTERS
    SUBSCRIBE TO OUR RSS FEEDS & GET YOUR SYS-CON NEWS LIVE!
    Click to Add our RSS Feeds to the Service of Your Choice:
    Google Reader or Homepage Add to My Yahoo! Subscribe with Bloglines Subscribe in NewsGator Online
    myFeedster Add to My AOL Subscribe in Rojo Add 'Hugg' to Newsburst from CNET News.com Kinja Digest View Additional SYS-CON Feeds
    Publish Your Article! Please send it to editorial(at)sys-con.com!

    Advertise on this site! Contact advertising(at)sys-con.com! 201 802-3021


    SYS-CON FEATURED WHITEPAPERS

    SPONSORED BY INFRAGISTICS
    In every field of design one of the first things students do is learn from the work of others. They ...
    There are many forces that influence technological evolution. After a decade of building enterprise ...
    2008 is going to be an important year for Rich Internet Applications. Most organizations are deliver...
    The OpenAjax Alliance is developing an Ajax industry wishlist for future browsers, using a dedicated...
    Infragistics announced the availability of two Community Technology Preview (CTP) User Interface (UI...
    The YUI development team has released version 2.5.2; you can download the new release from SourceFor...
    ADS BY GOOGLE