Juliol 2017

Ja fa uns deu anys Carver va desenvolupar una tecnologia de generació automàtica d’interfase d’usuari (IU) coneguda com CarverMVC, El tipus d’interfase que es generava eren pantalles o pàgines de formularis d’entrada de dades i de representació tabular de dades. Aquestes pantalles que en dèiem Forms a les primeres i Views a les segones, representen encara avui més del 98% de la interfase d’usuari d’una aplicació web de gestió empresarial.

CarverMVC estava basat en l’anotació de codi Java mitjançant anotacions de XDoclet, aquestes anotacions indicaven les propietats d’un camp (Field) d’un Form o les d’una columna (Column) d’un View. Així mateix, existien anotacions (Actions) per indicar interaccions de l’usuari amb la pàgina representada.

CarverMVC constava d’un processador que generava les JSPs que definien les pantalles (la V de MVC) i d’un petit runtime que feies les vegades de controlador (la C de MVC). La M de MVC la proporcionava el codi Java anotat que escrivia el programador.

Deu anys després han sorgit tecnologies que han intentat canviar les maneres de desenvolupar les aplicacions web en entorns Java. Darrerament, per exemple, s’han popularitzat les tecnologies que promouen el desenvolupament de la IU al client en una sola pàgina, mitjançant l’ús de llibreries i frameworks basats en JavaScript, deixant el servidor com a mera font de dades a través de web services. El framework Angular és un exemple d’aquests. Ets tecnologies permeten generar IU molt atractives i de gran riquesa i complexitat i és per això que s’han posat ràpidament de moda. Aquest major atractiu a la IU ha hagut de pagar, però, un alt preu: un manteniment molt més difícil, degut principalment al major grau de llibertat amb què es troba el programador i les pròpies característiques del llenguatge JavaScript que exigeixen una gran disciplina en el seu ús, disciplina que rarament s’aconsegueix en els entorns de desenvolupament habituals.

La necessitat d’aquest tipus d’interfase d’usuari en les aplicacions de gestió està una mica qüestionada i en general aporten poca utilitat a l’usuari. El desenvolupament, per contraposició, d’aquestes aplicacions utilitzant tecnologies de definició d’IU (i no programació) com Java Server Faces (JSF), que és un estàndard de JEE (Java Enterprise Edition), complementades amb llibreries de widgets, que oculten la complexitat del JavaScript al programador, aconsegueix una alta eficiència i qualitat i un cost de manteniment realment baix.

Unint la nostra experiència en la generació automàtica de codi d’IU adquirida amb el desenvolupament de CarverMVC i en l’ús de les tecnologies basades en JSF, estem ultimant a Carver el desenvolupament de CarverJSF. CarverJSF és un entorn per a la generació automàtica d’IU que es recolza en JSF ia la llibreria de ginys JSF Primefaces. CarverJSF és bàsicament un processador que tracta les anotacions (aquest cop anotacions Java natives) que defineixen la interfase d’usuari d’una forma similar a la que es feia amb CarverMVC.

Per al processador de CarverJSF s’ha optat pel llenguatge de programació Scala, que és un llenguatge de programació orientat a la programació funcional i que utilitza per a la seva execució la mateixa màquina virtual que Java. La programació funcional que proporciona Scala unida a la seva capacitat de generar codi XML, el fan molt adequat per a aquest tipus de desenvolupament. Donades les característiques de JSF, a diferència de CarverMVC, no serà necessari el desenvolupament d’un runtime adhoc, el que farà CarverJSF més integrable amb una aplicació estàndard JSF.