Spark: Framework ligero en Java

SparkSpark es básicamente un framework ligero en Java. Tal y como lo describen en su web oficial, Spark es un micro framework inspirado en Sinatra para la creación de aplicaciones web en Java de forma rápida y con el mínimo esfuerzo. Es tan minimalista que su página principal viene directamente el ya mítico “Hello World” como principal ejemplo de uso.

Spark se centra en desarrolladores que deseen escribir sus aplicaciones puramente en Java, de la forma más simple y directa posible, y sin necesidad de engorrosos ficheros de configuración (XML normalmente) como poseen muchos de los frameworks más completos que existen en la actualidad, como Spring, aunque cada día esta tarea se hace más sencilla. Por otro lado, también es un paradigma totalmente diferente en comparación con el uso ( a veces excesivo) de anotaciones, como se puede ver en JAX-RS por ejemplo, para llevar a cabo muchas veces tareas relativamente sencillas.

De esto se deduce que está especialmente pensado para desarrolladores de la antigua escuela (volvemos a los 90) que no tengan ganas de complicarse la vida aprendiendo anotaciones y de pelearse con las infinitas formas de configurar algunos frameworks.

Yo, personalmente, pienso que es una idea bastante buena aunque el uso de anotaciones y ficheros de configuración te facilitan mucho la tarea en grandes desarrollos, lo cual no es la finalidad de Spark como ya se ha comentado. En concreto, JAX-RS e Hibernate por ejemplo, tienen un buen sistema de anotaciones a mi parecer y su aprendizaje resulta bastante ameno.

¿Por qué este artículo entonces? Pues porque pienso que es muy útil para aplicaciones sencillas y esto facilita la tarea de realización de tutoriales por ejemplo. En este caso concreto, se va a usar como parte del tutorial de MongoDB con Java que se va a ir desarrollando en este blog.

Tiene pocas características pero muy enfocadas:

  • Rutas: Permite manejar las peticiones HTTP (GET y POST normalmente) especificándolas de forma secuencial. De esta forma, se especifica para cada URL, en definitiva, la lógica de negocio que debe realizar.
  • Request y Response: Otorga un completo control sobre las cabeceras y funcionalidades de HTTP, permitiendo recibir y enviar objetos. La interfaz que provee para esto es prácticamente la misma que la API de los Servlets.
  • Filtros: Los filtros son una serie de funcionalidades que se pueden insertar antes o después de la ejecución de una solicitud. Puede realizarse sólo para ciertas rutas o para todas ellas.

Dicho esto, pasemos a un ejemplo de aplicación web con Spark, y sí, se trata del Hello World:

public class HelloWorld {

   public static void main(String[] args) {

      get(new Route("/hello") {
         @Override
         public Object handle(Request request, Response response) {
            return "Hello World!";
         }
      });

   }

}

Una de las cosas que más me ha gustado de este framework es que lleva el contenedor de Servlets Jetty embebido y, esto, facilita y acelera las diversas pruebas de la aplicación web. Para probar el ejemplo anterior tan sólo se tendría que ejecutar (Run o debug) desde nuestro IDE favorito (Eclipse, IntelliJ, Netbeans) y automáticamente se arrancará Jetty y se puede ver el resultado en la siguiente URL:

http://localhost:4567/hello

El puerto por defecto es 4567 (sí, se lo han currado) y obviamente puede cambiarse. Se puede descargar usando maven, tal y como explican en su web oficial, o descargarlas directamente desde google code.

Espero que os haya parecido interesante un framework tan ligero y de rápido desarrollo como es Spark y, si os habéis quedado con ganas de más no os preocupéis pues se irá profundizando en el tutorial de MongoDB con Java.

Happy Minds!

Share on FacebookTweet about this on TwitterShare on LinkedInShare on RedditShare on Google+Digg thisShare on TumblrPin on PinterestBuffer this pagePrint this pageEmail this to someone