A Java Agent is a small Java lib that has access to internas of the JVM like Instrumentation API.