Our agent has 3 modes in Java:
- Classic
- Neo
- Neo-lite
All those modes are essentially the same - they all support most of the features (Classic is the broadest that supports everything), and differentiate by the way the agent interacts with the JVM. This affects the behavior of the JVM and the overhead our agent might cause as the API of the JVM itself might be used differently in each mode.
-
Classic is the agent we developed since day one - it supports all the known features, and can be run on HotSpot (Oracle & OpenJDK) up to Java 9. The problem with it is that it requires machine code manipulation which can be very problematic to support with every minor version of the JVM.
-
Neo is the agent that was developed for IBM JVM (J9). It is currently officially supported only on AIX, and support most of the features, except for Timers and Auto-Timers.
-
Neo-lite is the port of the Neo mode to HotSpot that is enabled by default from Java 10. It has the same supported features of Neo, but lacks Entry Point duration metrics, and maybe some others features, but those aren’t intended and should be considered as bugs.
Neo-lite was ported to HotSpot specifically for Java 11 due to crashes seen while trying to support that Java version with our Classic mode of the agent. As this is the “default” mode of the agent since that Java version, it was okay to allow some compatibility changes as Neo & Neo-lite might incur more overhead on classes while they are loaded.
This was the reason why Neo-lite mode wasn’t made the default mode for the older versions of Java (6-9) as it could cause a regression to customers and it was decided to give up on that option at the time. This is the reason that a flag is required to enable Neo-lite specifically on those versions. Also take care that Neo-lite isn’t fully tested on those Java versions.
Some work has been done to improve this as making Neo-lite the default behavior on HotSpot would be the best for all customers cause it does provide many improvements over our Classic agent. It still doesn’t have any planned timeline, but it is still under active work.