服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

获取运行中的jvm系统属性


  获取你的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结构中,通过遍历这个结构,获取系统属性值。类结构图如下:
  
 获取运行中的jvm系统属性(图一)

  //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;
    }
  }
  
  运行结果:
  
获取运行中的jvm系统属性(图二)

扫描关注微信公众号