The second case talks about Java Instrumentation API – this link points to a Javadoc which is rather descriptive.
And here, is the full instruction and an example of how to create java instrumentation agent.
The main concept is to:
-
Implement a static
premain(as an analogy tomain) method, like this:import java.lang.instrument.Instrumentation; class Example { public static void premain(String args, Instrumentation inst) { ... } } -
Create a manifest file (say,
manifest.txt) marking this class for pre-main execution. Its contents are:Premain-Class: Example -
Compile the class and package this class into a
JARarchive:javac Example.java jar cmf manifest.txt yourAwesomeAgent.jar *.class -
Execute your JVM with
-javaagentparameter, like this:java -javaagent:yourAwesomeAgent.jar -jar yourApp.jar