Le paquetage java.lang contient la classe Runtime qui modélise l'exécution d'un programme et permet d'interagir avec l'environnement ; à chaque programme qui s'exécute correspond une instance de la classe Runtime. Nous illustrons ci-dessous quelques-unes des méthodes de cette classe.
L'objectif de l'exemple est le suivant (on suppose que l'exécution du programme se fera sous Unix) : donner à l'utilisateur deux indications concernant les ressources en mémoire : la quantité totale de mémoire disponible de la machine virtuelle Java et la quantité de mémoire disponible du système ; faire démarrer un autre programme (un sous-programme) : le programme qui s'exécute quand on envoie la commande java EssaiBoutons ; attendre que ce sous-programme se termine ; exécuter la commande ls, disponible sur la machine utilisée, qui indique sur la sortie standard la liste des fichiers du répertoire courant. La sortie du sous-programme n'est pas automatiquement dirigée sur la sortie du programme, il faut effectuer un traitement particulier. Exemple 18.12. Fichier EssaiRuntime.java
import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; class EssaiRuntime { public static void main(String[] arg) throws Exception { Runtime objetExecution = Runtime.getRuntime(); System.out.println(objetExecution.totalMemory()); Process sousProgramme; sousProgramme = objetExecution.exec("java Disque"); sousProgramme.waitFor(); System.out.println(objetExecution.freeMemory()); objetExecution.gc(); System.out.println(objetExecution.freeMemory()); sousProgramme = objetExecution.exec("ls"); InputStream i = sousProgramme.getInputStream(); BufferedReader lecteur = new BufferedReader(new InputStreamReader(i)); String ligne; while ((ligne = lecteur.readLine()) != null) System.out.println(ligne); } }Sachant que le premier fichier du répertoire courant s'appelle Assemble.java, les premières lignes qu'on obtient sur la sortie standard sont :
32178176 31842480 32031200 Assemble.java...