TOML | JAVA | Балерина | toml4j

Настройте свою программу JAVA с помощью файла TOML

Введение в простой парсер TOML для Java-приложений.

TOML стремится быть минимальным форматом файла конфигурации, который легко читать из-за очевидной семантики. TOML разработан для однозначного сопоставления с хеш-таблицей. TOML должен легко разбираться в структуры данных на самых разных языках. - Github (toml-lang)

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

Форматы сериализации?

В информатике в контексте хранения данных сериализация - это процесс преобразования структур данных или состояния объекта в формат, который может быть сохранен или передан и восстановлен позже. (Википедия)

Правила и положения, определяющие эти форматы сериализации, обычно становятся общедоступными, что повысит доступность синтаксических анализаторов и эмиттеров для существующих языков программирования. Некоторые примеры доступных форматов сериализации в настоящее время приведены ниже.

  1. XML - расширяемый язык разметки
  2. JSON - нотация объектов JavaScript
  3. YAML - YAML не язык разметки
  4. TOML - очевидный минимальный язык Тома

📎 Почему именно TOML?

В современном мире с развитием информатики люди склонны использовать TOML в своих системах и приложениях. Таким образом, TOML приобрел большую популярность среди других конкурентов. В качестве примера рассмотрим недавно представленный Ballerina, популярный язык программирования для сетевых распределенных приложений. В Ballerina вам может потребоваться использовать формат файла TOML для определения файлов конфигурации, и эти ступени демонстрируют важность использования TOML в качестве формата сериализации.

🔍 Что такое TOML?

Tom’s Obvious, Minimal Language - это новейший формат сериализации, представленный Томом Престоном-Вернером.

Основным строительным блоком формата и правил TOML является пара ключ / значение. Ключи находятся слева от знака равенства, а значения - справа.

key = "value"

Значения должны быть одного из следующих типов:

  • Нить
  • Целое число
  • Плавать
  • Логический
  • Дата и время
  • Множество
  • Встроенная таблица

Пожалуйста, обратитесь к документации TOML для получения подробных правил и спецификаций формата.

Ниже для справки приведен образец файла в формате TOML.

# This is a TOML document.

title = "TOML Example"

[owner]
name = "Tom Preston-Werner"
dob = 1979-05-27T07:32:00-08:00 # First class dates

[database]
server = "192.168.1.1"
ports = [ 8001, 8001, 8002 ]
connection_max = 5000
enabled = true

[servers]

  # Indentation (tabs and/or spaces) is allowed but not required
  [servers.alpha]
  ip = "10.0.0.1"
  dc = "eqdc10"

  [servers.beta]
  ip = "10.0.0.2"
  dc = "eqdc10"

[clients]
data = [ ["gamma", "delta"], [1, 2] ]

# Line breaks are OK when inside arrays
hosts = [
  "alpha",
  "omega"
]

📄 Простой пример (с использованием программы JAVA)

Рассмотрим ситуацию, когда вам нужно прочитать и извлечь некоторые детали из файла конфигурации для вашей программы JAVA, и вы можете использовать TOML в качестве формата файла конфигурации. Поскольку это простой и более удобный для восприятия человеком, формат TOML был бы отличным выбором.

В качестве примера рассмотрим, что вам нужно иметь информацию о некоторых университетах, и вам нужно прочитать детали и извлечь из них информацию для обработки вашей программы. В этом примере мы использовали простой файл конфигурации TOML с некоторыми подробностями, указанными ниже.

📍 ПРИМЕЧАНИЕ. Эти файлы определены в TOML v0.4.0 из-за зависимостей парсера JAVA TOML)

[university]
  name = "University of London"
  country = "United Kingdom"
  [university.department]
    name = "Department of Electrical Engineering"
    students = 2750
    subjects = ["Mathematics","Control Systems","Power Systems"]

Я реализовал простую программу JAVA, которая может читать этот файл конфигурации и очень легко извлекать каждую деталь с помощью парсера toml4j.

Вы можете загрузить исполняемый файл или распространение этого образца программы JAVA и протестировать его в своей среде. См. Инструкции в файле readme.

📦 Исходный код:



💡 toml4j (парсер TOML для JAVA)

toml4j - это парсер TOML 0.4.0 для Java, который использовался во многих приложениях и программах JAVA. Вы можете легко использовать этот синтаксический анализатор для чтения файлов TOML и извлечения каждой детали одну за другой, а не для других форматов сериализации.

📍 ПРИМЕЧАНИЕ. Для этого требуется Java 1.6 или выше.

Есть два основных аспекта использования парсера TOML в программе JAVA.

  1. Заполните объект TOML
  2. Прочтите объект TOML

📥 Заполнить объект TOML

Вы можете определить объект TOML в своей программе JAVA и заполнить объект TOML информацией, прочитав файл TOML.

Toml toml = new Toml().read(getTomlFile());

getTomlFile () должен быть методом, который предоставляет файл конфигурации TOML для преобразования. Вы можете предоставить файл как строку TOML, входной поток, путь к файлу или другой объект TOML. В качестве примера вы можете прочитать файл конфигурации как входной поток и преобразовать его в объект TOML, как показано ниже.

InputStream inputStream = new FileInputStream(pathToFile); 
Toml toml = new Toml().read(inputStream);

📤 Прочтите объект TOML

В этом разделе вам необходимо прочитать заполненный объект TOML и извлечь каждую деталь из файла конфигурации. Чтобы получить детали, вы можете использовать следующие геттеры в вашей программе JAVA.

  • getString(String)
  • getDate(String)
  • getBoolean(String)
  • getLong(String)
  • getDouble(String)
  • getList(String)
  • getTable(String) возвращает новый экземпляр Toml, содержащий только ключи в этой таблице.
  • getTables(String) для массивов таблиц возвращает List<Toml>.

В качестве примера рассмотрим, что вам нужно получить название университета из объекта TOML, который был заполнен приведенным выше файлом конфигурации. Для этой задачи вы можете легко использовать следующую команду в своей программе JAVA.

String universityName = toml.getString(“university.name”);

Чтобы получить количество студентов, вы можете использовать следующую команду.

Long numberOfStudents = toml.getLong("university.department.students");

Чтобы получить название отдела, вы можете использовать следующую команду.

String departmentName = toml.getString(“university.department.name”);

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

List<String> subjects = new ArrayList<>();
subjects = toml.getList(“university.department.subjects”);

Как подробно описано выше, вы сможете легко получать детали одну за другой, используя этот парсер TOML, который он также поддерживает для всех структур данных, которые поддерживают формат TOML v0.4.0.

Ссылаясь на приведенный выше пример программы, вы можете получить больше информации об использовании файлов конфигурации TOML в программах JAVA.

Ваше здоровье!! 🍺🍺

Подробнее о Балерине:



Подробнее о формате TOML и парсере toml4j: