Мне было предложено написать графический интерфейс для существующей программы оболочки /cmdline, написанной на Java, и я хочу создать слой абстракции между графическим интерфейсом и исходной программой, что упростит добавление другого графического интерфейса ( например, веб-интерфейс, а не настольное приложение). На данный момент структура программы выглядит следующим образом:

Параметры командной строки немедленно переводятся в хэш-таблицу Java (с помощью опции -f opt в хэш "-f=>opt"). Эти параметры затем используются для настройки объекта environment, который использует программа.
Структура, которую я имею в виду, это:

Следуя сплошным строкам, это означает, что GUI создает файл XML, содержащий ту же информацию, что и параметры оболочки /cmdline, которая затем используется для настройки опции environment.
Дело в том, что я не совсем уверен, что лучший способ для работы (откуда пунктирные линии, обозначающие альтернативные структуры), и я также не знаю, является ли здесь правильный выбор XML.
В соответствии с этим части программы, которые устанавливают объект environment из options, расположены в тех же методах, что и части, которые используют environment для получения результатов. Поэтому было бы проще реализовать что-то, что передавало аргументы shell/cmdline непосредственно в программу, чем было бы для реализации структуры, в которой информация передавалась как XML файл. Я, конечно же, не хочу создавать XML файл, а затем переводить его в параметры оболочки и передавать их в программу, но для GUI может возникнуть больше смысла генерировать собственные параметры оболочки, а не создавать XML.
Основное преимущество использования XML файла, насколько я могу судить, заключается в том, что он упрощает работу будущих разработчиков, поскольку они могут использовать существующие библиотеки для создания XML файлов, а не беспокоиться о получении синтаксиса -a opt1 -b opt2 -c opt3 [...] правильно.
С другой стороны, я слышал, что попытка создать собственный XML-язык не воспринимается легкомысленно (хотя программа поскольку он хранит данные в файлах XML без DTD или даже схемы, насколько я могу судить).
Является ли мой подход более или менее правильным? Или я использую совершенно неприемлемые инструменты для работы, которую я пытаюсь сделать?