Java GUI, описанный в XML - PullRequest
       11

Java GUI, описанный в XML

7 голосов
/ 26 ноября 2008

Моя компания в настоящее время оценивает разработку клиента Java FAT. Он должен поддерживать динамический графический интерфейс и иметь как можно больше логики на стороне сервера. Поэтому возникла идея отправить экран в виде XML клиенту FAT, показать его пользователю и отправить введенные данные, аналогичные «html форме», обратно в структуру, подобную:

<fields>
  <field type="checkbox" name="active" checked="false" x="10" y="10" />
  <field type="textbox" name="username" value="dummy" x="10" y="30" />
  <field type="selection" name="group" selectedIndex="1" x="10" y="50">
     <data index="0">user</data>
     <data index="1">admin</data>
  </field>
  <field type="button" name="ok" x="10" y="70" />
  <field type="button" name="cancel" x="10" y="90" />
</field>

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

Вопрос
Кто-нибудь разработал что-то подобное? Какие библиотеки вы бы предложили? Есть плюсы и минусы? Большое спасибо!

Обновление
Большое спасибо за ваш вклад, Thinlet выглядит очень многообещающе, как и JavaFX - я рассмотрю оба.

Ответы [ 8 ]

2 голосов
/ 26 ноября 2008

Когда я в последний раз искал такую ​​вещь, двумя вариантами были Thinlet и Apache Jelly .

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

Прежде чем я нашел их, я написал аналогичный инструментарий (когда Echo был передовым, а Java 1.3 - передовым), основанный на JHTMLEditor. Это работало, но слушатели работали на той же виртуальной машине, что и средство визуализации.

В связи с этим возникает мысль, которую @Draemon делает в контексте клиент / сервер, и я должен был бы спросить, является ли это плодотворным способом решения более крупной проблемы. Я предполагаю, что вы хотите разгрузить много циклов ЦП на клиенте? Возможно, если вы добавите немного больше, мы сможем сделать больше предложений? Это указывает на подход, при котором ваше приложение развертывается на настольном компьютере в качестве localhost веб-сервера, и вы обслуживаете страницы в локальном браузере.

Если вы можете подождать, я бы и дождался JavaFX , поскольку это сделает сборку апплетов намного более декларативной, а также сократит первоначальную загрузку библиотеки рендеринга.

2 голосов
/ 26 ноября 2008

"Он должен поддерживать динамический графический интерфейс и иметь как можно больше логики на стороне сервера."

То, что вы описываете, - это веб-приложение. Клиент уже написан (браузер), а формат XML (ish) - (X) HTML.

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

1 голос
/ 29 сентября 2011

Взгляните на рамки ofbiz. он использует виджеты (xml) и через обработчики прикрывает их к выводам http://ofbiz.apache.org/

1 голос
/ 26 ноября 2008

Обычно вы отправляете сериализованные формы клиенту и сериализуете полученные данные. Это можно сделать с помощью сериализации Java, то есть RMI, но брандмауэры и т. Д. Могут усложнить использование RMI в Интернете.

Если вы хотите использовать XML по HTTP в сети, вы можете взглянуть на java.beans.XMLEncoder . XMLEncoder ориентирован на сериализацию компонентов пользовательского интерфейса, но он также хорошо работает для сериализации POJO. По сути, это будут объекты модели, которые заполняются пользовательским вводом в клиенте FAT.

1 голос
/ 26 ноября 2008

Существует довольно много наборов инструментов на основе XUL для различных языков, включая Java. Я думаю, что Thinlet делает очень упрощенный XUL для Java, но должны быть и другие.

1 голос
/ 26 ноября 2008

Сделали нечто похожее с SWT, хотя это было преобразование логической структуры данных (в данном случае модели формы приложения) в графический интерфейс, а не указание графического интерфейса напрямую. Это позволило нам провести рефакторинг графического интерфейса в зависимости от свойств клиента (PocketPC или Desktop), поскольку модель данных была семантической, а не диктаторской по макету.

Написание парсеров и генераторов XML очень просто. Написание чего-либо для генерации интерфейса из модели не так просто, так как вам нужно хранить отношения между элементами GUI и полями модели, к которым они относятся, чтобы вы могли обновлять их при внесении изменений, а не обычный жестко закодированный слушатель на каждом Элемент графического интерфейса.

1 голос
/ 26 ноября 2008

Попробуйте JavaFX ( Википедия о JavaFX ). Это не XML, но это также легко и декларативно.

0 голосов
/ 26 ноября 2008

Попробуйте QT Jambi . Это позволяет вам создавать макеты форм в QT Designer и экспортировать их в файл дескриптора того типа, который вы описали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...