Wie Apache Struts hilft, Struktur in Java-Anwendungen zu bewahren – und warum es noch zu früh ist, es abzuschreiben
Viele Java-Entwickler denken beim Wort Struts unwillkürlich an alte Legacy-Projekte oder an Schlagzeilen über Sicherheitslücken aus vergangenen Jahren. Aber wenn man das Vorurteil beiseitelegt und einen Blick in das Repository wirft, sieht man ein lebendiges Framework, das immer noch einen großen Teil des Enterprise-Segments auf seinen Schultern trägt. Im Zeitalter von Microservices und reaktiver Programmierung wirkt Struts wie ein Besucher aus der Vergangenheit, aber es bietet immer noch einen klaren und vorhersehbaren Weg, Web-Anwendungen zu entwickeln.
Wozu es dient und warum heute
Struts ist ein klassisches MVC-Framework. Sein Hauptziel ist es, Geschäftslogik, Präsentation und Navigationssteuerung zu trennen. Anfang der 2000er war dies eine Offenbarung: Zuvor vermischten Entwickler häufig SQL-Abfragen, Java-Code und HTML-Tags direkt in JSP-Seiten. Das Ergebnis war ein Chaos, das unmöglich zu warten war.
Heute lebt das Projekt unter dem Dach der Apache Software Foundation. Wenn Sie im Enterprise-Bereich arbeiten, werden Sie wahrscheinlich damit zu tun haben. Und es geht nicht nur um die Wartung alten Codes. Struts 2 (das aus WebWork 2 hervorging) ist ein vollständig modernes Werkzeug für alle, die das Request/Response-Modell bevorzugen und die Web-Protokoll-Spezifika nicht hinter komplexen Abstraktionen von Komponenten-Frameworks wie JSF oder Tapestry verstecken wollen.
Was steckt in der Box
Die Struts-Architektur basiert auf drei Säulen. Erstens gibt es Request-Handler (Actions). Sie schreiben eine Klasse, die nützliche Arbeit leistet, und mappen sie auf eine bestimmte URL. Zweitens gibt es den Kontrollfluss-Mechanismus. Nach der Ausführung der Logik entscheidet das Framework, welche Ressource (zum Beispiel eine Seite oder JSON) an den Benutzer zurückgegeben wird. Drittens gibt es eine Tag-Bibliothek, die die Erstellung interaktiver Formulare vereinfacht.
Interessanterweise versucht Struts nicht, Ihnen einen bestimmten Frontend-Stack oder eine bestimmte Datenzugriffsschicht aufzuzwingen. Es kommt gleichermaßen gut mit Hibernate, JDBC oder Apache Cayenne zurecht. Auf der Client-Seite können Sie das gute alte JSP verwenden, oder Sie können alles an Angular oder React übergeben und Struts zu einem Backend für REST-Services machen.
So sieht eine einfache Action in Struts 2 aus:
public class HelloAction extends ActionSupport {
private String message;
public String execute() {
message = "Привет из Struts!";
return SUCCESS;
}
public String getMessage() {
return message;
}
}
Die Konfiguration (traditionell in XML, aber Annotationen funktionieren auch) verbindet diesen Code mit einem Browser-Pfad. Sie ist transparent und leicht zu debuggen.
Ehrliche Freiheit und Sicherheit
Die Apache Struts-Entwickler betonen die „Sauberkeit" der Lizenz und die Unabhängigkeit. Das Projekt wird vollständig von Freiwilligen betrieben. Das bedeutet, dass morgen kein Unternehmen die Nutzungsbedingungen ändern oder den Zugang zum Quellcode schließen kann.
Was die Sicherheit betrifft: Nach mehreren öffentlichkeitswirksamen Vorfällen ist die Community paranoid geworden bei Prüfungen. Das Projekt hat jetzt eine hohe Bewertung auf der OpenSSF Scorecard. Das Repository enthält einen detaillierten Security Guide, und kritische Patches für den aktuellen Struts 2-Branch werden umgehend veröffentlicht.
Übrigens, zu den Versionen. Ein wichtiger Punkt: Struts 1 ist offiziell tot. Entwickler raten dringend davon ab, neue Projekte damit zu starten, und empfehlen, whenever möglich auf Struts 2 zu migrieren. Der erste Branch erhält keine Sicherheitsupdates mehr, daher ist die Verwendung in der Produktion ein bewusstes Risiko.
Flexibilität ohne Magie
Im Gegensatz zu vielen modernen „magischen" Frameworks verbirgt Struts nicht die Tatsache, dass das Web im Wesentlichen zustandslos ist. Sie sehen den Request-Response-Zyklus klar.
Wenn Sie bestimmte Technologien integrieren müssen, bietet Struts Erweiterungsmechanismen. SOAP verwenden? Kein Problem. AJAX benötigt? Es gibt fertige Lösungen. Freemarker- oder Velocity-Templating-Engines statt JSP anschließen? Das wird mit Standardwerkzeugen erledigt.
Gleichzeitig sagen Entwickler ehrlich: Wenn Ihr Ziel darin besteht, eine UI aus fertigen Server-Komponenten aufzubauen, ist Struts nichts für Sie. Für diese Aufgaben sieht man sich besser Wicket an. Struts wird von denen gewählt, die HTML und JavaScript auf niedriger Ebene kontrollieren wollen.
Lohnt es sich, es zu probieren, und für wen ist es geeignet
Struts ist eine Wahl von Konservativen im besten Sinne des Wortes. Es eignet sich für Teams, die zeitlose architektonische Muster und die Stabilität von Apache schätzen.
Wer sollte einen Blick in das Repository werfen:
- Java-Entwickler, die große Enterprise-Systeme warten.
- Diejenigen, die ein vorhersehbares MVC-Framework ohne unnötige Komplexität und versteckte Magie suchen.
- Architekten, denen Lizenz-Sauberkeit und Open-Source ohne Vendor Lock-in wichtig sind.
Am besten beginnt man mit der offiziellen Dokumentation und den Struts 2-Tutorials auf der Projekt-Website. Das GitHub-Repository ist ein großartiger Ort, um zu sehen, wie die Interna eines der bekanntesten Frameworks in der Java-Entwicklungsgeschichte aufgebaut sind. Manchmal ist es nützlich zu wissen, worauf die „unsichtbaren Stützen" (struts) der Branche aufgebaut sind.
Ähnliche Projekte