Nuevo Carver-JSF

Julio 2017

Hace ya unos diez años Carver desarrolló una tecnología de generación automática de interfase de usuario (IU) conocida como CarverMVC, El tipo de interfase que se generaba eran pantallas o páginas de formularios de entrada de datos y de representación tabular de datos. Estas pantallas que llamábamos Forms a las primeras y Views a las segundas, representan todavía hoy más del 98% de la interfase de usuario de una aplicación web de gestión empresarial.

CarverMVC estaba basado en la anotación de código Java mediante anotaciones de xDoclet, dichas anotaciones indicaban las propiedades de un campo (Field) de un Form o las de una columna (Column) de un View. Asimismo, existían anotaciones (Actions) para indicar interacciones del usuario con la página representada.

CarverMVC constaba de un procesador que generaba las JSPs que definían las pantallas (la V de MVC) y de un pequeño runtime que hacías las veces de controlador (la C de MVC). La M de MVC la proporcionaba el código Java anotado que escribía el programador.

Diez años después han surgido tecnologías que han intentado cambiar las maneras de desarrollar las aplicaciones web en entornos Java. Últimamente, por ejemplo, se han popularizado las tecnologías que promueven el desarrollo de la IU en el cliente en una sola página, mediante el uso de librerías y frameworks basados en JavaScript, dejando el servidor como mera fuente de datos a través de web services. El framework Angular es un ejemplo de éstos. Estás tecnologías permiten generar IU muy atractivas y de gran riqueza y complejidad y es por esto que se han puesto rápidamente de moda. Este mayor atractivo en la IU ha tenido que pagar, sin embargo, un alto precio: un mantenimiento mucho más difícil, debido principalmente al mayor grado de libertad con el que se encuentra el programador y las propias características del lenguaje JavaScript que exigen una gran disciplina en su uso, disciplina que raramente se consigue en los entornos de desarrollo habituales.

La necesidad de este tipo de interfase de usuario en las aplicaciones de gestión está algo cuestionada y en general aportan poca utilidad al usuario. El desarrollo, por contraposición, de dichas aplicaciones utilizando tecnologías de definición de IU (y no programación) como Java Server Faces (JSF), que es un estándar de JEE (Java Enterprise Edition), complementadas con librerías de widgets, que ocultan la complejidad del JavaScript al programador, consigue una alta eficiencia y calidad y un coste de mantenimiento realmente bajo.

Aunando nuestra experiencia en la generación automática de código de IU adquirida con el desarrollo de CarverMVC y en el uso de las tecnologías basadas en JSF, estamos ultimando en Carver el desarrollo de CarverJSF. CarverJSF es un entorno para la generación automática de IU que se apoya en JSF y en la librería de widgets JSF Primefaces. CarverJSF es básicamente un procesador que trata las anotaciones (esta vez anotaciones Java nativas) que definen la interfase de usuario de una forma similar a la que se hacía con CarverMVC

Para el procesador de CarverJSF se ha optado por el lenguaje de programación Scala, que es un lenguaje de programación orientado a la programación funcional y que utiliza para su ejecución la misma máquina virtual que Java. La programación funcional que proporciona Scala unida a su capacidad de generar código XML, lo hacen muy adecuado para este tipo de desarrollo. Dadas las características de JSF, a diferencia de CarverMVC, no será necesario el desarrollo de un runtime adhoc, lo que hará CarverJSF más integrable con una aplicación estándar JSF.