Welcome!

AppDynamics the World Leader in APM and DevOps

AppDynamics Blog

Subscribe to AppDynamics Blog: eMailAlertsEmail Alerts
Get AppDynamics Blog via: homepageHomepage mobileMobile rssRSS facebookFacebook twitterTwitter linkedinLinkedIn


Blog Feed Post

The AppD Approach: Java 9 Support

We are excited to announce full support for Java 9 as part of our Winter ‘17 product release. Java 9 introduces some interesting features such as incubator support for HTTP/2 and making the G1 Garbage Collector (GC) the default GC for the Java virtual machine (JVM). But the most fundamental change that impacted all Java performance monitors and profilers is its modularization support.

Specifically, Java 9 includes a feature called “Jigsaw” which provides support for the Java module system. The implementation of modules within the JVM presents unique challenges to our Java monitoring agent, as it further restricts access to packages, classes, and interfaces that we leveraged in earlier Java releases.

Good references to Java 9 modularization can be found here and here.

Here are the challenges posed by the Java modularization feature, and the stringent requirements we met to remain leaders in this space:

– The same binaries (jar files) should be used for Java 9 and older releases of Java. Users should not have to switch agent binaries or modify command line arguments when moving from one Java release to another.

– The user should not have to provide additional command line arguments for Java 9. A single command line argument, “-javaagent” is all that is required to introduce the Java agent into a JVM.

– Preserve support for dynamic attach by our agent into a running JVM.

– The implementation should be consistent with the ‘spirit’ of Java modularization. The monitoring agent should be defined as a named Java module.

– Access to restricted Java modules should be acquired dynamically, and should be limited to the monitoring agent module only. We should not create integrity or security exposures in the JVM by opening up access too broadly.

– Exploit modularization by allowing users to select Java methods for instrumentation based not only upon class and method name, but on module name as well.

During the initial design and implementation of modularization support within the monitoring agent, we were working with early drivers of Jigsaw, which, as it turned out, had a more restrictive set of features than those that eventually appeared in the GA release of Java 9. In the event that the more restrictive controls are put back in future releases of Java, the AppDynamics Java monitor should be ready.

Java Application Performance Monitoring was the first monitoring solution offered by AppDynamics, and is still one of its flagship products. We are committed to keeping pace with both our customers’ innovations and those in the Java ecosystem. With the implementation of our Java 9 support, we have again demonstrated that commitment. Our product not only provides tolerance and support for Java 9, but it also goes a long way towards exploiting the new capabilities that Java 9 offers.

Ryan TerBush is a co-author of this blog post. Ryan is a senior software engineer that has been with AppDynamics 2.5 years. He has an MEng degree in EE/CS from MIT. When he’s not fixing things at work, he’s most likely swimming or gaming.

The post The AppD Approach: Java 9 Support appeared first on Application Performance Monitoring Blog | AppDynamics.

Read the original blog entry...

More Stories By AppDynamics Blog

In high-production environments where release cycles are measured in hours or minutes — not days or weeks — there's little room for mistakes and no room for confusion. Everyone has to understand what's happening, in real time, and have the means to do whatever is necessary to keep applications up and running optimally.

DevOps is a high-stakes world, but done well, it delivers the agility and performance to significantly impact business competitiveness.