JDK支持的字符集和系统属性值

简介:

Java开发中经常用到系统属性值,相关字符集。经常查询,确实很不爽,还要写个代码去看看。贴出来,以后就方便使用了。

获取当前JDK支持的字符集

1
2
3
4
5
6
public  static  void  getJDKEncoding() {
         SortedMap<String, Charset> map = Charset.availableCharsets();
         for  (String alias : map.keySet()) {
             System.out.println( "别名:"  + alias +  "\t字符集对象:"  + map.get(alias));
         }
     }
别名:alias
字符集对象:Charset
Big5 Big5
GBK GBK
UTF-8 UTF-8
ISO-8859-1
......
ISO-8859-1
.....

一共支持167种之多。

获取当前系统信息

1
2
3
4
5
6
7
8
9
/**
      * 获取当前系统环境信息
      */
     public  static  void  getSystemProperties() {
         Properties p = System.getProperties();
         for  (Object key : p.keySet()) {
             System.out.println( "名称:"  + key +  "\t值:"  + p.get(key));
         }
     }
Key:属性名 Value:属性值 说明
java.runtime.name Java(TM) SE Runtime Environment
sun.boot.library.path C:\Program Files\Java\jdk1.7.0_25\jre\bin
java.vm.version 23.25-b01 Java虚拟机版本
java.vendor.url http://java.oracle.com/ 提供商网址
path.separator ; 系统路径分割符Linux是":";曾经栽过。
java.vm.name Java HotSpot(TM) Client VM Java虚拟机名称;还有其他Java虚拟机Sun Classic/ExactVM(世界上第一款商用Java虚拟机),IBMJ9等
sun.jnu.encoding GBK 文件名编码
java.runtime.version 1.7.0_25-b17
java.library.path 系统环境变量中的值

file.separator \

文件目录分割符(Windows下)

Linux下(/)

file.encoding UTF-8 文件内容编码
sun.boot.class.path C:\Program Files\Java\jdk1.7.0_25\jre\lib\resources.jar;C:\Program Files\Java\jdk1.7.0_25\jre\lib\rt.jar;C:\Program Files\Java\jdk1.7.0_25\jre\lib\sunrsasign.jar;C:\Program Files\Java\jdk1.7.0_25\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.7.0_25\jre\lib\jce.jar;C:\Program Files\Java\jdk1.7.0_25\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.7.0_25\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.7.0_25\jre\classes
sun.java.launcher SUN_STANDARD
java.vm.specification.name Java Virtual Machine Specification
java.vm.specification.vendor Oracle Corporation 提供商
java.specification.name Java Platform API Specification 规格说明书
sun.management.compiler HotSpot Client Compiler
java.class.version 51.0 重要,major.minor组成;Class文件版本号
line.separator \r

Windows(\r)

Liunx(\n)

依靠上面的代码很难显示出来,通过调试查看结果:194801996.png

java.io.tmpdir C:\Users\ZHANGX~1\AppData\Local\Temp\

临时目录

可以设置:

1
java -Djava.io.tmpdir=/path/to/tmpdir


java.awt.printerjob sun.awt.windows.WPrinterJob
sun.arch.data.model 32 JDK ,JRE的位数(操作系统无关)
sun.cpu.endian little 小端模式
sun.desktop windows

下面是一个用户级信息:


Key:属性名 Value:属性值 说明
user.country CN 国家
user.dir E:\workspace__jsmart\Andvance 工作目录
os.arch x86 JRE的系统属性(与操作系统位数无关)
os.name Windows 7 操作系统
os.version 6.1 操作系统内部版本号
user.home C:\Users\Zhang 用户目录
user.timezone
用户所在的时区
user.name Zhang 当前登录系统的用户名
user.language zh 语言,(和国家信息对应,可在浏览器Internet选项的语言中查找)

关于“os.arch”该值与操作系统的位数无关,取决于机器安装的JRE位数,参见:

http://www.oracle.com/technetwork/java/javase/downloads/jre-6u25-download-346243.html可以看出JRE是有位数区别的。

参见一篇文章:

Java's "os.arch" System Property is the Bitness of the JRE, NOT the Operating System

http://mark.koli.ch/2009/10/javas-osarch-system-property-is-the-bitness-of-the-jre-not-the-operating-system.html可以说明情况。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import  com.sun.servicetag.SystemEnvironment;
public  class  OSArchLies {
                                           
   public  static  void  main(String[] args) {
                                             
     // Will say "x86" even on a 64-bit machine
     // using a 32-bit Java runtime
     SystemEnvironment env =
         SystemEnvironment.getSystemEnvironment();
     final  String envArch = env.getOsArchitecture();
                                             
     // The os.arch property will also say "x86" on a
     // 64-bit machine using a 32-bit runtime
     final  String propArch = System.getProperty( "os.arch" );
                                             
     System.out.println(  "getOsArchitecture() says => "  + envArch );
     System.out.println(  "getProperty() says => "  + propArch );
                                             
   }
}

j_0001.gif上面有些属性值很有让人摸不着的感觉,大多是由于没有深入研究JVM和JRE,已及各自的发展历程,还有就是属性名的起名有有些扰人。

      希望各位朋友指定上面问题,待我实验,更正。




本文转自 secondriver 51CTO博客,原文链接:http://blog.51cto.com/aiilive/1250837,如需转载请自行联系原作者

相关文章
|
1月前
|
Cloud Native Java 编译器
Java生态系统的进化:从JDK 1.0到今天
Java生态系统的进化:从JDK 1.0到今天
|
2月前
|
前端开发 IDE Java
JDK 新特性学习笔记之模块系统
JDK 新特性学习笔记之模块系统
|
6月前
|
Oracle Java 关系型数据库
Win11 系统Java17的安装教程:最新版JDK 17.07下载、安装、卸载详解
Win11 系统Java17的安装教程:最新版JDK 17.07下载、安装、卸载详解
271 0
|
2月前
|
安全 Java 开发者
JDK 9:模块化系统——重新定义Java的模块化架构
JDK 9引入了模块化系统,对Java的模块化架构进行了彻底的重新定义。本文将深入探讨模块化系统的原理、优势以及如何在实际开发中应用这一特性。
|
3月前
|
Ubuntu Oracle Java
百度搜索:蓝易云【在Ubuntu系统中安装JDK 17并配置环境变量教程】
现在,你已经成功在Ubuntu系统中安装了JDK 17并配置了环境变量。你可以开始使用JDK 17来开发和运行Java程序。注意,这里假设你已经下载了合适的JDK 17安装包,且JDK 17的安装路径为 `/usr/lib/jvm/jdk-17`。请根据实际情况进行调整。
46 0
|
3月前
|
Oracle 安全 Java
怎样在Windows系统下载安装JDK?
本文介绍怎样在Windows系统下载安装JDK。
42 0
|
4月前
|
关系型数据库 MySQL Java
Linux系统jdk&Tomcat&MySQL安装以及J2EE后端接口部署
Linux系统jdk&Tomcat&MySQL安装以及J2EE后端接口部署
44 0
|
5月前
|
Java Linux iOS开发
Dragonwell JDK系统要求
Dragonwell JDK系统要求
|
6月前
|
Oracle Java 关系型数据库
win11系统下载安装 jdk8安装与环境变量的配置
win11系统下载安装 jdk8安装与环境变量的配置
132 0
|
7月前
|
安全 Java 编译器
JDK21更新内容:舍弃对x86架构32位系统支持
JDK21更新内容:舍弃对x86架构32位系统支持