Cómo Apache Struts ayuda a mantener la estructura en aplicaciones Java y por qué es demasiado pronto para descartarlo
Muchos desarrolladores Java, cuando escuchan la palabra Struts, no pueden evitar pensar en proyectos legacy antiguos o en titulares sensacionalistas sobre vulnerabilidades de seguridad de años pasados. Pero si dejas de lado los prejuicios y echas un vistazo al repositorio, verás un framework vivo que aún sostiene una enorme porción del segmento empresarial sobre sus hombros. En la era de los microservicios y la programación reactiva, Struts parece un visitante del pasado, pero aún ofrece una forma clara y predecible de construir aplicaciones web.
Quién lo necesita y por qué hoy
Struts es un framework MVC clásico. Su objetivo principal es separar la lógica de negocio, la presentación y el control de navegación. A principios de los 2000, esto fue una revelación: antes de eso, los desarrolladores frecuentemente mezclaban consultas SQL, código Java y etiquetas HTML directamente dentro de las páginas JSP. El resultado era un desastre imposible de mantener.
Hoy, el proyecto vive bajo el paraguas de la Apache Software Foundation. Si trabajas en el sector empresarial, probablemente tendrás que tratar con él. Y no se trata solo de mantener código antiguo. Struts 2 (que evolucionó de WebWork 2) es una herramienta completamente moderna para quienes prefieren el modelo Request/Response y no quieren ocultar los detalles específicos del protocolo web detrás de abstracciones complejas de frameworks de componentes como JSF o Tapestry.
Qué hay dentro de la caja
La arquitectura de Struts se construye sobre tres pilares. Primero, están los manejadores de solicitudes (Actions). Escribes una clase que realiza un trabajo útil y la mapeas a una URL específica. Segundo, está el mecanismo de flujo de control. Después de que la lógica se ejecuta, el framework decide qué recurso (por ejemplo, una página o JSON) devolver al usuario. Tercero, está la biblioteca de etiquetas que simplifica la creación de formularios interactivos.
Curiosamente, Struts no intenta forzarte a usar un stack frontend específico ni una capa de acceso a datos en particular. Se lleva igualmente bien con Hibernate, JDBC o Apache Cayenne. Del lado del cliente, puedes usar el buen JSP de siempre, o puedes entregar todo a Angular o React, convirtiendo a Struts en un backend para servicios REST.
Así se ve una acción simple en Struts 2:
public class HelloAction extends ActionSupport {
private String message;
public String execute() {
message = "Привет из Struts!";
return SUCCESS;
}
public String getMessage() {
return message;
}
}
La configuración (tradicionalmente en XML, pero las anotaciones también funcionan) conecta este código con una ruta del navegador. Es transparente y fácil de depurar.
Libertad honesta y seguridad
Los desarrolladores de Apache Struts enfatizan la "limpieza" de la licencia y la independencia. El proyecto es completamente impulsado por voluntarios. Esto significa que mañana ninguna corporación puede cambiar los términos de uso o cerrar el acceso al código fuente.
En cuanto a seguridad: después de varios incidentes de alto perfil, la comunidad se ha vuelto paranoica con las verificaciones. El proyecto ahora tiene una calificación alta en el OpenSSF Scorecard. El repositorio tiene una Guía de Seguridad detallada, y los parches críticos para la rama actual de Struts 2 se publican de inmediato.
A propósito, sobre las versiones. Un punto importante: Struts 1 está oficialmente muerto. Los desarrolladores instan encarecidamente a no iniciar nuevos proyectos con él y recomiendan migrar a Struts 2 siempre que sea posible. La primera rama ya no recibe actualizaciones de seguridad, así que usarla en producción es un riesgo consciente.
Flexibilidad sin magia
A diferencia de muchos frameworks modernos "mágicos", Struts no oculta el hecho de que la web es esencialmente stateless. Ves claramente el ciclo request-response.
Si necesitas integrar tecnologías específicas, Struts ofrece mecanismos de extensión. ¿Quieres usar SOAP? Sin problema. ¿Necesitas AJAX? Hay soluciones listas para usar. ¿Quieres conectar motores de plantillas como Freemarker o Velocity en lugar de JSP? Eso se hace con herramientas estándar.
Al mismo tiempo, los desarrolladores dicen honestamente: si tu objetivo es construir una UI a partir de componentes de servidor ya hechos, Struts no es para ti. Para esas tareas, es mejor mirar Wicket. Struts es elegido por quienes quieren controlar HTML y JavaScript a un nivel bajo.
¿Vale la pena probarlo y para quién es
Struts es la elección de los conservadores en el mejor sentido de la palabra. Es adecuado para equipos que valoran patrones arquitectónicos probados en el tiempo y la estabilidad de Apache.
Quién debería echarle un vistazo al repositorio:
- Desarrolladores Java que mantienen grandes sistemas empresariales.
- Quienes buscan un framework MVC predecible sin complejidad innecesaria y magia oculta.
- Arquitectos para quienes la limpieza de la licencia y el open-source sin vendor lock-in son importantes.
Lo mejor es comenzar tu introducción con la documentación oficial y los tutoriales de Struts 2 en el sitio web del proyecto. El repositorio de GitHub es un gran lugar para ver cómo están estructurados los interiores de uno de los frameworks más conocidos en la historia del desarrollo Java. A veces es útil saber sobre qué están construidos los "soportes invisibles" (struts) de la industria.
Proyectos relacionados