Java: Los 5 mejores frameworks para desarrollo Web
Tags: java, spanish
Published: 2019-12-30 09:26:11

---
title: Java: Los 5 mejores frameworks para desarrollo Web
published: true
date: 2019-12-23 08:00:00 UTC
tags: Java, Spanish
cover_image: https://www.campusmvp.es/recursos/image.axd?picture=/2017/4T/Java.png
canonical_url: https://www.campusmvp.es/recursos/post/java-los-5-mejores-frameworks-para-desarrollo-web.aspx
---

>Post original en [campusMVP](https://www.campusmvp.es/recursos/post/java-los-5-mejores-frameworks-para-desarrollo-web.aspx)


**Java** es sin duda el lenguaje más demandado en el mercado laboral. Sirve para crear **todo tipo de aplicaciones** : desde el móvil hasta el servidor, pasando por el escritorio o la Web. Y es esto último precisamente lo que nos ocupa hoy: el **desarrollo Web**.

Aunque Java ofrece de serie todo lo necesario para crear aplicaciones para Internet, no sería muy inteligente ceñirse tan solo a eso, al igual que no lo haríamos así con ninguna otra plataforma. Simplemente sería demasiado complejo. Así que para abstraernos de la necesidad de bajar mucho de nivel, existe **una amplia oferta de _frameworks_ Java que nos ayudan con el desarrollo Web** , ofreciéndonos ya hechas muchas de las funcionalidades que necesitamos: desde acceso a bases de datos, gestión de sesiones, creación de servicios, servir contenidos estáticos, crear vistas.... y por supuesto reutilizar código, probarlo, etc...

Para orientarte en el camino sobre qué aprender para desarrollar aplicaciones Web con Java hemos creado esta lista con **los 5 frameworks más importantes** , los cuales son todos **gratuitos y _Open Source_** :

## [1.- Spring MVC](https://spring.io/)

![Imagen ornamnetal - Logo de Sping](https://www.campusmvp.es/recursos/image.axd?picture=/2019/4T/java-frameworks-spring.png)

El conocido _framework_ Spring es seguramente el más popular y utilizado del mundo. Se trata de un _framework_ de desarrollo de aplicaciones ligero para Java EE que en realidad se puede utilizar para todo tipo de aplicaciones, no sólo para la Web, pero que es especialmente útil para éstas. 

Nos ayuda a crear cualquiera de las capas de la aplicación, cosa en la que otros _frameworks_ son más limitados. Dispone de varios _sub-frameworks_ como:  **Spring Core** , que dota de funcionalidad a todo lo demás;  **SpringMVC** , para la parte que UI que se devuelve al navegador; **Spring ORM** , para el acceso a datos; **Spring Security** , para autenticación y autorización de las aplicaciones; etc...

Aumenta la productividad, reduce los errores y hace que las aplicaciones sean más fáciles de mantener. Soporta la configuración de su comportamiento a partir de XML o mediante anotaciones en el código. Permite usar JDBC para el acceso a datos si lo preferimos. También facilita el _testing_ del código web. Ofrece una documentación muy buena.

Lo utiliza... prácticamente todo el mundo, pero hay muchas empresas conocidas que desarrollan con Spring: **Netflix** , **Amazon** o **eBay** por poner algunos ejemplos.

## [2.- Hibernate](https://hibernate.org/)

![Imagen ornamental - Logo de Hibernate](https://www.campusmvp.es/recursos/image.axd?picture=/2019/4T/java-frameworks-hibernate.png)

Vale, esto no es específico para desarrollo Web, sino para cualquier desarrollo con Java que utilice acceso a datos. Pero es el _framework_ de datos más utilizado del mundo y en cualquier desarrollo web lo vas a acabar utilizando.

Hibernate es **[un ORM](https://www.campusmvp.es/recursos/post/que-es-un-orm.aspx)** que nos permite crear la capa de acceso a datos de nuestra aplicación utilizando objetos en lugar de consultas, disminuyendo la fricción entre el mundo de las bases de datos relacionales y la Programación Orientada a Objetos. Vamos, como cualquier ORM. La diferencia con otros es que Hibernate es con diferencia el más utilizado y ello significa que hay mucho más soporte y comunidad que para cualquier otro y te resultará más fácil resolver cualquier problema y obtener nuevas funcionalidades.

Su mayor desventaja es seguramente su tamaño y que puede resultar complejo a veces. Pero es algo que, si programas en Java hay que conocer sí o sí.

Al igual que en el caso de Spring, Hibernate lo usa casi todo el mundo para desarrollar en Java: la propia **Oracle** , **IBM** , **Accenture**...

## [3.- Struts](https://struts.apache.org/)

![Imagen ornamental, logo de Struts](https://www.campusmvp.es/recursos/image.axd?picture=/2019/4T/java-frameworks-struts.png)

Otro _framework_ de desarrollo para Java lleno de características, mantenido en este caso por la **Fundación Apache**. Es bastante antiguo pero por el mismo motivo está muy probado y lo utiliza mucha gente, y sacan versiones constantemente. Es comparable en muchos sentidos con Spring, que mencionamos antes. Está basado en [el patrón MVC](https://dev.to/campusmvp_es/que-es-el-patron-mvc-en-programacion-y-por-que-es-util-2c2e-temp-slug-4666309) y su enfoque es en crear aplicaciones de nivel empresarial de manera rápida y que sean fáciles de mantener.

Dispone de una arquitectura basada en _plugins_ que permiten extenderlo fácilmente con cualquier funcionalidad que requieras y no tenga de serie. Trae muchos plugins de serie para hacer de todo (procesar JSON, crear servicios REST...) y existen muchos más creados por la comunidad.

Lo puedes combinar con otros _frameworks_ para conseguir funcionalidad que no tenga. Por ejemplo, puedes usar inyección de dependencias a través de Spring, o Hibernate para el acceso a datos.

Su mayor pega quizá sea que es más complejo que otros y que te fuerza a seguir un determinado estilo de programación y ciertas reglas (lo cual, en muchas empresas es una ventaja).

## [4.- JavaServer Faces (JSF)](http://www.javaserverfaces.org/)

![](https://www.campusmvp.es/recursos/image.axd?picture=/2019/4T/java-frameworks-jsf.png)

JavaServer Faces es en realidad [una especificación](https://javaee.github.io/javaserverfaces-spec/) "estándar" para la creación de interfaces de usuario para aplicaciones Web, aunque se puede usar también para crear aplicaciones nativas. La creó la propia Oracle y su primera versión data del año 2004, así que es algo muy estable y probado también. Al igual que otros, utiliza el patrón MVC, y está basado en componentes. El objetivo es que puedas construir componentes de interfaz de usuario que sean reutilizables, pudiendo gestionar su estado, conectarlos a orígenes de datos y atarlos a eventos para realizar acciones.

Tiene un sistema de plantillas para crear los componentes que se llama Facelets y que utilizan XML en lugar de Java para definirlas, aunque puedes usar otros métodos para lo mismo sin salirte de JSF (usando Java directamente si quieres).

Es bastante complejo y no es el más rápido, pero tiene dos ventajas fundamentales: está **incluido con Java EE** (y [los principales IDEs](https://www.campusmvp.es/recursos/post/Los-mejores-entornos-de-desarrollo-para-Java.aspx) dan soporte de serie para usarlo) y la **documentación es muy buena**  ya que está creada y mantenida por Oracle.

## [5.- Grails](https://grails.org/)

![](https://www.campusmvp.es/recursos/image.axd?picture=/2019/4T/java-frameworks-grails.png)

**Grails** es un _framework_ de desarrollo Web que utiliza **[el lenguaje Groovy](http://groovy-lang.org/)** para la plataforma Java. Groovy es un lenguaje orientado a objetos que compila a Bytecode y que está enfocado a fondo en la productividad del desarrollador. Por ese motivo, Grails lo que te da es una productividad altísima y te permite estar produciendo código para tu aplicación de manera casi inmediata (en 1 hora puedes tener tu primera aplicación probada y en marcha).

Aunque programas con Groovy y no con Java directamente, la sintaxis es compatible con Java y además funciona de maravilla con otras tecnologías Java como Hibernate o incluso Spring. De hecho está basado en Spring Boot, por lo que incluye características como la inyección de dependencias. Sigue buenas prácticas y principios de desarrollo modernos como convención sobre configuración.

Escala bien y te servirá tanto para proyectos pequeños como muy grandes. El soporte de los diferentes IDEs es muy bueno. Tiene centenares de _plugins_ para hacer casi cualquier cosa que se te ocurra.

La [documentación de Grails](http://grails.org/documentation.html) es muy buena, y tiene también unas [guías paso a paso de Grails](https://guides.grails.org/index.html) muy buenas.

>Post original en [campusMVP](https://www.campusmvp.es/recursos/post/java-los-5-mejores-frameworks-para-desarrollo-web.aspx)