public static Properties getProperties();
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 |
Cette méthode n'accepte aucun paramètre.
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.
Type de l'exception | Description |
---|---|
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. |
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 ); } } } |
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 :