Tecnologías para una nueva aplicación web

Siempre que empiezo un nuevo proyecto de aplicación web evaluo la situación, requerimientos y estado de la tecnología y acabo, para bien o mal, liándome con alguna tecnología nueva.

Estas son las tecnologías utilizadas en mi último proyecto. Por supuesto en el siguiente pueden cambiar...

Tecnologías

Back-end

  • Java: Java como lenguaje de programación base para el servidor.
  • Tomcat: El servidor de aplicaciones web Tomcat.
  • FlyWay: Permite gestionar las versiones y migraciones de la base de datos de nuestra aplicación de una manera automatizada y ordenada.
  • jOOQ: Sin ser un ORM permite generar y ejecutar código SQL asociado a nuestro esquema de datos de manera segura (type safe).
  • jOOL: Expande sobre las nuevas funcionalidades de Java 8 (lambdas, streams...)
  • Guava: Libreria de utilidades variadas para el lenguaje Java mantenidas por Google.
  • Guice: Libreria de Google para inyección de dependencias.
  • Jersey: Libreria servidor y cliente de servicios web RESTful. Implementación de referencia del API oficial de Java JAX-RS.
  • Logback: Libreria para logging.
  • Mailgun: <autobombo>Libreria Java para enviar correos electrónicos fácilmente utilizando el servicio Mailgun.</autobombo>

Front-end

  • AngularJS: Framework cliente para aplicaciones web mantenido por Google.
  • Bootstrap: Framework HTML y CSS para creación de sitios adaptables (responsive).
  • Moment.js: Libreria JavaScript para trabajar con fechas.
  • Font Awesome: Iconos vectoriales para la interficie de la aplicación.

Build

  • Gradle: El gestor principal de las dependencias (del back-end) y el build.
  • Grunt: Automatiza las tareas relacionadas con las librerias del front-end.
  • Bower: Gestión de dependencias del front-end.
  • Git: Gestor de repositorios de código distribuidos.

Test

  • JUnit: El framework Java por excelencia para pruebas unitarias.
  • Mockito: Para generar impostores y facilitar los juegos de pruebas.
  • Powermock: Añade funcionalidades a Mockito.
  • Karma: Ejeuctar los juegos de pruebas del front-end.
  • Jasmine: Define los juegos de pruebas del front-end.

En el punto de mira...

Algunas tecnologías o versiones que aún no estan listas pero tengo en el punto de mira para futuras versiones.

  • AngularJS 2: La próxima versión de Angular viene con muchas novedades.
  • Bootstrap 4: Cambios significativos en la siguiente versión mayor de Bootstrap.
  • Angular Material Design: Como alternativa a un diseño basado en Bootstrap me parece interesante probar un diseño web con Material Design.