25/01/2019 | Desarrollo de software,Tecnologías

¿Qué es Errai?

¡Hola a todos! En esta nueva entrada del blog vamos a hablar del framework Errai, su funcionamiento, cómo nos ayuda a preparar un nuevo proyecto, su arquitectura, características, etc. ¡Esperamos que os resulte de mucha utilidad!

INTRODUCCIÓN A ERRAI / GWT

Actualmente, si accedemos a la web, podemos ser conscientes de que existen múltiples opciones para desarrollar aplicaciones para ella. En esta entrada, hablaremos sobre una de ellas, Errai / GWT. Errai es un framework desarrollado y mantenido por RedHat en un intento por combinar las ventajas de los mundos de GWT y JEE. Según Red Hat, Errai es un framework para crear aplicaciones web enriquecidas, utilizando las tecnologías web de la próxima generación.

Construido sobre ErraiBus, el framework proporciona una infraestructura con mensajería asincrónica, real y uniforme en todo el cliente y el servidor.

CÓMO EMPEZAR UN PROYECTO

La documentación oficial de Errai sugiere que hay dos formas de preparar un nuevo proyecto:

1. Usando el proyecto ejemplo:

Una manera de empezar un nuevo proyecto es clonar el de errai- tutorial del repositorio Git, ejecutando:
git clone git@github.com:errai/errai-tutorial.git y adaptarlo a tus necesidades.

2. Usando Errai Forge Addon

JBoss Forge podría ser descrito como un tipo de CLI adaptado a proyectos scaffolding.  Tiene gran cantidad de add-ons lo que hace que pueda ser utilizado por cualquier tipo de proyecto desde cero: Spring, JEE, Vaadin, GWT, etc.

Después de aplicar los comandos, tendremos un nuevo proyecto llamado “errai-tutorial”.

ARQUITECTURA GENERAL

El framework de Errai está principalmente orientado hacia el orientado a usar WildFly, un servidor de aplicaciones (AS) libre (aunque existe la versión con soporte de Red Hat, llamada JBoss EAP), anteriormente conocido como JBoss AS, o simplemente JBoss. Es un servidor de aplicaciones Java EE de código abierto implementado en Java puro. WildFly es software libre y de código abierto, sujeto a los requisitos de la GNU Lesser General Public License (LGPL), versión 2.1.

Con la configuración predeterminada, en la primera ejecución, cuando escribimos el comando mvn gwt:run en nuestra terminal, el plugin de GWT arrancará un servidor de desarrollo que permitirá abrir la aplicación web. Maven descargará el fichero zip de WildFly en el repositorio local; luego, durante la compilación, la descomprimirá en el directorio destino de compilación del proyecto.

La aplicación se ejecutará dentro de una instancia de este servidor de WildFly, por lo que para configurarlo debe proporcionar las propiedades de WildFly como argumentos de JVM al complemento de GWT:

CARACTERÍSTICAS DE ERRAI

Errai ofrece diferentes funcionalidades que pueden ser habilitadas mediante jars añadidos al fichero pom.xml. Pueden ser añadidas manualmente o mediante línea de comandos en Forge.

  • Mensajería Errai

Esta característica habilita el Errai Bus. Errai Bus es la columna vertebral del sistema de mensajería utilizado para intercambiar mensajes entre endpoints. Los endpoints pueden ser instanciados en el lado del cliente o del servidor y el framework casi no hace ninguna diferencia entre ellos: los mensajes pueden ir desde / hacia cualquiera de ellos. Los mensajes se representan mediante una cadena con formato JSON y se envían a través de una instancia del RequestDispatcher.

  • Integración cdi con Errai

Errai CDI contiene la implementación de las especificaciones de JSR y de inyección de dependencias. También es, por sí misma, una extensión de la función Errai-IOC, por lo que agregar CDI agregará automáticamente IOC. Para que esta función funcione correctamente, se debe agregar un archivo «ErrayApp.properties» en la raíz de cada directorio que contenga clases cuya existencia debe ser conocida por Errai. Además, ha de habilitarse CDIServiceLocator dentro del web.xml.

  • Errai-data-binding

Con el data-binding es posible poblar los campos de la interfaz de usuario. Para habilitar esto, la clase correspondiente debe tener la anotación @Bindable y debería tener los getters y setters estándar para sus propiedades. Los beans con anotación @Templated tendrán los campos automáticamente sincronizados con los valores de estas clases. Para que los campos estén sincronizados ha de añadirse la anotación @Bound a cada campo a sincronizar.

  • Navegación en Errai

Esta característica permite la creación de aplicaciones con páginas marcables. La anotación @Page puede utilizarse para indicar su rol y su ruta, como en el ejemplo siguiente, en el que la función de la página sería ser la página predeterminada de la aplicación.

Con la anotación @Templated,  se indica la plantilla html que queremos utilizar. Sólo las páginas con anotación @Templated, o las clases implementadas con IsWidget directa o indirectamente, pueden tener la anotación @Page. Otras anotaciones se utilizan para llamar a métodos específicos de los eventos de las páginas.

GWT – GOOGLE WEB TOOLKIT

Para desarrollar un proyecto de este tipo, es necesario utilizar GWT o Google Web Toolkit. Es un framework para construir aplicaciones Java de alto rendimiento.

El compilador GWT, es un traductor de código Java a Javascript. El resultado de la compilación es una aplicación Javascript.

El SDK contiene las librerías Java APIs, un compilador, y un servidor de desarrollo. La API de GWT contiene clases para construir interfaces, realizar llamadas al servidor, internacionalización y tests unitarios.

La lógica de este trabajo incluye ajustar clases, métodos y campos del código y acortar nombres Javascript. Debido a esta ventaja, ya no se necesita incluir librerías Ajax en un proyecto Javascript.

Por supuesto también es posible configurar algunos parámetros mientras el código compila. Aquí hay algunos parámetros útiles del compilador GWT:

  • logLevel – para configurar los niveles de los log( ERROR, WARN, INFO, TRACE, DEBUG, SPAM, ALL)
  • workdir – directorio de trabajo el compilador
  • gen – directorio en el que se generan los ficheros
  • out – directorio de los ficheros de salida
  • optimize –  configura el nivel de optimización del compilador de 0 a 9.
  • style – el estilo del script de salida (OBF, PRETTY o DETAILED)
  • module[s] – el nombre de los módulos a compilar

Para configurar el proyecto con Maven, necesitamos añadir algunas dependencias al pom.xml:

Para asegurar que todas las dependencias tienen la misma versión, también necesitamos incluir la dependencia padre de GWT:

Todos los artefactos se pueden descargar de Maven Central.

Una vez configurado esto, podemos ejecutar la instrucción mvn gwt:run en la terminal de la carpeta de nuestro proyecto lo que nos abrirá la interfaz de GWT Development Mode, desde la cual podremos iniciar nuestra aplicación y verla en ejecución.

Existe la opción de recompilar en modo súper desarrollador (“super dev mode”),  La aplicación se cargará en un servidor web a parte, ejecutándose en un puerto diferente (por defecto, en http://localhost:9876/)

CONCLUSIÓN

Errai ofrece una gran cantidad de herramientas para desarrollar una aplicación JEE completa sobre GWT. Errai permite desarrollar aplicaciones web de manera escalable gracias a la división en componentes y la composición de las vistas con ellos. Además de todas las mejoras de la Interfaz de usuario, lo que es realmente interesante es la «abstracción» de los límites entre el lado del cliente y el lado del servidor del código, especialmente para el sistema de mensajería. El uso de MessageBus o Events puede ayudar mucho en la implementación de código desacoplado. Al final, facilitaría el desarrollo y mantenimiento de la aplicación.  

Al estar Errai dirigido a desarrollo sobre JEE y servidores de aplicaciones, es recomendable para entornos empresariales donde se requiere alta estabilidad y escalabilidad.

Muchas gracias por leernos, volveremos a publicar otra interesante entrada en dos semanas, así que  si tenéis alguna duda o sugerencia no dudéis en dejar vuestros comentarios.

Compartir en:

Relacionados