Struts gegen Struts2
Struts (auch als Apache Struts oder Struts 1 bekannt) ist ein in Java geschriebenes plattformübergreifendes Open-Source-Framework, das für die Entwicklung von Java EE-Webanwendungen vorgesehen ist. Es war eines der ersten Frameworks für Java-EE-Webanwendungen. Aber einige Jahre später kam Struts2 (oder Struts Version 2) und es war ein völlig anderes und stark verbessertes Webanwendungs-Framework. Es wurden einige Probleme behoben, die in der ursprünglichen Version als Mängel wahrgenommen wurden. Jetzt wird Struts2 weltweit sehr stark für die Entwicklung von Java EE-Anwendungen verwendet.
Was ist Struts?
Struts (Struts 1) Framework war eines der ersten Webanwendungs-Frameworks für die Entwicklung von Java EE-Webanwendungen. Das Struts-Framework fördert 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. Ursprünglich war es als Jakaratha Struts bekannt und wurde unter dem Jakarta-Projekt der Apache Software Foundation verw altet. Es wird unter der Apache-Lizenz 2.0 veröffentlicht. Das Struts-Framework wird als Request-based Framework bezeichnet und besteht aus drei Hauptkomponenten: einem Request-Handler, einem Response-Handler und einer Tag-Bibliothek. Standard-URI (Uniform Resource Identifier) wird einem Request-Handler zugeordnet. Der Response Handler ist für die Übergabe der Kontrolle verantwortlich. Um interaktive Anwendungen mit Formularen zu erstellen, können die von der Tag-Bibliothek angebotenen Funktionen genutzt werden. Struts unterstützen REST-Anwendungen und verschiedene Technologien wie SOAP, AJAX usw.
Was ist Struts2?
Das Struts-Framework wurde von den damaligen Java EE-Entwicklern als mit bestimmten Einschränkungen (hauptsächlich die fehlende Trennung zwischen der Präsentationsschicht, der Anforderungsverarbeitungsschicht und dem Modell) angesehen, und folglich kam Struts2 einige Jahre später auf den Markt. Eigentlich war Struts2 völlig anders als Struts. Tatsächlich teilten sie nicht einmal dieselbe Codebasis, da Struts2 einfach das Ergebnis der Umbenennung des WebWork 2.2-Frameworks war (d. h. WebWork- und Struts-Communities, die einige Zeit getrennt arbeiteten, schlossen sich schließlich zusammen, um Struts2 zu entwickeln). 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, abstrakte Klassen anstelle von Schnittstellen zu programmieren. Dies wurde durch das Struts2-Framework gelöst. Beispielsweise erforderte das Struts-Framework, dass Aktionsklassen von den abstrakten Basisklassen erweitert werden, aber Struts2-Aktionen können eine Aktionsschnittstelle implementieren. Aufgrund der Unterschiede im Threading-Modell zwischen den beiden Versionen treten Thread-Sicherheitsprobleme, die im Struts-Framework in Bezug auf Action-Objekte aufgetreten sind, im Struts2-Framework nicht auf. Der Grund dafür ist, dass Struts2-Aktionsobjekte für jede Anforderung instanziiert werden, während eine Aktion im Struts-Framework nur eine Instanz hat, um alle Anforderungen für diese Aktion zu verarbeiten. Im Gegensatz zu Actions im Struts-Framework sind Struts2-Actions nicht von der Servlet-API abhängig.
Die Testbarkeit des Struts2-Frameworks ist vergleichsweise höher als die des Struts-Frameworks. Sie können Struts2-Aktionen testen, indem Sie einfach die drei Schritte befolgen: Instanziierung, 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 beibeh alten werden muss. Abgesehen von der Unterstützung für die JSTL-Integration (die in Struts vorhanden ist), kann das Struts2-Framework die leistungsfähigere und ausdrucksstärkere OGNL (Object Graph Notation Language) verwenden. Für die Typkonvertierung 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. Andererseits gilt das Struts-Framework mittlerweile als ver altet.