Меня вдохновил еще один вопрос: Лучшая практика использования свойств Java-системы
В настоящее время я ищу полный список свойств системы Java и возможных значений. Я работаю над простым классом, чтобы упростить их использование (если вам интересно, получить источник и справочная информация (мой блог)). С этим классом я пытаюсь предоставить следующее:
- простой и последовательный доступ к свойствам системы Java (без строковых констант)
- полная документация о доступных свойствах и их возможных значениях - в моей среде IDE (т.е. автозаполнение, встроенный Javadoc)
- Исправить несоответствия в возвращаемых значениях и/или присвоить имена
- убедитесь, что существует java.io.tmpdir - это главная причина, по которой Im делает все это:)
Чтобы получить полную документацию и полный список доступных свойств (даже тех, где доступность зависит от JVM), я хотел бы, чтобы вы загрузили источник, запустите его и опубликуйте свои результаты. Я буду обновлять класс соответствующим образом и держать его доступным в данном месте. Надеюсь, это облегчит жизнь некоторых из вас там:)
Edit:
Я не ищу стандартные свойства, описанные 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";
Итак, пожалуйста, запустите этот код и опубликуйте свои выводы. Вот простой script, чтобы вы начали:
#!/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
(Я знаю, что это не реальный вопрос, а скорее источник поиска толпы. Надеюсь, никто не возражает)
Bounty:
Поскольку нет правильного ответа на этот вопрос, награда будет присуждаться человеку, который обнаруживает большинство новых свойств системы. В качестве подсказки: тестирование нестандартных JVM (J2ME, Android, GCJ, OpenJDK, Apache Harmony,...) и общих языков поверх JVM (Groovy, Scala, JRuby,..) должно быть особенно получая.
Текущие лидеры:
- rsp 19 обнаруженных свойств
- Борис 14 обнаруженных свойств
- Joa Ebert Найденные свойства
- Сурай Чандран 1 обнаружено свойство
Btw, я планирую выпустить окончательный результат как артефакт Maven и загрузить его в центральный репозиторий, как только у меня будет достаточно ввода.
UPDATE: публичный репозиторий, наконец
SystemProperty.java теперь доступен на GitHub, как часть молиндо-utils проект. molindo-utils в настоящее время доступен как 1.0-SNAPSHOT через репозиторий SOAT Sonatype. Как только он будет готов к выпуску, он также будет синхронизирован с центральным 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>