
Client-Server Web Apps with JavaScript and Java
Casimir Saternos
- Editorial
- O'Reilly
- Año
- 2014
- Páginas
- ~260
- Nivel
- Intermedio
De qué trata
Libro de O'Reilly (2014) en el que Casimir Saternos explica a los programadores Java cómo pasar del desarrollo web dirigido por el servidor (JSP, frameworks MVC del lado del servidor) a aplicaciones cliente-servidor: un cliente JavaScript que consume APIs web servidas por la JVM. Está pensado para desarrolladores Java de nivel intermedio que conocen el ecosistema tradicional (Maven, servidores de aplicaciones JEE) y quieren ponerse al día con JavaScript, REST y las herramientas front-end de su época.
El autor explica primero por qué separar cliente y servidor (organización del código, prototipado rápido, productividad y rendimiento) y repasa JavaScript desde la mirada de un programador Java: ámbito, funciones de primera clase, objetos y buenas prácticas. Luego trata REST y JSON a fondo (restricciones de REST, códigos HTTP, HATEOAS, diseño práctico de APIs), las librerías JSON para Java, Maven y los puntos de partida del front-end: HTML5 Boilerplate, Bootstrap, plantillas en el cliente y asset pipelines. Hay un amplio repaso de servidores ligeros en la JVM: el servidor HTTP de Java, Jetty y Netty embebidos, Restlet, Spring Roo, Play y Jython. Los capítulos finales abordan empaquetado y despliegue (JEE frente a servidores embebidos), virtualización con VirtualBox, Amazon EC2, Vagrant, Packer y Docker, y pruebas con JUnit, Jasmine y Cucumber.
Casi todos los capítulos terminan con un pequeño proyecto, entre ellos un cliente jQuery sobre un servidor Jython y una aplicación AngularJS con un backend JRuby y Sinatra. Lo valioso del libro es su visión de arquitectura: argumenta bien por qué conviene desacoplar el front-end y cómo encajar la JVM en ese modelo. Pero en el lado del cliente ha envejecido (jQuery y AngularJS 1.x) y no cubre Spring Boot ni los frameworks SPA modernos. Es más un panorama amplio que un tratado profundo de una sola pila, y conviene llegar con buena base de Java.
- Arquitectura cliente-servidor
- REST
- JSON
- Diseño de APIs web
- Java y JVM
- Maven
- Jetty y Netty
- Play Framework
- jQuery
- AngularJS
- Docker y Vagrant
- JUnit, Jasmine y Cucumber
¿Cómo enseña?
Teoría + práctica
- ✗ Sin ejercicios
- ✓ Incluye proyectos
Proyectos
API JSON con Java y lenguajes de la JVM
Proyectos que generan y consumen JSON desde Java y desde lenguajes de scripting de la JVM, y una API diseñada siguiendo las pautas del libro que se prueba con curl y jQuery.
Cliente jQuery con servidor Jython
Aplicación con un servidor web en Jython que ofrece APIs simuladas y un cliente en HTML y jQuery que recorre el DOM y hace llamadas Ajax.
Aplicación AngularJS con JRuby y Sinatra
Backend ligero con Sinatra sobre JRuby que procesa JSON, consumido por un cliente AngularJS. Sirve para comparar la manipulación directa del DOM con jQuery y el enfoque basado en el modelo de Angular.
Despliegue, contenedores y pruebas
Proyectos prácticos para empaquetar y desplegar el cliente y el servidor, ejecutar Java en Docker junto con Vagrant, y montar pruebas con JUnit, Jasmine y Cucumber, con informes de Maven Site.

