API Spark Java

Cómo crear un API con Spark Java

No es un secreto que el enfoque de Java hacia las aplicaciones web empresariales ha generado opiniones encontradas. Por una parte, Java EE es una arquitectura ideal para hacer aplicaciones de ese tipo, pues el servidor provee características importantes como la seguridad; sin que el desarrollador deba preocuparse por eso. Sin embargo, esto también provoca que sea más complicado desarrollar proyectos más livianos;  pues se requiere de varias configuraciones para lograr hacerlo funcionar.

Por esta razón, han surgido varias iniciativas para evitar que la popularidad de Java en la web disminuya. Actualmente, ocupa el tercer lugar en popularidad de lenguajes del lado del servidor. Por debajo de PHP y ASP .NET y por encima de lenguajes como Python y Ruby.

Esas iniciativas no apuntan a que se deje de lado a Java EE; sino que buscan solucionar las necesidades de los nichos de las aplicaciones web empresariales.

Por otro lado, también surgieron otras que buscan solucionar necesidades menos exigentes de una forma más ágil; y ese es el caso del framework Spark Java. Se trata de un framework web liviano inspirado en Sinatra (framework basado en Ruby), que permite crear aplicaciones web con Java 8 con el mínimo esfuerzo.

El objetivo principal de este artículo es introducir el framework y crear una solución sencilla que te permita entender cómo podrías hacer uso del mismo. Para poder seguir el tutorial es necesario que tengas instalado el Java Development Kit 8 (JDK 8). Se puede instalar en Windows, Mac o Linux y descargar en la página oficial de Oracle.

Adicionalmente, requerirás de un entorno de desarrollo (IDE) para Java que te permita crear un proyecto de Maven. Puedes hacer uso de Eclipse, IntelliJ o NetBeans. En mi caso, voy a hacer uso de la versión 8.0.2 de NetBeans para Java EE.

Y si estás iniciando en el desarrollo de aplicaciones con este lenguaje, no te puedes perder el curso gratuito de Java Básico en Platzi. Aprenderás todo lo que necesitas saber para crear proyectos desde cero.

¿Qué es Spark?

Es un micro framework web de Java basado en Sinatra, cuyo tamaño total no excede 1 MB. Para poder mantener un código limpio, los desarrolladores decidieron dejar de soportar Java 7 y aprovechar la simplicidad que ofrece Java 8. Por esta razón, en Spark 2 sólo se puede desarrollar con esta versión del lenguaje.

En las imágenes abajo puedes observar el cambio que hubo en el Hello World de Spark 1 a Spark 2.

Hello World en Spark 1

API Spark Java

Hello World en Spark 2

API Spark Java

¿Para qué se usa Spark?

Aunque Spark está basado en Sinatra, no se presenta como una competencia. Su finalidad es que haya una alternativa para los desarrolladores Java, que les permita desarrollar rápidamente aplicaciones web con el lenguaje que ya conocen.

Según una encuesta que realizó el equipo de Spark este año, se dio a conocer que alrededor del 50% de los usuarios de Spark lo usan para crear APIs REST y un 25% lo usa para crear páginas web. También mencionan que el 15% de las aplicaciones Spark desplegadas sirven a más de 10.000 usuarios a diario. Con estos datos podemos concluir que es un framework adecuado si la finalidad es construir un API con Java de forma ágil.

Creando un Hello World

Después de haber instalado el JDK 8 y Netbeans para Java EE, abriremos el último y crearemos un nuevo proyecto File > New project. En el diálogo seleccionamos la carpeta Maven y elegimos Java Application. A continuación seleccionamos la opción Next.

API Spark Java

En el siguiente diálogo ingresamos el nombre del proyecto y damos clic en Finish.

API Spark Java

De esta manera, NetBeans creará un proyecto con la estructura de un proyecto Maven. Los elementos sobre los que trabajaremos serán el paquete ubicado en Source Packages y el archivo pom.xml  ubicado en Project Files.

API Spark Java

Si abrimos el archivo pom.xml encontraremos un contenido parecido al siguiente:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.peewah</groupId>
        <artifactId>holaplatzi</artifactId>
        <version>1.0-SNAPSHOT</version>
        <packaging>jar</packaging>
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <maven.compiler.source>1.7</maven.compiler.source>
            <maven.compiler.target>1.7</maven.compiler.target>
        </properties>
</project>

Lo que debemos hacer a continuación es agregar la dependencia de Spark al archivo para que Maven lo instale en el proyecto. Nuestro archivo pom.xml quedaría así:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.peewah</groupId>
        <artifactId>holaplatzi</artifactId>
        <version>1.0-SNAPSHOT</version>
        <packaging>jar</packaging>
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <maven.compiler.source>1.7</maven.compiler.source>
            <maven.compiler.target>1.7</maven.compiler.target>
        </properties>
   
        <!-- Dependencias de Maven -->
        <dependencies>
            <!-- Dependencia Spark Java -->
            <dependency>
                <groupId>com.sparkjava</groupId>
                <artifactId>spark-core</artifactId>
                <version>2.3</version>
            </dependency>
        </dependencies>
</project>

Para que Maven instale la librería, debemos dar clic derecho sobre el proyecto y seleccionar la opción Build. Al terminar la compilación, nuestro proyecto tendrá instalado Spark Java.

Ahora que ya configuramos lo necesario para agregar Spark Java al proyecto, vamos a escribir el código necesario. Para lograrlo damos clic derecho sobre el paquete en Source Packages, seleccionamos New y luego Other.

API Spark Java

En el diálogo seleccionamos la carpeta Java; elegimos Java Class y damos click en Next.

API Spark Java

En el siguiente diálogo escribimos el nombre de nuestra clase, HolaPlatzi en este caso, y seleccionamos Finish.

API Spark Java

NetBeans nos crea nuestra clase y la coloca dentro del paquete que hemos creado previamente. El código inicial debe ser algo así:

package com.peewah.holaplatzi;
/**
 *
 * @author csacanam
 */
public class HolaPlatzi
{
   
}

A continuación, agregaremos el código necesario para crear un servicio web de tipo GET que retorne un mensaje que podremos observar en el navegador. Para lograrlo debemos crear el método main, que es el punto de entrada en una aplicación Java. Dentro de main se agrega el servicio web de tipo GET.

En la línea de código donde lo definimos, es necesario especificar el tipo, la ruta (/hello), los parámetros req (request) y response (res) y por último, el mensaje que se va a mostrar en el navegador. Así, la clase que creamos anteriormente debe quedar así:

package com.peewah.holaplatzi;
import static spark.Spark.*;
/**
 *
 * @author csacanam
 */
public class HolaPlatzi
{
        public static void main(String[] args)
        {
            get("/hello", (req, res) -> "Hola Platzi. Saludos desde Peewah.");
        }
}

Si NetBeans indica que hay un error por las expresiones lambda, debemos dar clic derecho sobre el proyecto y seleccionar Properties. En la categoría Sources debemos cambiar la opción Source/Binary Format a 1.8. Esto sólo estará disponible si hemos instalado previamente el JDK 8.

Para ejecutar el proyecto, elegimos la opción correr proyecto en el botón verde en la parte superior o presionamos F6. Al hacer esto, se abrirá un diálogo donde se indicará que seleccionemos la clase principal (hasta el momento solamente tenemos creada una). Después de esto, presionamos la opción Select Main Class.

API Spark Java

Después de unos cuantos segundos la consola nos muestra un mensaje similar al mostrado a continuación, indicando que el servidor está corriendo por el puerto 4567. Este es el puerto por defecto de Spark Java. Sin embargo, podemos modificarlo si así lo deseamos.

API Spark Java

Para probar que nuestro servicio web está funcionando, abrimos nuestro navegador de preferencia y ponemos la dirección http://localhost:4567/hello. El resultado del navegador deberá mostrar algo así:

API Spark Java

Y así es como logramos crear de forma sencilla y rápida un servicio web con Spark Java que retorna un mensaje de saludo. Si te interesa saber más y conocer el potencial de este framework web y, además, aprender a escribir y leer código en Java, buenas prácticas de programación, paradigma de orientación a objetos y todos los elementos que necesitas para programar desde cero; regístrate hoy al curso gratuito de Java Básico en Platzi.

Entrar al curso Sketch

Puedes encontrar el código acá: https://github.com/csacanam/HolaPlatziSparkJava


¡Hasta el 7 de Enero! Disfruta de Platzi Reyes, obten todos los cursos de Platzi por un precio especial.