Java Web Development – ¿Alguna novedad?


Desde hace algún tiempo venía buscando un framework Web ligero para Java. En ese proceso encontré algunos frameworks que quiero comentar.

Spark framework – A tiny Java Web framework

Aclaración, Spark framework no tiene relación alguna con Spark de Scala. El primero es un framework para crear aplicaciones Web, mientras que el segundo es para el procesamiento de BigData.

Link

Desde mi punto de vista, su principal característica es la simplicidad y su utilidad está en el desarrollo rápido de servicios REST para prototipos o educación, en cuestión de segundos puedes tener un API Web funcional sin mayor esfuerzo.

Como ya lo mencioné se puede usar en educación para una introducción rápida a REST y Java 8 (lambdas) ya que usa esa característica de Java. Algo de código:

import static spark.Spark.*;

public class HelloWorld {
    public static void main(String[] args) {
        get("/hello", (req, res) -> "Hello World");
    }
}

Y para ejecutarlo visitar: http://localhost:4567/hello

Vert.x

Link

Vertx es un framework diferente, completo y específico para tareas de alto desempeño muchos lo llegan a comparar con Node.js. Lo que me llamó la atención es su arquitectura, la forma de comunicación que emplea entre los componentes del lado del servidor, el uso de nuevos estándares como WebSockets y finalmente que es políglota se puede usar con Javascript, Java, Ruby, Groovy, Python, Clojure, Ceylon y pronto en Scala.


public class ApiServer extends Verticle {

   @Override
   public void start() {
      HttpServer server = vertx.createHttpServer();
      RouteMatcher routeMatcher = new RouteMatcher();

      routeMatcher.get("/users/", new Handler<HttpServerRequest>() {
         @Override
         public void handle(HttpServerRequest request) {
            request.response().putHeader("content-type", "text/plain");
            request.response().end(String.format("%s[%s]\n", request.path(), request.method()));
         }
      });
   }
}

Y para ejecutarlo se debe visitar: http://localhost:8080/users

Si bien los frameworks anteriores tienen su utilidad yo buscaba algo diferente, algo más orientado al desarrollo de clientes Web que por ejemplo maneje un sistema de Templates.

Ninja Web framework

Link

Completo para mis necesidades, simple, elegante y bastante potente. Desarrollé mi primera aplicación Ninja y me fue muy bien.

Este framework tiene muchas características y su propia filosofía, no existen sesiones manejadas en el servidor y el uso de un grupo de estándares Java perfectamente integrados que hace que el desarrollo sea rápido, orientado a las pruebas y extensible.

Para los relacionados con Scala, Ninja es algo así como un fork de Play y como leí en algún lado sigue en algo la filosofía de Rails de Ruby.

En resumen un framework Web orientado a acciones y no a componentes, que desde mi punto de vista es la tendencia.

Algo de código, así se manejan las rutas en Ninja:


public class Routes implements ApplicationRoutes {

@Inject
NinjaProperties ninjaProperties;

@Override
public void init(Router router) {

///////////////////////////////////////////////////////////////////////
// Login / Logout
///////////////////////////////////////////////////////////////////////
router.GET().route("/login").with(LoginLogoutController.class, "login");
router.POST().route("/login").with(LoginLogoutController.class, "loginPost");
router.GET().route("/logout").with(LoginLogoutController.class, "logout");

...

También existen otros frameworks:

Y poco tiempo después se anunció que la nueva versión de Java EE tendrá un nuevo framework MVC orientado a acciones (así como Ninja), detalles aquí.

Deja un comentario