# Java: System Properties

From System Properties you can find information about the operating system, the user, and the version of Java.

The property names (keys) and values are stored in a `Properties` structure. (See Properties). A `Properties` object can also be used to store your own program properties in a file.

## Getting the System Properties

Typically you get one property at a time by supplying the key in a call to `System.getProperty()`.

- `String System.getProperty(String key)`
  Returns the value of property key as a String.
- `String System.getProperty(String key, String default)`
  Returns the value of property key as a string, or default if the property did not exist.
- `Properties System.getProperties()`
  Returns a Properties object which has the value of all the properties. There are several ways to work with this object; see below for one example.

## Example

    String userDir = System.getProperty("user.dir");

## A list of system properties

Here are the properties that displayed on my system.

    awt.toolkit=sun.awt.windows.WToolkit
    file.encoding=Cp1252
    file.encoding.pkg=sun.io
    file.separator=\
    java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment
    java.awt.printerjob=sun.awt.windows.WPrinterJob
    java.class.path=.;c:\classpath\com.fredswartz.utilities.jar;c:\classpath\TableLayout.jar;c:\classpath\swixml.jar;c:\classpath\jdom.jar;c:\classpath\pmd-1.8\lib\pmd-1.8.jar;C:\classpath\pmd-1.8\lib\jaxen-core-1.0-fcs.jar;C:\classpath\com.fredswartz.guiUtils.jar;C:\classpath\com.fredswartz.fmt-0.7.jar;C:\Program Files\IBM\Cloudscape_10.0\lib\derby.jar
    java.class.version=49.0
    java.endorsed.dirs=C:\Program Files\Java\jdk1.5.0_01\jre\lib\endorsed
    java.ext.dirs=C:\Program Files\Java\jdk1.5.0_01\jre\lib\ext
    java.home=C:\Program Files\Java\jdk1.5.0_01\jre
    java.io.tmpdir=C:\DOCUME~1\Owner\LOCALS~1\Temp\
    java.library.path=C:\Program Files\Java\jdk1.5.0_01\bin;.;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;c:\Python22;C:\Program Files\PC-Doctor for Windows\services;c:\ant\bin;c:\Program Files\Java\jdk\bin;c:\Program Files\Java\jdk\jre\javaws;C:\Program Files\Sybase\Adaptive Server Anywhere 6.0\win32;c:\classpath\jcsc/bin;c:\classpath\jcsc\bin;C:\Program Files\Microsoft Visual Studio\Common\Tools\WinNT;C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin;C:\Program Files\Microsoft Visual Studio\Common\Tools;C:\Program Files\Microsoft Visual Studio\VC98\bin
    java.runtime.name=Java(TM) 2 Runtime Environment, Standard Edition
    java.runtime.version=1.5.0_01-b08
    java.specification.name=Java Platform API Specification
    java.specification.vendor=Sun Microsystems Inc.
    java.specification.version=1.5
    java.vendor=Sun Microsystems Inc.
    java.vendor.url=http://java.sun.com/
    java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport.cgi
    java.version=1.5.0_01
    java.vm.info=mixed mode, sharing
    java.vm.name=Java HotSpot(TM) Client VM
    java.vm.specification.name=Java Virtual Machine Specification
    java.vm.specification.vendor=Sun Microsystems Inc.
    java.vm.specification.version=1.0
    java.vm.vendor=Sun Microsystems Inc.
    java.vm.version=1.5.0_01-b08
    line.separator=

    os.arch=x86
    os.name=Windows XP
    os.version=5.1
    path.separator=;
    sun.arch.data.model=32
    sun.boot.class.path=C:\Program Files\Java\jdk1.5.0_01\jre\lib\rt.jar;C:\Program Files\Java\jdk1.5.0_01\jre\lib\i18n.jar;C:\Program Files\Java\jdk1.5.0_01\jre\lib\sunrsasign.jar;C:\Program Files\Java\jdk1.5.0_01\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.5.0_01\jre\lib\jce.jar;C:\Program Files\Java\jdk1.5.0_01\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.5.0_01\jre\classes
    sun.boot.library.path=C:\Program Files\Java\jdk1.5.0_01\jre\bin
    sun.cpu.endian=little
    sun.cpu.isalist=pentium_pro+mmx pentium_pro pentium+mmx pentium i486 i386 i86
    sun.desktop=windows
    sun.io.unicode.encoding=UnicodeLittle
    sun.jnu.encoding=Cp1252
    sun.management.compiler=HotSpot Client Compiler
    sun.os.patch.level=Service Pack 2
    user.country=US
    user.dir=C:\0www-workingnotes\notes-java-working\io\30properties_and_preferences\40sysprops\SysPropList
    user.home=C:\Documents and Settings\Owner
    user.language=en
    user.name=Owner
    user.timezone=
    user.variant=

## Program that produced this output

      1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
     15
     16
     17
     18
     19
     20
     21
     22
     23
     24
     25
     26
     27
     28
     29
     30
     31
     32
     33
     34
     35
     36
     37
     38
     39
    // File: io/properties/SysPropList.java
    // Description: Shows system properties.  This must be an application.
    //              An applet can't get this information.
    // Author: Fred Swartz
    // Date:   2 Feb 2005

    import java.awt.*;
    import javax.swing.*;
    import java.util.*;

    /** Generic main program. */
    public class SysPropList {
        public static void main(String[] args) {
            JFrame window = new JFrame("System Properties");
            window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            window.setContentPane(new SysPropListGUI());
            window.pack();
            window.setVisible(true);
        }
    }

    /** Panel to display the (limited) GUI intereface. */
    class SysPropListGUI extends JPanel {
        JTextArea m_propertiesTA = new JTextArea(20, 40);

        /** Constructor sets layout, adds component(s), sets values*/
        public SysPropListGUI() {
            this.setLayout(new BorderLayout());
            this.add(new JScrollPane(m_propertiesTA), BorderLayout.CENTER);

            //... Add property list data to text area.
            Properties pr = System.getProperties();
            TreeSet propKeys = new TreeSet(pr.keySet());  // TreeSet sorts keys
            for (Iterator it = propKeys.iterator(); it.hasNext(); ) {
                String key = (String)it.next();
                m_propertiesTA.append("" + key + "=" + pr.get(key) + "\n");
            }
        }
    }

## Related Pages

- Properties