Java 8 среда платформы

Цикл статей «Учебник Java 8».

Следующая статья — «Java 8 регулярные выражения».
Предыдущая статья — «Java 8 многопоточность».

java.util.Properties

java.util.Properties — это специальный класс для хранения настроек в виде ключ-значение. И ключ и значение являются строками. Класс предоставляет методы для:

  • Загрузки пар ключ-значение из потока.
  • Получение значения по ключу.
  • Получение списка всех ключей и значений.
  • Проход по всем ключам.
  • Сохранение настроек в поток.

Обратитесь к статье «Java 8 потоки ввода/вывода», чтобы узнать больше про потоки.

Класс  java.util.Properties  расширяет класс java.util.Hashtable. Некоторые методы, которые он унаследовал от него поддерживают следующие действия:

  • Проверка существования указанного ключа или значения в объекте Properties.
  • Получение количества пар ключ-значение в нашем объекте Properties.
  • Удаление ключа и его значения.
  • Добавление ключа со значением.
  • Проход по ключам или значениям.
  • Получение значения по ключу.
  • Проверка Properties  на пустоту.

Пример загрузки настроек из файла:

Пример сохранения настроек в файл:

Полезные методы класса java.util.Properties :

 

Возвращает true, если значение value  присутствует в Properties.

 

Возвращает true, если ключ key  присутствует в Properties.

 

Возвращает значение по ключу. Если такой ключ не найден в списке свойств и в списке свойств по умолчанию, то возвращается null.

 

 

Возвращает значение по ключу. Если такой ключ не найден в списке свойств и в списке свойств по умолчанию, то возвращается defaultValue.

 

Пишет список настроек в PrintStream. Полезно для отладки.

 

Пишет список настроек в PrintWriter. Полезно для отладки.

 

Возвращает объект для последовательного перебора элементов.

 

Возвращает объект для последовательного перебора ключей.

 

Возвращает объект для перечисления всех ключей настроек, включая настройки из списка настроек по умолчанию.

 

Возвращает множество всех ключей настроек, включая настройки из списка настроек по умолчанию.

 

Возвращает количество элементов в Properties .

 

Устанавливает/добавляет значение для ключа.

 

 

Удаляет пару ключ-значение из списка настроек.

 

Класс java.lang.System  предоставляет объект java.util.Properties , который определяет конфигурацию текущей среды.  Их можно получить с помощью метода System.getProperty  или System.getProperties. Пример:

С помощью метода setProperty можно поменять значение какой-либо из настроек, но это крайне не рекомендуется. Большая часть значений приведена только в информационных целях. Она не перечитывается после инициализации и не сохраняется для последующих запусков при изменении.

Список основных настроек:

Key Meaning
"file.separator"  Символ, который разделяет компоненты пути файлов в системе. Это  "/"  в UNIX и  "\"  в Windows.
"java.class.path"  Путь, который используется для поиска каталогов и JAR-архивов, содержащих файлы «.class». Элементы пути разделяются специфичным для платформы символом, указанным в свойстве path.separator.
"java.home"  Каталог, в который установлена Java Runtime Environment (JRE)
"java.vendor"  Производитель JRE
"java.vendor.url"  Адрес сайта производителя JRE
"java.version"  Версия JRE
"line.separator"  Последовательность символов, используемая операционной системой в качестве разделителя строк в текстовых файлов.
"os.arch"  Архитектура операционной системы.
"os.name"  Название операционной системы.
"os.version"  Версия операционной системы
"path.separator"  Символ разделителя пути, используемый в  java.class.path
"user.dir"  Рабочий каталог пользователя
"user.home"  Домашний каталог пользователя
"user.name"  Имя аккаунта пользователя

Аргументы командной строки

Приложение на Java может принимать любое количество аргументов с командной строки. Это позволяет пользователю указать необходимую конфигурационною информацию при запуске приложения.

Пользователь вводит аргументы командной строки при вызове приложения и указывает их после имени запускаемого класса. Например, приложением Sort сортирует строки в файле. Для сортировки файла «frients.txt» пользователь может ввести:

Приложение получает аргументы командной строки в массиве строк метода main.

Следующая программа выводит в консоль аргументы командной строки, каждый аргумент на выводится на отдельной строке:

Если пользователь запустит программу так:

То вывод будет таким:

Каждое слово вывелось на отдельной строке, потому что пробел разделяет аргументы командной строки, в результате каждое слово оказалось в отдельном аргументе. Чтобы получить все слова в одном аргументе пользователь должен заключить их в кавычки:

Переменные окружения

Многие операционные системы используют переменные окружения для передачи информации в приложения.

Переменные окружения представляют собой пары ключ-значение, где ключ и значение — строки. Установки и использование переменных окружения значительно различается в операционных системах и не будет рассмотрена здесь.

С помощью метода System.getenv  приложение может получить переменные окружения. Метод без аргумента возвращает экземпляр java.util.Map, который можно использовать только для чтения, но нельзя изменять.
Пример:

С аргументом типа String  метод getenv  возвращает значение указанной переменной окружения. Если переменная не указана, то возвращается null. Пример:

При использовании объекта java.lang.ProcessBuilder для создания нового процесса множество переменных окружения, передающихся в новый процесс, такое же, что из получено процессов виртуальной машины Java. Программа может поменять это множество с помощью ProcessBuilder.environment.

java.lang.SecurityManager

Объект java.lang.SecurityManager определяет политику безопасности для приложения, которая определяет, какие действия безопасны, а какие нет. Любые действия, которые не разрешены политикой безопасности, приводят к исключению java.lang.SecurityException. Приложение может запросить у SecurityManager-а, какие действия разрешены, а какие нет.

Обычно Java-апплет работает с SecurityManager-ом, предоставленным браузером или плагином Java Web Start Plugin. Другие типы приложений обычно работают без SecurityManager-а, разве что приложение само не объявит его. Если нет SecurityManager-а, то приложение не имеет политики безопасности и работает без ограничений.

Приложение может получить ссылку на java.lang.SecurityManager  используя следующий код:

Если нет SecurityManager-а, то метод вернёт null.

После получения ссылка на объект менеджера безопасности, приложение может запросить разрешение сделать что-либо. Многие классы в стандартных библиотеках делают это. Например, System.exit, который завершает виртуальную машину Java  с кодом выхода, вызывает SecurityManager.checkExit, чтобы убедиться, что текущий поток имеет разрешение на завершение работы приложения.

Класс java.lang.SecurityManager  имеет много других методов. Например, SecurityManager.checkAccess  проверяет разрешения потока, SecurityManager.checkPropertyAccess  проверяет возможность доступа к указанному свойству системы.

Другие методы класса System

Возвращает текущее время в миллисекундах с 1 января 1970 года.

 

Аналогично Runtime.getRuntime().exit(status). Завершает работу виртуальной машины Java с указанным статусом. По соглашению 0 означает успешную работу, статус отличный от нуля — ошибку.

 

Переменная CLASSPATH

Переменная окружения CLASSPATH указывает на пути, в которых нужно будут искаться классы пользователя.  Лучший способ указать путь к классам — это использовать аргумент командной строки -cp , что позволяет указать CLASSPATH индивидуально для каждого приложения.

Значение по умолчанию ".", которое означает, что поиск будет происходить только в текущем каталоге. Указание переменной CLASSPATH или аргумента командной строк -cp  переопределяет это значение.

 

Цикл статей «Учебник Java 8».

Следующая статья — «Java 8 регулярные выражения».
Предыдущая статья — «Java 8 многопоточность».

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *