/* * $Id: VMSystemProperties.java 5226 2009-04-06 14:55:27Z lsantha $ * * Copyright (C) 2003-2009 JNode.org * * This library is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published * by the Free Software Foundation; either version 2.1 of the License, or * (at your option) any later version. * * This library is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public * License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this library; If not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ package gnu.classpath; import java.util.Properties; class VMSystemProperties { /** * Get the system properties. This is done here, instead of in System, * because of the bootstrap sequence. Note that the native code should * not try to use the Java I/O classes yet, as they rely on the properties * already existing. The only safe method to use to insert these default * system properties is {@link Properties#setProperty(String, String)}. * * <p>These properties MUST include: * <dl> * <dt>java.version <dd>Java version number * <dt>java.vendor <dd>Java vendor specific string * <dt>java.vendor.url <dd>Java vendor URL * <dt>java.home <dd>Java installation directory * <dt>java.vm.specification.version <dd>VM Spec version * <dt>java.vm.specification.vendor <dd>VM Spec vendor * <dt>java.vm.specification.name <dd>VM Spec name * <dt>java.vm.version <dd>VM implementation version * <dt>java.vm.vendor <dd>VM implementation vendor * <dt>java.vm.name <dd>VM implementation name * <dt>java.specification.version <dd>Java Runtime Environment version * <dt>java.specification.vendor <dd>Java Runtime Environment vendor * <dt>java.specification.name <dd>Java Runtime Environment name * <dt>java.class.version <dd>Java class version number * <dt>java.class.path <dd>Java classpath * <dt>java.library.path <dd>Path for finding Java libraries * <dt>java.io.tmpdir <dd>Default temp file path * <dt>java.compiler <dd>Name of JIT to use * <dt>java.ext.dirs <dd>Java extension path * <dt>os.name <dd>Operating System Name * <dt>os.arch <dd>Operating System Architecture * <dt>os.version <dd>Operating System Version * <dt>file.separator <dd>File separator ("/" on Unix) * <dt>path.separator <dd>Path separator (":" on Unix) * <dt>line.separator <dd>Line separator ("\n" on Unix) * <dt>user.name <dd>User account name * <dt>user.home <dd>User home directory * <dt>user.dir <dd>User's current working directory * <dt>gnu.cpu.endian <dd>"big" or "little" * </dl> * * @param properties the Properties object to insert the system properties into */ static void preInit(Properties properties) { try { Class clazz = Class.forName("org.jnode.vm.VmSystem"); clazz.getMethod("insertSystemProperties", Properties.class).invoke(null, properties); } catch (Exception x) { x.printStackTrace(); throw new RuntimeException(); } } /** * Here you get a chance to overwrite some of the properties set by * the common SystemProperties code. For example, it might be * a good idea to process the properties specified on the command * line here. */ static void postInit(Properties properties) { } }