Participer au site avec un Tip
Rechercher
 

Améliorations / Corrections

Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.

Emplacement :

Description des améliorations :

Module : java.base - Package : java.lang - Classe : System
Version documentée : Java SE 17

Méthode « System.getProperties »

Signature

public static Properties getProperties();

Description

Renvoie l'ensemble de toutes les « propriétés d'environnement Java » connues par la JVM.

Normalement un système d'exploitation défini des variables d'environnement : par exemple la variable d'environnement PATH que bon nombre d'entre vous doivent connaître. Le problème de ces variables d'environnement, c'est que leurs noms et leurs contenus sont dépendants du système d'exploitation considéré. Pour garantir la portabilité, entre différents systèmes d'exploitations, il est donc fortement recommandé de ne surtout pas les utiliser.

En lieu et place de ces variables d'environnement, Java SE propose la notion de « propriété d'environnement Java ». Il s'agit sensiblement de la même chose (les propriétés d'environnement Java sont, en partie, produites à partir des variables d'environnement), à la différence qu'elles sont spécifiées par la spécification Java SE et qu'elles sont donc existantes quelle que soit la JVM considérée.

Il est possible, au démarrage d'une JVM, de spécifier des propriétés d'environnement complémentaires. Pour ce faire, il faut ajouter une ou plusieurs options -DpropName=propValue. Par exemple, vous pouvez démarrer une JVM avec deux propriétés d'environnement Java supplémentaires (demo1 et demo2) comme le montre la ligne de commande suivante :

java -Ddemo1=value1 -Ddemo2=value2 MainClass

Voici la liste des principales propriétés d'environnement proposées par la JVM OpenJDK ainsi qu'une description de chaque entrée et de quelques exemples de valeurs pour certaines de ces propriétés. L'ensemble des propriétés d'environnement Java retenu dans cet exemple sera toujours existant, quelques soit la JVM (Java Virtual Machine) considérée.

Nom de la propriété Description Exemple de valeur
file.separator Caractère de séparation des fichiers ("/" sur Unix/Linux et "\\" sur Windows") /
java.class.version Version du format de fichier .class 52.0
java.class.path Chemin d'accès aux fichiers .class de la JVM (équivalent à la variable d'environnement $CLASSPATH) .
java.ext.dirs Chemin complémentaires d'accès aux classes de la JVM /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.31-3.b13.fc21.x86_64/jre/lib/ext:/usr/java/packages/lib/ext
java.home Java installation directory /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.31-3.b13.fc21.x86_64/jre
java.io.tmpdir Chemin du répertoire pour les fichiers temporaires /tmp
java.library.path Chemin d'accès aux librairies natives (.dll ou .so) /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
java.runtime.name Nom de l'environnement d'exécution OpenJDK Runtime Environment
java.specification.name Nom de la spécificatin de ce JRE (Java Runtime Environment) Java Platform API Specification
java.specification.vendor Société éditrice des spécifications de ce JRE
java.specification.version Version des spécifications de ce JRE 1.8
java.vendor Nom de la société éditrice du JRE (Java Runtime Environment) considéré
java.vendor.url URL du site Internet de la société éditrice du JRE considéré
java.version Version du JRE (Java Runtime Environment) 1.8.0_31
java.vm.specification.name Nom des spécifications de la JVM Java Virtual Machine Specification
java.vm.specification.vendor Société éditrice des spécifications de la JVM
java.vm.specification.version Version de la spécification de la JVM 1.8
java.vm.name Nom de la JVM considérée OpenJDK 64-Bit Server VM
java.vm.vendor Vendeur de la JVM considéré
java.vm.version Version de l'implémentation de la JVM 25.31-b07
line.separator Spécifie le(s) caractère(s) de retour à la ligne ("\n" pour UNIX, "\r\n" pour Windows)
os.arch Architecture du système d'exploitation utilisé amd64
os.name Nom du système d'exploitation hôte Linux
os.version Version du système d'exploitation hôte 3.18.3-201.fc21.x86_64
path.separator Séparateur de chemin (":" pour UNIX et ";" pour Windows) :
user.dir Répertoire de travail courant de l'utilisateur /home/username/folder
user.name Nom de l'utilisateur exécutant la JVM username
user.home Home directory de l'utilisateur /home/username

Paramètres

Cette méthode n'accepte aucun paramètre.

Valeur de retour

La valeur de retour est de type Properties. L'ensemble des propriétés vous sera retourné dans un objet de la classe java.util.Properties. Techniquement, cette classe dérive de la classe java.util.Hashtable mais à été réadaptée pour tenir compte du fait que les clés et les valeurs de la collection seront forcément des chaînes de caractères.

Exception

Type de l'exceptionDescription
SecurityException
Cette exception peut être déclenchée si un SecurityManager est définit et qu'il ne permet pas l'accès aux propriétés d'environnement du système d'exploitation.

Exemple de code

Voici un petit exemple de code affichant toutes les propriétés d'environnement connues de la JVM. Tentez de lancer ce programme avec ou sans options -D qui ajouteraient d'autres propriétés d'environnement.

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
 21 
 22 
import java.io.File;
import java.io.IOException;
import java.text.DateFormat;
import java.util.Date;
import java.util.Properties;

public class PropertiesSample {    
    
    public static void main(String[] args) {

        // On récupère toutes les propriétés d'environnement
        Properties properties = System.getProperties();
        
        // Pour chacune d'entre elle, et on affiche son nom et sa valeur 
        for( Object key : properties.keySet() ) {
            String value = System.getProperty( (String) key );
            System.out.printf( "%-30s == %s\n", key, value );
        }
    
    }
    
}
Exemple de récupération des propriétés d'environnement exposées par la JVM

Disponible depuis

1.0

Voir aussi

java.lang.SecurityException
java.lang.SecurityManager.checkPropertiesAccess()
java.lang.System.getenv()
java.lang.System.getenv( java.lang.String )
java.lang.System.getProperty( java.lang.String )
java.lang.System.setProperties( java.util.Properties )
java.util.Properties