Swing escritorio-desarrollo

Tengo una pregunta muy general sobre las aplicaciones Java-desktop-gui.

Mi experiencia En los últimos años he desarrollado una serie de aplicaciones de escritorio, algunas usando Swing solo, algunas Spring-RCP (lo cual fue genial, aún así no puedo apostar por un marco que no ha visto una actualización por más de 3 años) ) También estoy mirando Valkyrie RCP, pero me parece que tampoco hay mucho movimiento allí. También desarrollé aplicaciones web con Wicket, Tapestry y más recientemente con JSF2 (Primefaces). Después de haber adquirido cierta experiencia en aplicaciones web, me parece que java desktop-gui ha sido abandonada hace mucho tiempo. Por supuesto, no me había dado cuenta antes, pero después de desarrollar aplicaciones web, realmente veo cuán dolorosa y complicada es la programación de escritorios de escritorio en comparación direct

Lo que estoy buscando: No estoy haciendo ninguna ciencia de cohetes aquí, lo que más extraño es una forma fácil de construir una forma del siguiente diseño simple

label_a    input_a    feedbackMessage_a
label_b    input_b    feedbackMessage_b
....
button_save

No se trata solo del diseño, ese es probablemente el problema más pequeño. Primero, estoy buscando una manera de "vincular" los valores de los campos de entrada a algún tipo de "backing-bean-fields". También quiero usar comentarios directos, lo que significa que si la validación de input_a falla, quiero que se muestre un mensaje en feedbackMessage_a y en ningún otro lugar. Tercero, quiero usar la validación JSR-303 con esta retroalimentación directa. Si profundizo en el código fuente de una aplicación de escritorio típica, generalmente veo un oyente de acción gigante para cada botón, donde toda esa asignación de valor, validación y creación de mensajes de retroalimentación se escribió manualmente. Compare esto con un marco web como tapiz o jsf2. Lo que haría allí es "vincular" un campo de entrada a una variable / campo con algún tipo de lenguaje de expresión, y eso es todo. El valor se está validando (por ejemplo, utilizando anotaciones JSR-303) y (si todos los valores son válidos) se pasan automáticamente al campo enlazado del bean de respaldo. Además, si se produce un error de validación, se crea un mensaje de validación, donde la identificación del campo de entrada se utiliza para identificar el campo de entrada responsable. Si existe un componente de mensaje para esa identificación específica, el mensaje de validación se establece allí. Es sencillo y lógico.

Ahora saltando de nuevo a la GUI de escritorio; para tener una interfaz de usuario comparable para, digamos, un formulario con 20 campos de entrada, probablemente necesitaría como 500 líneas de código de escucha, donde primero leo el valor de cada campo de texto, lo valido y lo escribo en la variable correspondiente . Si tuviera que usar JSR-303, podría llamar al validador yo mismo, pero sería doloroso retroceder al campo de entrada correspondiente y configurar el mensaje de retroalimentación allí ... ¡adivina qué ... yo mismo! Doloroso, ¿no?

Mis preguntas ¿Hay alguna forma de aliviar el dolor? ¿Cómo se desarrollan aplicaciones de escritorio modernas? ¿Qué marcos utilizas y por qué? ¿Existe alguna posibilidad de usar una forma similar de enlace como lo hacen los webframeworks? ¿Cómo puedo implementar la "retroalimentación directa", como se explicó anteriormente? ¿Perdí un tren aquí o realmente se ha vuelto mucho más simple escribir una aplicación web en los últimos años, mientras que java-desktop parece estar atascado? (Excepto JavaFx, pero eso no me ayuda un poco)

Ultimas palabra No me malinterpreten, soy un gran admirador de las aplicaciones de escritorio de Java. En una empresa de tamaño moderado como la que estoy trabajando, con un entorno homogéneo (donde todos los clientes tienen instalada la misma versión de Java, etc.) realmente no veo la ganancia de una aplicación web. Usando webstart, la aplicación comienza realmente rápido (después del primer inicio con descarga, por supuesto). Aún así, me parece que si bien los marcos web centrados en frontend en Java avanzan a la velocidad de la luz, java-desktop casi no se mueve en absoluto. Aunque puedo vivir como está, realmente tengo que hacer estas preguntas.

Respuestas a la pregunta(6)

Su respuesta a la pregunta