Java Native Interface (JNI) offre sia la capacità per le implementazioni JVM di eseguire codice nativo del sistema sia la capacità del codice nativo di eseguire codice Java (creando nuove istanze JVM). I linguaggi di destinazione più comuni per JNI sono C e C ++, per i quali almeno le implementazioni JDK Sun / Oracle forniscono comandi di supporto (javap - per il disassemblaggio del codice, javah per la generazione del codice c).