The JVMTI is a native interface of the JVM. A library, written in C or C++, is loaded during the initialisation of the JVM. The library has access to the JVM state by calling JVMTI and JNI (Java Native Interface) functions and can register to receive JVMTI events using event handler functions that are called by the JVM when such an event occurs.
JVMTI was defined through the Java Community Process by JSR-163. The JVMTI replaces the JVMPI (Java Virtual Machine Profiling Interface) and the JVMDI (Java Virtual Machine Debug Interface). The JVMPI and the JVMDI are declared as being deprecated in J2SE 5.0 and were removed in Java SE6.
JVMTI is the lowest level of the Java Platform Debugger Architecture.