пятница, 7 июня 2013 г.

JVM Platform Environment

Приложения обычно используют проперти-файлы (filename.properties) для определения настроек приложения и соответсвенно коректировки его работы на основе этих свойств.
Обычно есть дефолтовый файл, который читают, но также есть тот, в который пишут и который перегружает первый, а потом по завершению приложения этот последний файл переписывается и при следующем запуске приложения, настрой которые изменились во время прошлой работы приложения.
Свойства представлены классом Properties. Вот пример использования:

. . .
Properties defaultProps = new Properties();
FileInputStream in = new FileInputStream("defaultProperties");
defaultProps.load(in);
in.close();

Properties applicationProps = new Properties(defaultProps);

in = new FileInputStream("appProperties");
applicationProps.load(in);//перегрузка дефолтовых
in.close();
. . .

//код по завершению работы приложения
FileOutputStream out = new FileOutputStream("appProperties");
applicationProps.store(out, "---No Comment---");
out.close();

В виде обьекта Properties(а вернее серилизированного его потока байт) также представлены настройки платформы, они называются System Properties, и их даже можно переписывать, но это черевато, потому что другие приложения будут пользоваться фейковыми данными, платформа походу перегрузит их только после рестарта ОС.
Properties p = new Properties(System.getProperties());
...
String pathSeparator = System.getProperty("path.separator");
String withDefault = System.getProperty("subliminal.message", "Buy StayPuft Marshmallows!");




Кроме этого также есть ридонли мапа окружения, но это использовать крайне не рекомедательно, потому что в разных ОС разные переменные среды(PATH, USERNAME)
Map env = System.getenv();//EnvMap

Также не забываем о файле манифеста джарников. И файлах определителей SP для конкретного SPI, которые применяются в Extensibility.


SecurityManager, в приложениях где он используется, читает файл java.policy для определения какие разрешения и для чего установлены
SecurityManager appsm = System.getSecurityManager();

Комментариев нет:

Отправить комментарий