7.0.3

Latest release in branch 7.0
Released 1 year ago (February 17, 2025)

Software Apache Struts
Branch 7.0
First official release version 7.0.0
First official release date 1 year ago (December 11, 2024)
Requirement Java 17,
JakartaEE
Release notes https://github.com/apache/struts/releases/tag/STRUTS_7.0.3
Source code https://github.com/apache/struts/tree/STRUTS_7.0.3
Documentation https://javadoc.io/doc/org.apache.struts/struts2-core/7.0.3/index.html
Download https://mvnrepository.com/artifact/org.apache.struts/struts2-core/7.0.3
Apache Struts 7.0 Releases View full list

What Is New in Apache Struts 7.0

This release is a major step forward, focusing on modernization and compatibility with the latest Java ecosystem. It's a significant upgrade that requires attention to dependencies and deprecated APIs.

Category Key Changes
Java Version Requires Java 17 or later
Dependencies Upgraded to Jakarta EE 10, Log4j 2, and other core libraries
Deprecations Removed support for Tiles 2 and several legacy plugins
Bug Fixes Various fixes for issues carried over from previous versions

Why is Java 17 the new minimum requirement?

Struts 7.0 now requires Java 17 or higher to build and run. This shift aligns the framework with the current long-term support (LTS) version of Java, allowing developers to use modern language features and ensuring compatibility with other Jakarta EE 10 components.

In practice, this means you'll need to upgrade your JDK and potentially your application server before migrating to this version of Struts. This is a breaking change for environments still running on older Java versions.

What dependencies were upgraded for Jakarta EE 10?

The framework's core dependencies have been updated to their Jakarta EE 10 equivalents. This includes the move from javax.servlet to jakarta.servlet packages, which is a major namespace change affecting the entire web layer.

You'll need to ensure all your related libraries, like your servlet container (e.g., Tomcat 10.1+), are also compatible with Jakarta EE 10. This change is crucial because mixing javax and jakarta namespaces will cause classloading issues.

Which legacy features were removed in this release?

Support for Apache Tiles 2 has been completely removed. If your application relies on Tiles for templating, you must migrate to Tiles 3 before upgrading to Struts 7.0.

Additionally, several plugins that were previously deprecated have been removed. This cleanup reduces the framework's technical debt and maintenance burden, focusing efforts on the most used and supported extensions.

FAQ

Is Struts 7.0 backwards compatible with Struts 6.x?
No, it is not fully backwards compatible. The jump to Java 17 and Jakarta EE 10 introduces breaking changes. You will need to update your JDK, application server, and address any code that used removed APIs like Tiles 2.

Can I use Log4j 1.x with Struts 7.0?
No. This version upgrades to Log4j 2. You must migrate your logging configuration to use Log4j 2.x, as support for the older Log4j 1.x has been dropped.

What is the immediate impact of the Jakarta EE 10 migration?
The most immediate impact is that all your imports from javax.servlet need to change to jakarta.servlet. Your deployment environment, like Tomcat, must also be a version that supports Jakarta EE 10 (e.g., Tomcat 10.1+).

My app uses Tiles 2. What are my options?
You must migrate your Tiles definitions and configuration to Tiles 3. There is no direct path to upgrade Struts without addressing this dependency first. The Tiles 3 migration is a prerequisite.

Where can I find the full list of changes?
The complete release notes are available on the Apache Confluence wiki. This is the definitive source for all changes, including the full list of bug fixes and dependency versions.
Apache Struts 7.0.3 Release Notes

Releases In Branch 7.0

Version Release date
7.0.3 1 year ago
(February 17, 2025)
7.0.0 1 year ago
(December 11, 2024)