来源:转载自中文java技术网,http://www.cn-java.com)
作者:jackliu,e-mail:suntoday@eyou.com
获取你的jvm系统环境属性
java的"writer once,run anywhere"口号的确让我们领略到了java的神奇,也成为sun宣传java的金字
招牌。拂开这层神秘的面纱,我们不难发现其核心是运行在各种操作系统中的jvm(java虚拟机)在发
挥着重要的作用,java虚拟机允许我们的纯java类可以达到"一次编写,到处运行"。每个安装在不同操
作系统的java虚拟机负责着java程序与操作系统之间的工作,因此每个java虚拟机的系统环境属性是不
同的,我们可以通过访问java虚拟机的系统属性来获知一些关于当前操作系统的一些基本信息,这些信
息的价值有时是非常重要的。
标准sdk中提供了java.lang.system类,这个类定义了一个对系统设备(包括系统属性和系统输入输出
数据流)的、与平台无关的接口。方法getproperties()返回一个java.util.property对象,对象中存
放了jvm的系统属性列表,我们可以通过这个列表来得到java虚拟机的一些系统属性。
下面的例子中,将介绍如何实现获取jvm系统属性的功能
类设计
设计systeminfo类,用来获取系统的属性,并打印输出到标准输出。首先我们将设计一个
getsystemproperty()方法,该方法将调用java.lang.system.getproperties()返回一个系统属性列表,
在main()函数中,将系统属性的关键字和属性描述放到一个hashtable结构中,通过遍历这个结构,获
取系统属性值。类结构图如下:
附:systeminfo.java
//package com.cn-java;
import java.lang.system;
import java.util.properties;
import java.util.hashtable;
import java.util.enumeration;
public class systeminfo{
//存放jvm获得的系统属性
static private properties _property;
//main function
public static void main(string[] args){
getsystemproperty();
hashtable hashkey;
hashkey=new hashtable();
//将系统信息的关键字和标题放到hashtable
hashkey.put("java.home", "java安装目录 ");
hashkey.put("java.class.path", "装载类的路径 ");
hashkey.put("java.specification.version", "java api 规范的版本 ");
hashkey.put("java.specification.vendor", "java api 规范的厂商 ");
hashkey.put("java.specification.name", "java api 规范的名称 ");
hashkey.put("java.version", "java api 实现的版本 ");
hashkey.put("java.vendor", "java api 实现的厂商 ");
hashkey.put("java.vendor.url", "java api 规范厂商的url");
hashkey.put("java.vm.specification.version", "java虚拟机规范的版本 ");
hashkey.put("java.vm.specification.vendor", "java虚拟机规范的厂商 ");
hashkey.put("java.vm.specification.name", "java虚拟机规范的名称 ");
hashkey.put("java.vm.version", "java虚拟机实现的版本 ");
hashkey.put("java.vm.vendor", "java虚拟机实现的厂商 ");
hashkey.put("java.vm.name", "java虚拟机实现的名称 ");
hashkey.put("java.class.version", "java类文件格式的版本 ");
hashkey.put("os.name", "主机操作系统的名称 ");
hashkey.put("os.arch", "主机操作系统的体系结构");
hashkey.put("os.version", "主机操作系统的版本 ");
hashkey.put("file.separator", "平台目录的分隔符 ");
hashkey.put("path.separator", "平台路径的分隔符 ");
hashkey.put("line.separator", "平台文本行的分隔符 ");
hashkey.put("user.name", "当前用户的帐户名称 ");
hashkey.put("user.home", "当前用户的根目录 ");
hashkey.put("user.dir", "当前工作目录 ");
enumeration enum;
string propertykey;
enum=hashkey.keys();
while(enum.hasmoreelements()){
propertykey=(string)enum.nextelement();
system.out.println((string)hashkey.get(propertykey)
+":"+_property.getproperty(propertykey));
}
}
/**
* 获得系统属性列表
* @return properties
*/
static public properties getsystemproperty(){
_property=system.getproperties();
return _property;
}
}
运行结果:
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器