Swing desktop-development

У меня очень общий вопрос о java desktop-gui-приложениях.

Мой опыт За последние годы я разработал несколько настольных приложений, некоторые из которых использовали только Swing, некоторые Spring-RCP (что было здорово, но я не могу просто сделать ставку на платформу, в которой больше 3 лет не было обновления) ). Я также смотрю RCP Valkyrie, но мне кажется, что там тоже не так много движений. Я также разрабатывал веб-приложения для Wicket, Tapestry и, в последнее время, для JSF2 (Primefaces). Получив некоторый опыт в веб-приложениях, я чувствую, что java desktop-gui давно заброшен. Конечно, я не замечал этого раньше, но после разработки веб-приложений я действительно вижу, насколько болезненным и сложным является программирование на десктопе в прямом сравнении.

Что я ищу: Я не занимаюсь ракетостроением, мне больше всего не хватает простого способа создать форму следующего простого макета

label_a    input_a    feedbackMessage_a
label_b    input_b    feedbackMessage_b
....
button_save

Дело не только в макете, это, наверное, самая маленькая проблема. Сначала я ищу способ «связать» значения полей ввода с какими-то «полями бэк-бина». Также я хочу использовать прямую обратную связь, что означает, что если проверка input_a не удалась, я хочу, чтобы сообщение отображалось в feedbackMessage_a и больше нигде. В-третьих, я хочу использовать проверку JSR-303 с этой прямой обратной связью. Если я копаюсь в исходном коде типичного настольного приложения, я обычно вижу гигантский слушатель действий для каждой кнопки, где все это присвоение значений, проверка и создание сообщений обратной связи были написаны вручную. Сравните это с веб-структурой, такой как гобелен или jsf2. Что бы вы там сделали, это «привязали» поле ввода к переменной / полю с помощью какого-либо языка выражений, и это все. Значение проверяется (например, с использованием аннотаций JSR-303) и (если все значения допустимы) автоматически передается в связанное поле базового компонента. Кроме того, если возникает ошибка проверки, создается сообщение проверки, где идентификатор поля ввода используется для идентификации поля ввода, которое является ответственным. Если для этого конкретного идентификатора существует компонент-сообщение, то там устанавливается сообщение проверки. Это просто гладко и логично.

Теперь возвращаюсь к рабочему столу; чтобы иметь сопоставимый пользовательский интерфейс для, скажем, формы с 20 полями ввода, мне, вероятно, понадобится около 500 строк кода слушателя, где я сначала сам читаю значение каждого текстового поля, проверяю его сам и записываю его в соответствующую переменную сам , Если бы я использовал JSR-303, я мог бы сам вызывать валидатор, но было бы больно возвращаться к соответствующему полю ввода и устанавливать там сообщение обратной связи ... угадайте, что ... я сам! Больно, не правда ли?

Мои вопросы Есть ли способ облегчить боль? Как вы разрабатываете современные десктоп-приложения? Какие рамки вы используете и почему? Есть ли возможность использовать такой же способ привязки, как у webframeworks? Как я могу реализовать «прямую обратную связь», как описано выше? Я опоздал на поезд или действительно стало намного проще писать веб-приложение за последние несколько лет, в то время как java-рабочий стол, похоже, застрял? (За исключением JavaFx, но это мне немного не помогает)

Заключительные слова Не поймите меня неправильно, я большой поклонник java-приложений. В компании среднего размера, такой как та, в которой я работаю, с однородной средой (где на всех клиентах установлена одинаковая java-версия и т. Д.), Я действительно не вижу выгоды от веб-приложения. С помощью веб-старта приложение запускается очень быстро (после первого запуска с загрузкой, конечно). Тем не менее, мне кажется, что в то время как веб-фреймворки, ориентированные на интерфейс, в Java движутся со скоростью света, java-рабочий стол почти не движется вообще. Хотя я могу жить так, как есть, мне действительно нужно задавать эти вопросы.

Ответы на вопрос(3)

Ваш ответ на вопрос