La Machine Virtuelle Java (JVM) est un environnement d’exécution qui permet à des programmes écrits en Java (ou dans d’autres langages compilés en bytecode Java) de s’exécuter sur différents systèmes d’exploitation et architectures matérielles.
Dès ses débuts, la JVM a été pensée pour être dynamique : elle peut exécuter du code non présent à la compilation par chargement de code à chaud. Elle peut aussi appeler des librairies natives, et supporte de nombreuses fonctionnalités de monitoring.
Depuis du code Java, il est aussi possible d’appeler dynamiquement du code Java grâce à l’API de réflexion, et même de faire des accès mémoire en passant outre les mécanismes d’allocation de mémoire de Java grâce à la classe Unsafe.
Toutes ces fonctionnalités ont fait de la JVM une des plateformes de choix pour le développement d’application d’entreprise.