Java Native Interface (JNI) zapewnia implementacjom JVM zarówno możliwość uruchamiania natywnego kodu systemu, jak i możliwość uruchamiania kodu Java przez natywny kod (poprzez tworzenie nowych instancji maszyny JVM). Najpopularniejszymi językami docelowymi dla JNI są C i C ++, dla których przynajmniej implementacje Sun / Oracle JDK zapewniają polecenia pomocnicze (javap - do dezasemblacji kodu, javah do generowania kodu c).