Struts vs Struts2
Struts (ook bekend als Apache Struts of Struts 1) is een platformonafhankelijk open source framework geschreven in Java, bedoeld voor het ontwikkelen van Java EE webapplicaties. Het was een van de eerste Java EE-frameworks voor webtoepassingen. Maar een paar jaar later arriveerde Struts2 (of Struts versie 2) en het was een heel ander en sterk verbeterd webapplicatiekader. Het had enkele problemen aangepakt die in de eerste versie als tekortkomingen werden ervaren. Nu wordt Struts2 zeer zwaar gebruikt voor de ontwikkeling van Java EE-toepassingen ter wereld.
Wat is Struts?
Struts (Struts 1) -raamwerk was een van de eerste frameworks voor webtoepassingen voor het ontwikkelen van Java EE-webtoepassingen. Struts framework moedigt het gebruik van MVC (Model-View-Controller) architectuur aan. Het is een uitbreiding op de Java Servlet API. Craig McClanahan is de originele maker van Struts. Aanvankelijk was het bekend als Jakaratha Struts en werd onderhouden onder Jakarta Project van Apache Software Foundation. Het is vrijgegeven onder Apache License 2.0. Het Struts-raamwerk wordt een op verzoek gebaseerd raamwerk genoemd en bestaat uit drie hoofdcomponenten: een behandelaanvraagder, een responshandler en een tagbibliotheek. Standaard URI (Uniform Resource Identifier) wordt toegewezen aan een verzoekbehandelaar. Responsbehandelaar is verantwoordelijk voor het overdragen van de besturing. Om interactieve applicaties met formulieren te maken, kunnen de functies worden gebruikt die worden aangeboden door de tagbibliotheek. Struts ondersteunen REST-applicaties en verschillende technologieën zoals SOAP, AJAX, enz.
Wat is Struts2?
Het Struts-framework werd door de Java EE-ontwikkelaars op dat moment geacht bepaalde beperkingen (voornamelijk het ontbreken van scheiding tussen de presentatielaag, de behandellaag voor aanvragen en het model) op te nemen en bijgevolg kwam Struts2 enkele jaren later. Eigenlijk was Struts2 compleet anders dan Struts. Sterker nog, ze hadden niet eens dezelfde codebase omdat Struts2 simpelweg het resultaat was van het hernoemen van het WebWork 2.2-raamwerk (dat wil zeggen WebWork- en Struts-communities die afzonderlijk enige tijd werkten, sloten zich uiteindelijk aan bij het bedenken van Struts2). De huidige stabiele release is versie 2.2.3, die werd uitgebracht in mei 2011.
Wat is het verschil tussen Struts en Struts2?
Een van de vele problemen van het Struts-raamwerk was de noodzaak om te programmeren om klassen te abstraheren in plaats van interfaces. Dit werd opgelost door Struts2 framework. Het kader van Struts vereiste bijvoorbeeld actieklassen om uit de abstracte basisklassen te worden uitgebreid, maar Struts2-acties kunnen een actie-interface implementeren. Vanwege de verschillen in het threading-model tussen de twee versies komen thread-veiligheidsproblemen die in Struts-framework naar voren kwamen met betrekking tot Action-objecten niet voor in het Struts2-framework. De reden is dat Struts2 Action-objecten worden geïnstantieerd voor elk verzoek, terwijl een Action in Struts-framework slechts één instantie heeft om alle aanvragen voor die actie af te handelen. In tegenstelling tot het kader Acties in Struts, zijn Struts2-acties niet afhankelijk van de Servlet-API.
De testbaarheid van het Struts2-raamwerk is relatief hoger dan het Struts-raamwerk. U kunt Struts2-acties eenvoudig testen door de drie stappen te volgen: instantiatie, instelling van eigenschappen en aanroep van methoden. Het oogsten van invoer is eenvoudiger in het Struts2-raamwerk, omdat actie-eigenschappen worden gebruikt als invoereigenschappen, zonder dat een tweede invoerobject hoeft te worden bewaard. Afgezien van de ondersteuning voor JSTL-integratie (die aanwezig is in Struts), kan het Struts2-raamwerk krachtiger en expressiever OGNL (Object Graph Notation Language) gebruiken. Voor typeconversie gebruiken Strut en Strut2 respectievelijk Commons-Beanutils en OGNL. Vanwege deze verbeteringen wordt het Struts2-framework beschouwd als een zeer volwassen framework en is het erg populair bij Java EE-programmeurs. Aan de andere kant wordt het kader van Struts nu als verouderd beschouwd.