L'interface Java Native (JNI) donne à la fois la possibilité aux implémentations JVM d'exécuter le code natif du système et la possibilité pour le code natif d'exécuter du code Java (en créant de nouvelles instances JVM). Les langages cibles les plus courants pour JNI sont C et C ++, pour lesquels au moins les implémentations Sun / Oracle JDK fournissent des commandes d'assistance (javap - pour le désassemblage de code, javah pour la génération de code c).