众包常见 Java 系统属性和已知值的完整列表
我受到另一个问题的启发:使用Java系统属性的最佳实践
我目前正在寻找Java系统属性和可能值的完整列表。我正在开发一个简单的类来简化它们的使用(如果您有兴趣,请获取源代码和背景信息(我的博客))。对于此类,我尝试提供以下内容:
- 简单一致地访问 Java 系统属性(无字符串常量)
- 可用属性及其可能值的完整文档 - 在我的IDE中(即自动完成,内联Javadoc)
- 修复返回值和/或命名中的不一致
- 确保java.io.tmpdir存在 - 从表面上看,这就是我做所有这些:)的主要原因
为了获得完整的文档和可用属性的完整列表(即使是那些可用性严重依赖于JVM的属性),我希望您下载源代码,运行它并发布您的结果。我将相应地更新类,并使其在给定位置保持可用。希望它能让你们中的一些人的生活变得轻松:)
编辑:
我不是在寻找System.getProperties()中描述的标准属性或系统上可用的所有属性。我正在尝试创建一个全面的系统属性列表 - 即使是那些与供应商,jvm或版本相关的属性 - 那些不能保证存在并且其文档稀疏或难以找到的属性。像这样的属性
- sun.desktop(仅限 Linux,例如 “gnome”),
- awt.toolkit (仅限 Mac,例如 apple.awt.CToolkit)
- sun.cpu.endian (僅限 Sun JVM)
- ...
我很想让其他人运行我的代码并发布他们的结果,以便以易于使用的Java枚举的形式编译一个全面的列表(包含属性及其可能值的大量文档),例如:
String file = SystemProperty.JAVA_IO_TMPDIR + "file.txt";
而不是
String tmp = System.getProperty("java.io.tmpdir");
if (!tmp.endsWith(File.separator)
tmp += File.separator;
new File(tmp).mkdirs(); // make sure tmp exists
String file = tmp + "file.txt";
因此,请运行该代码并发布您的发现。下面是一个简单的脚本,可帮助您入门:
#!/bin/bash
# download and run
# you should really look at the code first, as you can't be sure
# that I'm a trustworthy guy ;)
wget -N http://techblog.molindo.at/files/SystemProperty.java
javac SystemProperty.java
java SystemProperty
(我知道这不是一个真正的问题,而是一个众包的事情。我希望没有人介意)
赏金:
由于这个问题没有正确的答案,赏金将奖励给发现大多数新系统属性的人。作为提示:在JVM(Groovy,Scala,JRuby,.)之上测试非标准JVM(J2ME,Android,GCJ,OpenJDK,Apache Harmony等)和通用语言(Groovy,Scala,JRuby,..)应该特别屈服。
现任领导:
顺便说一句,我计划将最终结果作为Maven工件发布,并在我有足够的输入后立即将其上传到中央存储库。
更新:公共存储库,终于
SystemProperty.java现已在GitHub上提供,作为molindo-utils项目的一部分。molindo-utils目前通过Sonatype的OSS存储库以1.0-SNAPSHOT的形式提供。一旦它准备好发布,它也将被同步到Maven中心。
<repositories>
<repository>
<id>oss.sonatype.org</id>
<url>https://oss.sonatype.org/content/repositories/snapshots/</url>
<releases><enabled>false</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>at.molindo</groupId>
<artifactId>molindo-utils</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>