287a933d5d58d4b0607fcc4361e438c85237818d
[cacao.git] / src / lib / vm / reference / gnu / classpath / VMSystemProperties.java
1 /* VMSystemProperties.java -- Allow the VM to set System properties.
2    Copyright (C) 2004 Free Software Foundation
3
4 This file is part of GNU Classpath.
5
6 GNU Classpath is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2, or (at your option)
9 any later version.
10
11 GNU Classpath is distributed in the hope that it will be useful, but
12 WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with GNU Classpath; see the file COPYING.  If not, write to the
18 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19 02110-1301 USA.
20
21 Linking this library statically or dynamically with other modules is
22 making a combined work based on this library.  Thus, the terms and
23 conditions of the GNU General Public License cover the whole
24 combination.
25
26 As a special exception, the copyright holders of this library give you
27 permission to link this library with independent modules to produce an
28 executable, regardless of the license terms of these independent
29 modules, and to copy and distribute the resulting executable under
30 terms of your choice, provided that you also meet, for each linked
31 independent module, the terms and conditions of the license of that
32 module.  An independent module is a module which is not derived from
33 or based on this library.  If you modify this library, you may extend
34 this exception to your version of the library, but you are not
35 obligated to do so.  If you do not wish to do so, delete this
36 exception statement from your version. */
37
38 package gnu.classpath;
39
40 import java.util.Properties;
41
42 class VMSystemProperties
43 {
44     /**
45      * Get the system properties. This is done here, instead of in System,
46      * because of the bootstrap sequence. Note that the native code should
47      * not try to use the Java I/O classes yet, as they rely on the properties
48      * already existing. The only safe method to use to insert these default
49      * system properties is {@link Properties#setProperty(String, String)}.
50      *
51      * <p>These properties MUST include:
52      * <dl>
53      * <dt>java.version         <dd>Java version number
54      * <dt>java.vendor          <dd>Java vendor specific string
55      * <dt>java.vendor.url      <dd>Java vendor URL
56      * <dt>java.home            <dd>Java installation directory
57      * <dt>java.vm.specification.version <dd>VM Spec version
58      * <dt>java.vm.specification.vendor  <dd>VM Spec vendor
59      * <dt>java.vm.specification.name    <dd>VM Spec name
60      * <dt>java.vm.version      <dd>VM implementation version
61      * <dt>java.vm.vendor       <dd>VM implementation vendor
62      * <dt>java.vm.name         <dd>VM implementation name
63      * <dt>java.specification.version    <dd>Java Runtime Environment version
64      * <dt>java.specification.vendor     <dd>Java Runtime Environment vendor
65      * <dt>java.specification.name       <dd>Java Runtime Environment name
66      * <dt>java.class.version   <dd>Java class version number
67      * <dt>java.class.path      <dd>Java classpath
68      * <dt>java.library.path    <dd>Path for finding Java libraries
69      * <dt>java.io.tmpdir       <dd>Default temp file path
70      * <dt>java.compiler        <dd>Name of JIT to use
71      * <dt>java.ext.dirs        <dd>Java extension path
72      * <dt>os.name              <dd>Operating System Name
73      * <dt>os.arch              <dd>Operating System Architecture
74      * <dt>os.version           <dd>Operating System Version
75      * <dt>file.separator       <dd>File separator ("/" on Unix)
76      * <dt>path.separator       <dd>Path separator (":" on Unix)
77      * <dt>line.separator       <dd>Line separator ("\n" on Unix)
78      * <dt>user.name            <dd>User account name
79      * <dt>user.home            <dd>User home directory
80      * <dt>user.dir             <dd>User's current working directory
81      * <dt>gnu.cpu.endian       <dd>"big" or "little"
82      * </dl>
83      *
84      * @param properties the Properties object to insert the system properties into
85      */
86     static native void preInit(Properties properties);
87
88     /**
89      * Here you get a chance to overwrite some of the properties set by
90      * the common SystemProperties code. For example, it might be
91      * a good idea to process the properties specified on the command
92      * line here.
93      */
94 //     static void postInit(Properties properties)
95 //     {
96 //     }
97     static native void postInit(Properties properties);
98 }