WildFly – 1. Introducción
Antes de comenzar con WildFly, primero vamos a definir algunos conceptos importantes. La tecnología Java está compuesto por un lenguaje de programación y una plataforma. El lenguaje de programación Java es un lenguaje orientado a objetos de alto nivel que tiene una sintaxis y un estilo específico. Una plataforma Java es un entorno específico en el que se ejecutan las aplicaciones del lenguaje de programación Java.
Java
Es un lenguaje de programación ampliamente conocido. Su popularidad se debe al hecho de que el lenguaje se compila en un código intermedio conocido como Bytecode. Este se ejecuta dentro de la máquina virtual Java (o JVM). Esta caraterística permite al desarrollador preocuparse solamente de programar lo que realmente es necesario, dejando cuestiones como recolección de basura (Garbage Collection), gestión de memoria, entre otros a la máquina virtual Java. Actualmente otros lenguajes de programación, como .NET y Python, utilizan esta característica.
La máquina virtual Java (JVM) no sólo ejecuta programas escritos en el lenguaje Java, sino también otros lenguajes. En la actualidad, es posible ejecutar programas escritos en Groovy, Scala, Python, Ruby y otros en la máquina virtual Java debido a que estos lenguajes ofrecen compiladores que permiten crear el Bytecode.
Plataforma Java
La plataforma Java, desde su concepción, recibió algunas divisiones, entre ellos podemos citar:
Java Standard Edition (o Java SE): Es el nombre dado a la plataforma en su más básica utilización. Cubre toda la implementación del lenguaje Java, el Bytecode y la JVM.
Java Enterprise Edition (o Java EE): Es el nombre dado a la plataforma con foco en aplicaciones corporativas. Cubre características como persistencia de datos, distribución, seguridad entre otros. Desde la versión 1.6 de Java EE la plataforma se dividió en dos perfiles (profiles): web y full.
Java Micro Edition (o Java ME): Es el nombre dado a la plataforma cuyo foco está en dispositivos embarcados (Smartphones, Impresoras, Set-top boxes, Microcontroladores entre otros). Esta plataforma se divide dos perfiles: CLDC (Perfil con foco en dispositivos con conexión limitada o ninguna conexión a Internet) y CDC (Un perfil con enfoque en dispositivos que tienen conexión a Internet).
Java Card: Una plataforma con foco en el desarrollo de aplicaciones que utilizan Smart Cards.
Java TV: Una plataforma con foco para TV Digital.
Nuestro objetivo se centra en Java Enterprise Edition (o Java EE), donde WildFly implementa sus características.
Plataforma Java EE (Jakarta EE)
Java EE desde inicios de 2018 fue transferida y ahora es administrada por Eclipse Foundation. El nuevo nombre de la plataforma es Jakarta EE (Java EE 8 es tomado como base para Jakarta EE).
Java User Groups (o JUG) y otras empresas definen las próximas tecnologías que se van a desarrollar en las próximas versiones de Jakarta EE, esto es conocido como processo de la comunidad Java Java Community Process (o JCP). En ella, es posible discutir cuáles serán las nuevas tecnologías a ser agregadas en las próximas versiones.
Todo el proceso de agregar o mejorar una determinada tecnología de la Plataforma Java se realiza a través de un proceso formal llamado Java Specification Request (o JSR), donde se le asigna un grupo de expertos que trabaja para discutir la especificación de esta tecnología. Siendo así, el comité ejecutivo JCP define como determinada plataforma debe ser construida, quedando a cargo de las empresas interesadas en tener un software alineado a aquella plataforma implementar esas especificaciones.
Oracle, Red Hat e IBM son las principales empresas que trabajan para implementar estas especificaciones en sus soluciones.
WildFly, es una implementación de la plataforma Java EE (Jakarta EE). La versión más reciente es Java EE 8 y se ha implementado en WildFly 14.
Java EE (Jakarta EE)
Java EE es un conjunto especificaciones (JSR -Java Specification Request ) ampliamente usado en el desarrollo de aplicaciones corporativas. Ofrece una solución robusta, portable , escalable y atiende demandas de acceso, gestión de transacciones, seguridad, mensajería, entre otros. El objetivo de la especificación Java EE es estandarizar el uso de determinadas tecnologías.
Para usar esta plataforma es necesario un servidor de aplicaciones. Este servidor va a proveer la infraestructura necesaria para subir la aplicación. Hoy existen varias de servidores homologados y certificados para Java EE 7 y Java EE 8. Para Java EE 8 fueron consideradas las siguientes especificaciones:
CDI 2.0 (JSR 365) : Inyección de Contexto y Dependencia (Contexts and Dependency Injection) – Conjunto de servicios complementarios que mejora la estructura del código de una aplicación.
JSON-B 1.0 (JSR 376): Especificación para convertir objetos Java hacia mensajes JSON y viceversa. Proceso de mapeo a través de anotaciones Java.
Servlet 4.0 (JSR 369): Soporte para es HTTP/2.0 y Server Push, esto significa mayor rendimiento para las aplicaciones JSF.
JAX-RS 2.1 (JSR 370) : Tecnología definida como parte de HTML 5 que establece recomendaciones para que un cliente obtenga actualizaciones desde el servidor HTTP de manera automática.
JSF 2.3 (JSR 372): Tecnología que simplica la construcciones de interfaces para aplicaciones JavaServer. Ahora permite invocar métodos de un Managed Bean (CDI) directamente desde Ajax, permitiendo responder usando el estándar JSON. Rendimiento optimizado en EL, y aclaraciones Ajax cruzadas. Compatibilidad com MVC 1.0.
JSON-P 1.1 (JSR 374): JSON Patch, JSON Merge y JSON Pointer. Uso de streams y lambdas de Java SE 8.
Security 1.0 (JSR 375): Usado en la nube/PaaS. Promueve portabilidad y el uso de lenguajes de expresión, e inyección de depedencia y contexto.
Bean Validation 2.0 (JSR 380): Especificación que permite expresar restricciones en objetos usando anotaciones, además de crear propias restricciones.
Servidor de aplicación
Un servidor de aplicación proporciona todo un entorno para el despliegue y mantenimiento de aplicaciones, siguiendo las especificaciones Java EE, además de poseer una API para acceder a todos estos recursos.
WildFly 14 implementa las especificaciones Java EE 8, también conocida como JEE 8, y es compatible con Java EE 7.
WildFly
WildFly (Antes se llamaba JBoss AS), es un servidor de aplicaciones open source, escrito en Java. Se basa en especificaciones Java EE y es mantenido por Red Hat. En el año 2000 fue lanzada la primera version JBoss AS, en el año 2013 el proyecto fue renombrado para WildFly (WildFly 8), y asi surgieron varias versiones hasta hoy 2018, con WildFly 14. El servidor de aplicaciones es mantenido por un grupo de desarrolladores en el formato de código abierto.
Entre las características de WildFly tenemos:
– Un arranque más veloz, el proceso de arranque ha sido optimizado desde WildFly 8, los procesos se inician paralelamente y aprovechan el poder de los procesadores multi-core. Los servicios no críticos se mantienen congelados hasta el primer uso.
– WildFly inserta un nuevo web server de alto rendimiento, el undertow que tiene la capacidad de escalar más de un millón de conexiones. Esto nos da la capacidad de satisfacer algunos requisitos de las modernas aplicaciones web, como conectividad y escalabilidad.
– WildFly ha hecho cambios significativos en la administración de memoria. Con la división de class loading em modulos, el servidor de aplicación evita clases duplicadas y que se inician más módulos de lo necesario. Con ello el uso de memoria inicial es reducido, y también se evita que el garbage collector quede pausando el sistema.
– La configuración de WildFly es fácilmente gestionada, desarrollada con enfoque en el usuario. Hay tres formas de administrar: Edición de XML, línea de comandos y utilizando el administrador web.
– Es posible ejecutar el WildFly de dos modos: Standalone (una JVM) o Domain (varias JVM). En el caso de que el servidor de aplicaciones provee al desarrollador la capacidad de crear aplicaciones web con más facilidad y agilidad.
– Wilfdly también permite trabajar con las nuevas especificaciones para web moderna, como Websockets, JSON-P, REST, JAX-RS 2, etc. Todo esto gracias al Undertow.
En el siguiente artículo hablaremos sobre estas novedades y la instalación paso a paso de wildFly en linux.