我受到另一个问题的启发:使用 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 之上测试非标准 JVM(J2ME、Android、GCJ、OpenJDK、Apache Harmony 等)和通用语言(Groovy、Scala、JRuby 等)应该特别有效。
现任领导:
- rsp 19 发现的属性
- 鲍里斯发现了 14 处房产
- Joa Ebert 8 发现的属性
- Suraj Chandran 1 发现的财产
顺便说一句,我计划将最终结果作为 Maven 工件发布,并在我有足够的输入后立即将其上传到中央存储库。
更新:公共存储库,终于
SystemProperty.java现在作为molindo-utils 项目的一部分在 GitHub 上可用。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>