Меня вдохновил другой вопрос: Наилучшая практика использования свойств системы Java
В настоящее время я ищу полный список системных свойств Java и возможных значений. Я работаю над простым классом, чтобы упростить их использование (если вам интересно, получите исходную и справочную информацию (мой блог) ). С помощью этого класса я стараюсь предоставить следующее:
- простой и согласованный доступ к системным свойствам Java (без строковых констант)
- полная документация доступных свойств и их возможных значений - в моей IDE (т.е. автозаполнение, встроенный Javadoc)
- исправление несоответствий в возвращаемых значениях и / или именах
- убедитесь, что java.io.tmpdir существует - на самом деле это главная причина, по которой я все это делаю:)
Чтобы получить полную документацию и полный список доступных свойств (даже тех, где доступность сильно зависит от 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";
Так что, пожалуйста, запустите этот код и опубликуйте результаты. Вот простой скрипт для начала:
#!/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 обнаруженных объектов
- Джоа Эберт 8 открытых объектов
- Сурадж Чандран 1 обнаруженный объект
Кстати, я планирую выпустить окончательный результат как артефакт Maven и загрузить его в центральное хранилище, как только у меня будет достаточно ввода.
ОБНОВЛЕНИЕ: Публичный репозиторий, наконец
SystemProperty.java теперь доступен на GitHub в рамках проекта molindo-utils . molindo-utils в настоящее время доступен как 1.0-SNAPSHOT через репозиторий OSS 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>