Java System Properties

DOMANDA:

In Java si possono ricavare le proprietà di sistema a runtime?


RISPOSTA:

Per personalizzare a runtime i programmi, evitare di scrivere codice non multipiattaforma o semplicemente ricavare le informazioni specifiche di un calcolatore è necessario conoscere la possibilità fornita da Java di recuperare i dettagli del sistema su cui è in esecuzione il nostro programma.

Le possibilità offerte dalle Java System Properties sono quelle elencate nella seguente tabella:

System propertyDescrizione
java.versionVersione Java Runtime Environment (JRE)
java.vendorFornitore Java Runtime Environment (JRE)
java.vendor.urlURL fornitore Java
java.homeDirectory di installazione Java
java.vm.specification.versionVersione delle specifiche della Java Virtual Machine
java.vm.specification.vendorFornitore delle specifiche della Java Virtual Machine
java.vm.specification.nameNome delle specifiche della Java Virtual Machine
java.vm.versionVersione dell'implementazione della Java Virtual Machine
java.vm.vendorFornitore dell'implementazione della Java Virtual Machine
java.vm.nameNome dell'implementazione della Java Virtual Machine
java.specification.versionVersione delle specifiche del Java Runtime Environment (JRE)
java.specification.vendorFornitore delle specifiche del Java Runtime Environment (JRE)
java.specification.nameNome delle specifiche del Java Runtime Environment (JRE)
java.class.versionNumero della versione del formato delle classi Java
java.class.pathClass Path di Java
java.library.pathLista dei path dove ricerare le librerie
java.io.tmpdirPath dei file temporanei predefinito
java.compilerNome del compilatore Just In Time (JIT) da utilizzare
java.ext.dirsPath of extension directory or directories
os.nameNome del Sistema Operativo
os.archArchitettura del Sistema Operativo
os.versionVersione del Sistema Operativo
file.separatorSeparatore dei file ('/' per UNIX, '\' per Windows)
path.separatorSeparatore di path (':' on UNIX, ';' per Windows)
line.separatorSeparatore di linea (newline) ('\n' on UNIX)
user.nameNome dell'account utente
user.homeDirectory home dell'utente
user.dirDirectory corrente dell'utente


Il seguente esempio mostra, una per una, le proprietà elencate nella tabella precedente:
package systemproperties;

public class ProprietaDiSistema {
  public static void main(String[] args) {
 
    System.out.print("Versione Java Runtime Environment (JRE): ");
    System.out.println(System.getProperty("java.version"));
  
    System.out.print("Fornitore Java Runtime Environment (JRE): ");
    System.out.println(System.getProperty("java.vendor"));
  
    System.out.print("URL fornitore Java: ");
    System.out.println(System.getProperty("java.vendor.url"));
  
    System.out.print("Directory di installazione Java: ");
    System.out.println(System.getProperty("java.home"));
  
    System.out.print("Versione delle specifiche della Java Virtual Machine: ");
    System.out.println(System.getProperty("java.vm.specification.version"));
  
    System.out.print("Fornitore delle specifiche della Java Virtual Machine: ");
    System.out.println(System.getProperty("java.vm.specification.vendor"));
  
    System.out.print("Nome delle specifiche della Java Virtual Machine: ");
    System.out.println(System.getProperty("java.vm.specification.name"));
  
    System.out.print("Versione dell'implementazione della Java Virtual Machine: ");
    System.out.println(System.getProperty("java.vm.version"));
  
    System.out.print("Fornitore dell'implementazione della Java Virtual Machine: ");
    System.out.println(System.getProperty("java.vm.vendor"));
  
    System.out.print("Nome dell'implementazione della Java Virtual Machine: ");
    System.out.println(System.getProperty("java.vm.name"));
  
    System.out.print("Versione delle specifiche del Java Runtime Environment (JRE): ");
    System.out.println(System.getProperty("java.specification.version"));
  
    System.out.print("Fornitore delle specifiche del Java Runtime Environment (JRE): ");
    System.out.println(System.getProperty("java.specification.vendor"));
  
    System.out.print("Nome delle specifiche del Java Runtime Environment (JRE): ");
    System.out.println(System.getProperty("java.specification.name"));
  
    System.out.print("Numero della versione del formato delle classi Java: ");
    System.out.println(System.getProperty("java.class.version"));
 
    System.out.print("Class Path di Java: ");
    System.out.println(System.getProperty("java.class.path"));
  
    System.out.print("Lista dei path dove ricerare le librerie: ");
    System.out.println(System.getProperty("java.library.path"));
  
    System.out.print("Path dei file temporanei predefinito: ");
    System.out.println(System.getProperty("java.io.tmpdir"));
  
    System.out.print("Nome del compilatore Just In Time (JIT) da utilizzare: ");
    System.out.println(System.getProperty("java.compiler"));
  
    System.out.print("Path of extension directory or directories: ");
    System.out.println(System.getProperty("java.ext.dirs"));
  
    System.out.print("Nome del Sistema Operativo: ");
    System.out.println(System.getProperty("os.name"));
  
    System.out.print("Architettura del Sistema Operativo: ");
    System.out.println(System.getProperty("os.arch"));
  
    System.out.print("Versione del Sistema Operativo: ");
    System.out.println(System.getProperty("os.version"));
  
    System.out.print("Separatore dei file: ");
    System.out.println(System.getProperty("file.separator"));
  
    System.out.print("Separatore di path: ");
    System.out.println(System.getProperty("path.separator"));
  
    System.out.print("Separatore di linea (newline): ");
    System.out.println(System.getProperty("line.separator"));
  
    System.out.print("Nome dell'account utente: ");
    System.out.println(System.getProperty("user.name"));
  
    System.out.print("Directory home dell'utente: ");
    System.out.println(System.getProperty("user.home"));
  
    System.out.print("Directory corrente dell'utente: ");
    System.out.println(System.getProperty("user.dir"));
  }
}

E i relativi output lanciandolo sul mio sistema attuale (Windows 7 + Java 7):
Versione Java Runtime Environment (JRE): 1.7.0_07
Fornitore Java Runtime Environment (JRE): Oracle Corporation
URL fornitore Java: http://java.oracle.com/
Directory di installazione Java: C:\Program Files\Java\jre7
Versione delle specifiche della Java Virtual Machine: 1.7
Fornitore delle specifiche della Java Virtual Machine: Oracle Corporation
Nome delle specifiche della Java Virtual Machine: Java Virtual Machine Specification
Versione dell'implementazione della Java Virtual Machine: 23.3-b01
Fornitore dell'implementazione della Java Virtual Machine: Oracle Corporation
Nome dell'implementazione della Java Virtual Machine: Java HotSpot(TM) 64-Bit Server VM
Versione delle specifiche del Java Runtime Environment (JRE): 1.7
Fornitore delle specifiche del Java Runtime Environment (JRE): Oracle Corporation
Nome delle specifiche del Java Runtime Environment (JRE): Java Platform API Specification
Numero della versione del formato delle classi Java: 51.0
Class Path di Java: C:\Users\MioUser\Desktop\workspace\Blog\bin;
Lista dei path dove ricerare le librerie: C:\Program Files\Java\jre7\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Windows\system32;C:\Windows;.
Path dei file temporanei predefinito: C:\Users\MioUser\AppData\Local\Temp\
Nome del compilatore Just In Time (JIT) da utilizzare: null
Path of extension directory or directories: C:\Program Files\Java\jre7\lib\ext;C:\Windows\Sun\Java\lib\ext
Nome del Sistema Operativo: Windows 7
Architettura del Sistema Operativo: amd64
Versione del Sistema Operativo: 6.1
Separatore dei file: \
Separatore di path: ;
Separatore di linea (newline):

Nome dell'account utente: MioUser
Directory home dell'utente: C:\Users\MioUser
Directory corrente dell'utente: C:\Users\MioUser\Desktop\workspace\Blog

NOTA: il separatore di linea non viene stampato a video in chiaro (avrebbe dovuto stampare \n o \n\r) ma, ovviamente, ne vediamo gli effetti, cioè l'inserimento di una nuova riga!



Se volessimo recuperarle tutte contemporaneamente basta semplicemente:
package systemproperties;

public class ProprietaDiSistema {
  public static void main(String[] args) {
    System.out.println(System.getProperties());
  }
}
L'output sarà l'insieme di tutte le System Properties disponibili.


Commenti

Post popolari in questo blog

Arrotondamento e troncamento in Java

Eclipse: Shortcuts (scorciatoie) da tastiera

Strutture dati: List, Set, Map

Creare un eseguibile Java