Les programmes Java ne peuvent lire les variables d'environnement de la même manière que le peuvent les programmes natifs. La raison est que les variables d'environnement sont dépendantes de la plateforme. Cependant, des mécanismes similaires existent afin de permettre aux applications de lire la valeur d'une ressource nommée.

Ces valeurs de ressources permettent une personnalisation du comportement d'une application basée sur des paramètres de sites spécifiques, tel que le type de l'hôte ou basée sur des préférences utilisateurs.

Les valeurs de ressource désignées sont spécifiées pour les applications dans la liste des propriétés système. Les applications peuvent lire les propriétés systèmes avec la méthode System.getProperty() ou peut lire la liste entière avec la méthode System.getProperties().

  • La méthode System.getProperty(String propriété) retourne la valeur, de la propriété passée en argument, sous la forme d'une chaîne de caractères.
    //retourne l'encodage de caractères 
    //de la machine (ex.: Cp1252 ou 8859_2).
    String encodage = System.getProperty("file.encoding");
  • La méthode System.getProperties() retourne une liste des propriétés systèmes sous la forme d'un objet de type référence Properties.
    //Retourne une liste des propriétés systèmes
    Properties proprietes = System.getProperties();
    Enumeration nomProprietes = proprietes.propertyNames();
    Object nom = nomProprietes.nextElement();
    String valeur = proprietes.getProperty((String)nom);
Les propriétés systèmes standards

Lorsque l'interpréteur Java démarre, il insère un nombre de propriétés standards à l'intérieur de la liste des propriétés systèmes. Ces propriétés et la signfication de leurs valeurs sont présentées dans le tableau ci-dessous.

Nom Valeur Accès Applet
java.version représente la version de l'interpréteur Java. oui
java.vendor représente l'identificateur spécifique au vendeur. oui
java.vendor.url représente l'adresse URL du vendeur. oui
java.class.version représente la version de l'API Java. oui
java.class.path représente la valeur du répertoire de classe classpath. non
java.home représente le chemin vers le répertoire d'installation de Java. non
java.compiler représente le compilateur JIT (Just In Time) utilisable. non
os.name représente le nom du système d'exploitation. oui
os.arch représente l'architecture matériel de la machine hôte. oui
os.version représente la version du système d'exploitation de la machine hôte. oui
file.separator représente le terminateur de fichier à l'image de / ou \. oui
path.separator représente le séparateur de chemin dépendant de la plateforme sous-jacente tel que : ou ;. oui
line.separator représente le terminateur de ligne tel que \n ou \r\n. oui
user.name représente le nom de l'utilisateur courant. non
user.home représente le répertoire racine de l'utilisateur courant. non
user.dir représente le répertoire de travail courant. non
user.language représente le code du langage par défaut sous la forme d'une chaîne de caractères de deux lettres. non
user.region représente le code de région par défaut sous la forme d'une chaîne de caractères de deux lettres. non
user.timezone représente la zone horaire par défaut. non
file.encoding représente l'encodage de caractères par défaut. non
file.encoding.pkg représente le paquetage qui contient les convertisseurs entre les encodage locaux et l'Unicode. non
import java.util.*;
public class Proprietes {
    public static void main(String[] args) {
        Properties proprietes = System.getProperties();
        Enumeration noms = proprietes.propertyNames();
        Vector tabObj = new Vector();
        Object nom;
        while((nom = getElements(noms)) != null){
            tabObj.add(nom);
        }
        for(int i = 0; i < tabObj.size(); i++){
            System.out.println (tabObj.elementAt(i)
            + "\t\t\t:\t" + proprietes.getProperty((String)tabObj.elementAt(i)));
        }
    }
    public static Object getElements(Enumeration enum){
        try{
            return enum.nextElement();
        }
        catch(NoSuchElementException e){
            return null;
        }
    }
}
Résultats sur une machine Windows 2000
java.runtime.name
Java(TM) 2 Runtime Environment, Standard Edition
sun.boot.library.path
C:\JavaTools\j2sdk1.4.0\jre\bin
java.vm.version
1.4.0-b92
java.vm.vendor
Sun Microsystems Inc.
java.vendor.url
http://java.sun.com/
path.separator
;
java.vm.name
Java HotSpot(TM) Client VM
file.encoding.pkg
sun.io
user.country
FR
sun.os.patch.level
Service Pack 2
java.vm.specification.name
Java Virtual Machine Specification
user.dir
D:\Usr\Exercices\Database\colHashtable\classes
java.runtime.version
1.4.0-b92
java.awt.graphicsenv
sun.awt.Win32GraphicsEnvironment
java.endorsed.dirs
C:\JavaTools\j2sdk1.4.0\jre\lib\endorsed
os.arch
x86
java.io.tmpdir
C:\DOCUME~1\dupont\LOCALS~1\Temp\
line.separator
java.vm.specification.vendor
Sun Microsystems Inc.
user.variant
os.name
Windows 2000
sun.java2d.fontpath
java.library.path
C:\JavaTools\j2sdk1.4.0\bin;.;C:\WINNT\System32;C:\WINNT;C :\PROGRA~1\RATIONAL\RATION~1\NUTCROOT\bin;C:\PROGRA~1\RATIONAL\RATION~1\NUTCROOT \bin\x11;C:\PROGRA~1\RATIONAL\RATION~1\NUTCROOT\mksnt;C:\JAVATO~1\RATIONAL\RATIO N~1\NUTCROOT\mksnt;C:\WINNT\system32;C:\WINNT;C:\WINNT\System32\Wbem;C:\Program Files\Microsoft SQL Server\80\Tools\BINN;C:\Program Files\Rational\common;C:\Pro gram Files\Rational\ClearQuest;C:\Program Files\Rational\Rose\TopLink\;C:\Progra m Files\Rational\Rational Test;c:\javatools\j2sdk1.4.0\bin\;C:\javatools\jwsdp-1 .2\jwsdp-shared\bin
java.specification.name
Java Platform API Specification
java.class.version
48.0
java.util.prefs.PreferencesFactory
java.util.prefs.WindowsPreferencesFactory
os.version
5.0
user.home
C:\Documents and Settings\dupont
user.timezone
java.awt.printerjob
sun.awt.windows.WPrinterJob
file.encoding
Cp1252
java.specification.version
1.4
user.name
dupont
java.class.path
D:\Usr\Exercices\Database\colHashtable\classes\;C:\JavaTools \j2sdk1.4.0\jre\lib\rt.jar;C:\JavaTools\j2sdk1.4.0\lib\dt.jar;C:\JavaTools\j2sdk 1.4.0\lib\tools.jar;C:\JavaTools\j2sdk1.4.0\jre\lib\ext\dnsns.jar;C:\JavaTools\j 2sdk1.4.0\jre\lib\ext\ldapsec.jar;C:\JavaTools\j2sdk1.4.0\jre\lib\ext\localedata .jar;C:\JavaTools\j2sdk1.4.0\jre\lib\ext\sunjce_provider.jar;D:\Usr\Commun\class es
java.vm.specification.version
1.0
sun.arch.data.model
32
java.home
C:\JavaTools\j2sdk1.4.0\jre
java.specification.vendor
Sun Microsystems Inc.
user.language
fr
awt.toolkit
sun.awt.windows.WToolkit
java.vm.info
mixed mode
java.version
1.4.0
java.ext.dirs
C:\JavaTools\j2sdk1.4.0\jre\lib\ext
sun.boot.class.path
C:\JavaTools\j2sdk1.4.0\jre\lib\rt.jar;C:\JavaTools\j2sd k1.4.0\jre\lib\i18n.jar;C:\JavaTools\j2sdk1.4.0\jre\lib\sunrsasign.jar;C:\JavaTo ols\j2sdk1.4.0\jre\lib\jsse.jar;C:\JavaTools\j2sdk1.4.0\jre\lib\jce.jar;C:\JavaT ools\j2sdk1.4.0\jre\lib\charsets.jar;C:\JavaTools\j2sdk1.4.0\jre\classes
java.vendor
Sun Microsystems Inc.
file.separator
\
java.vendor.url.bug
http://java.sun.com/cgi-bin/bugreport.cgi
sun.cpu.endian
little
sun.io.unicode.encoding
UnicodeLittle
sun.cpu.isalist
pentium i486 i386
Télécharger l'ensemble des exemples