Aplicación web con Spark framework y Java

Escrito por el , actualizado el .
java planeta-codigo programacion
Enlace permanente Comentarios

Spark framework es un microframework web para Java que además hace uso de las novedades introducidas en la versión 8 del lenguaje. Para una aplicación no compleja o de un tamaño reducido permite desarrollar con su sencillez la funcionalidad de la aplicación inmediatamente y una arquitectura liviana.

Spark

Java

La cantidad de frameworks web disponibles en Java incluso para la misma tarea es notable, a veces cuesta decidirse por uno, sin embargo, tampoco es cuestión de elegir cualquiera. Deberemos evaluar las necesidades de la aplicación y las opciones que consideramos como adecuadas. Spark Framework es un microframework simple y sencillo, sin muchas de las funcionalidades de otras opciones más completas y complejas y que quizá no necesitemos. Su funcionalidad es suficiente capaz para servirnos en múltiples casos, uno de ellos es una API REST, otro una página web dinámica sencilla, prototipos funcionales, … su sencillez hace que podamos empezar a hacer cosas en poco tiempo. Spark es un framework muy sencillo al estilo de otros disponibles en otros lenguajes pero para la plataforma Java, ofrece soporte para las nuevas características introducidas en la versión 8 de Java que facilitan la tarea de programación como las lambdas.

Con la aparición de los dispositivos móviles algunas aplicaciones están cambiando su arquitectura. Para evitar duplicar funcionalidades si la aplicación es accedida mediante un navegador, una aplicación de escritorio, mediante un dispositivo móvil en el que queremos aprovecharnos de sus características nativas o queremos que una tercera parte se integre con la aplicación las aplicaciones, en vez de generar HTML en el servidor ofrecen una API REST con la que todos estos clientes se comunican para solicitar los datos o realizar las operaciones que necesitan, una vez que los clientes obtienen los datos estos presentan la información adecuadamente según el dispositivo.

En Java podemos desarrollar una interfaz REST usando RESTEasy pero también tenemos otras opciones, una Spark. En este artículo comentaré cómo hacer un ejemplo hola mundo usando Spark como opción si no necesitamos todas las funcionalidades que ofrecen otros frameworks más complejos y de mayor tamaño.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
package io.github.picodotdev.blogbitix.spark;

import static spark.Spark.get;

public class HolaMundoSpark {

    public static void main(String[] args) {
        get("/hola", (req, res) -> "¡Hola mundo!");
    }
}
HolaMundoSpark.java
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
description = 'HolaMundoSpark'
version = '0.1'

apply plugin: 'eclipse'
apply plugin: 'java'
apply plugin: 'application'

mainClassName = 'io.github.picodotdev.blogbitix.spark.HolaMundoSpark'

repositories {
    mavenCentral()
}

dependencies {
	compile 'com.sparkjava:spark-core:2.3'
}

task wrapper(type: Wrapper) {
	gradleVersion = '2.10'
}
build.gradle

Spark ofrece un marco de trabajo en el que podemos crear rutas con las que asociar URLs con las acciones necesarias para devolver el resultado y las funcionalidades básicas de la parte de la interfaz web como acceso a la Request y Response, Cookies, Sessiones, Filtros, Redirecciones, manejo de excepciones o servir recursos estáticos y algunas integraciones para generar HTML con algunas librerías de plantillado como Thymeleaf, Freemarker o Mustache entre otras, la documentación en unas pocas horas se lee completamente.

Aunque en una aplicación REST no será necesario usar vistas con plantillas ya que el resultado más comúnmente empleado para proporcionar los datos es JSON probablemente sí que necesitemos usar persistencia en una base de datos con Hibernate o mejor aún con jOOQ o para facilitarnos la vida de programación queramos disponer de Inversion of Control e inyección de dependencias, la opción más común es emplear el contenedor de servicios Spring con la que además podremos proporcionar transacciones si nos conectamos a una base de datos relacional, seguridad también con Spring o con Shiro, Spring Boot como forma de iniciarlizar la aplicación, Spring Cloud Config para configuración en múltiples entornos, Spring Boot Actuator para obtener métricas… en definitiva tendremos libertad de elegir las librerías que consideremos adecuada para la tarea aunque la responsabilidad de realizar la integración será nuestra. Al final del artículo incluyo enlaces comentando varias de estas librerías específicamente.

Terminal

El código fuente completo del ejemplo puedes descargarlo del repositorio de ejemplos de Blog Bitix alojado en GitHub y probarlo en tu equipo ejecutando siguiente comando:
./gradlew run

En la dirección http://127.0.0.1:4567/hola obtendremos el mensaje de este ejemplo.

Otra opción usando Java u otros varios lenguajes para los que se ofrece soporte, basado en la programación reactiva y más escalable si llegamos a ese punto de necesidad es Vert.x que describo y muestro en otro ejemplo básico.


Comparte el artículo: