У меня очень общий вопрос относительно 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) и (если все значения там, где оно допустимо) автоматически передается в связанное поле базового компонента.Кроме того, если возникает ошибка проверки, создается сообщение проверки, где идентификатор поля ввода используется для идентификации поля ввода, которое является ответственным.Если для этого конкретного идентификатора существует компонент-сообщение, то там устанавливается сообщение проверки.Это просто гладко и логично.
Теперь вернемся к desktop-gui;чтобы иметь сопоставимый пользовательский интерфейс для, скажем, формы с 20 полями ввода, мне, вероятно, понадобится около 500 строк кода слушателя, где я сначала сам читаю значение каждого текстового поля, проверяю его сам и записываю его в соответствующую переменную сам,Если бы я использовал JSR-303, я мог бы сам вызывать валидатор, но было бы больно возвращаться к соответствующему полю ввода и устанавливать там сообщение обратной связи ... угадайте, что ... я сам!Больно, не так ли?
Мои вопросы: Есть ли способ облегчить боль?Как вы разрабатываете современные десктоп-приложения?Какие рамки вы используете и почему?Есть ли возможность использовать такой же способ привязки, как у webframeworks?Как я могу реализовать «прямую обратную связь», как описано выше?Я опоздал на поезд или действительно стало намного проще писать веб-приложение за последние несколько лет, в то время как java-рабочий стол, похоже, застрял?(За исключением JavaFx, но это мне немного не помогает)
Заключительные слова Не поймите меня неправильно, я большой поклонник java desktop-приложений.В компании среднего размера, такой как та, в которой я работаю, с однородной средой (где на всех клиентах установлена одинаковая java-версия и т. Д.), Я действительно не вижу выгоды от веб-приложения.С помощью веб-старта приложение запускается очень быстро (после первого запуска с загрузкой, конечно).Тем не менее, мне кажется, что в то время как веб-фреймворки, ориентированные на интерфейс, в Java движутся со скоростью света, java-рабочий стол почти не движется вообще.Хотя я могу жить так, как есть, мне действительно нужно задавать эти вопросы.