Separar Interfaz Gráfica de lógica de Negocio

Buenas!
Tengo una consulta y capaz me pueden ayudar. Yo estoy trabajando con unos proyectos Vaadin donde el diseño no fue realizado en capas, es decir no estan separadas las implementaciones de la interfaz grafica de la logica de negocio.
En la mayoria de los lugares donde instalamos no tuvimos problemas, pero un nuevo cliente nos exige tener la interfaz grafica en una VM en su DMZ y luego la logica de negocio en un servidor de su red interna. Realizar los cambios para que la aplicacion pueda funcionar en este modo, nos implica una reprogramacion muy grande.
Mi consulta es si es posible que Vaadin al compliar el codigo Java y genere el Codigo HTML y Javascript me deje ese codigo visible o accesible, para yo ejecutar ese codigo independiente en algun servidor como apache, y configurar para que las llamadas las haga a mi aplicacion original, separando asi el Front-End del Back-End.

Muchas gracias!

Hola,

Es totalmente posible desplegar un front-end Vaadin en un servidor que invoque otro con lógica de negocio. Pero esto no está directamente relacionado con Vaadin. Una aplicación Vaadin es un WAR que puedes desplegar en cualquier contenedor de servlets soportado. Este WAR contiene un engine en JavaScript que “renderiza” la UI en el navegador usando HTML5. Lo que haga tu aplicación (como invocar servicios remotos) depende de la aplicación misma y no de Vaadin.

Buenas,
Si, lo que decis esta bien. El problema que yo tengo es que la aplciacion no fue diseñada con un Front-end separado del Back-end, por lo que no podria invocar los servicios del “Back-End” ya que no existe.
Mi pregunta iba por el lado de si se podia usar mi aplicacion como “Back-end” y que el codigo HTML y JS que genera vaadin como codigo frontend. Y asi ahorrarme el rediseño de mi aplicacion.

Si tu aplicación contiene código Vaadin acoplado a lógica de negocio, necesariamente tienes que modificar dicho código para desplegarlo en servidores diferentes. El código JS y HTML5 que genera Vaadin es lo que “viaja por el cable” desde el servidor hasta el cliente cuando se carga la aplicación en el navegador por primera vez.

Piensa por ejemplo en la sesión HTTP. Aún cuando colocaras el JS/HTML5 inicial en otro servidor, la lógica de la sesión (que es claramente parte del front-end) estaría en el servidor back-end.

Santiago,

Alejandro explica muy bien que vaadin permite realizar aplicaciones WEB java. Estas corren sobre un contenedor de servlets. Desplazar este servidor a una máquina determinada de la infraestructura no las convierte en BACKEND(realmente no es algo opcional).

Si me permites te diría que trataras de entender bien las necesidades del cliente y su infraestructura. Por qué quiere separar la lógica de negocio de la presentación? quiere reutilizar el código en futuros desarrollos? Quiere imponer ciertas restricciones de seguridad a las llamadas a esa lógica? Separar la lógica implica necesariamente desplegarla en otras máquinas? o es factible desplegarla en el mismo war? Si toca desplegar en otra máquina, las máquinas en las que me obliga a desplegar que restricciones conllevan: tecnologias, puertos?

La parte buena es que si hay trabajo que hacer hay trabajo para cobrar, así que ánimo.