Struts vs Struts2
Struts (auch bekannt als Apache Struts oder Struts 1) ist ein plattformübergreifendes Open Source-Framework, das in Java geschrieben ist und für die Entwicklung von Java EE-Webanwendungen bestimmt ist. Es war eines der ersten Java EE-Webanwendungsframeworks. Einige Jahre später erschien Struts2 (oder Struts Version 2), und es war ein völlig anderes und stark verbessertes Webanwendungs-Framework. Es hatte sich mit wenigen Problemen befasst, die in der ursprünglichen Version als Mängel wahrgenommen wurden. Jetzt wird Struts2 sehr stark für die Entwicklung von Java EE-Anwendungen in der Welt verwendet.
Was ist Struts??
Das Struts-Framework (Struts 1) war eines der ersten Frameworks für Webanwendungen zur Entwicklung von Java EE-Webanwendungen. Das Struts-Framework unterstützt die Verwendung der MVC-Architektur (Model-View-Controller). Es ist eine Erweiterung der Java Servlet API. Craig McClanahan ist der ursprüngliche Schöpfer von Struts. Anfangs war es als Jakaratha Struts bekannt und wurde unter Jakarta Project der Apache Software Foundation gepflegt. Es ist unter der Apache License 2.0 veröffentlicht. Struts Framework wird als anforderungsbasiertes Framework bezeichnet und besteht aus drei Hauptkomponenten: einem Anforderungshandler, einem Antworthandler und einer Tag-Bibliothek. Standard-URI (Uniform Resource Identifier) wird einem Anforderungshandler zugeordnet. Der Response-Handler ist für die Übertragung der Kontrolle verantwortlich. Um interaktive Anwendungen mit Formularen zu erstellen, können die Funktionen der Tag-Bibliothek verwendet werden. Struts unterstützen REST-Anwendungen und verschiedene Technologien wie SOAP, AJAX usw.
Was ist Struts2??
Es wurde angenommen, dass das Struts-Framework von den Java EE-Entwicklern zu bestimmten Zeitpunkten gewisse Einschränkungen aufwies (hauptsächlich die fehlende Trennung zwischen der Präsentationsschicht, der Request-Handling-Schicht und dem Modell) und daher einige Jahre später Struts2 erschien. Struts2 war eigentlich völlig anders als Struts. Tatsächlich hatten sie nicht einmal die gleiche Codebasis gemeinsam, da Struts2 einfach das Ergebnis der Umbenennung des WebWork 2.2-Frameworks war (d. H. WebWork- und Struts-Communities, die für einige Zeit getrennt arbeiteten, schlossen sich schließlich den Struts2 an). Die aktuelle stabile Version ist Version 2.2.3, die im Mai 2011 veröffentlicht wurde.
Was ist der Unterschied zwischen Struts und Struts2??
Eines der vielen Probleme des Struts-Frameworks war die Notwendigkeit der Programmierung von Klassen anstelle von Schnittstellen. Dies wurde durch das Struts2-Framework gelöst. Für das Struts-Framework mussten beispielsweise Aktionsklassen gegenüber den abstrakten Basisklassen erweitert werden. Struts2-Aktionen können jedoch eine Aktionsschnittstelle implementieren. Aufgrund der Unterschiede im Threading-Modell zwischen den beiden Versionen treten in Struts-Framework auftretende Thread-Sicherheitsprobleme in Bezug auf Action-Objekte in Struts2-Framework nicht auf. Der Grund ist Struts2. Action-Objekte werden für jede Anforderung instanziiert, während ein Action in Struts-Framework nur eine Instanz hat, um alle Anforderungen für diese Action zu verarbeiten. Im Gegensatz zum Framework "Aktionen in Struts" sind Struts2-Aktionen nicht von der Servlet-API abhängig.
Die Testbarkeit des Struts2-Frameworks ist vergleichsweise höher als beim Struts-Framework. Sie können Struts2-Aktionen einfach anhand der drei Schritte testen: Instantiierung, Festlegen von Eigenschaften und Aufrufen von Methoden. Das Sammeln von Eingaben ist im Struts2-Framework einfacher, da Aktionseigenschaften als Eingabeeigenschaften verwendet werden, ohne dass ein zweites Eingabeobjekt beibehalten werden muss. Abgesehen von der Unterstützung der JSTL-Integration (die in Struts vorhanden ist) kann das Struts2-Framework leistungsfähigere und ausdrucksstärkere OGNL (Object Graph Notation Language) verwenden. Für die Typumwandlung verwenden Strut und Strut2 Commons-Beanutils bzw. OGNL. Aufgrund dieser Verbesserungen gilt das Struts2-Framework als sehr ausgereiftes Framework und ist bei Java EE-Programmierern sehr beliebt. Auf der anderen Seite gilt das Struts-Framework nun als veraltet.