Struts vs Struts2
Struts (tiež známy ako Apache Struts alebo Struts 1) je multiplatformový open source framework napísaný v jazyku Java, ktorý je určený na vývoj webových aplikácií Java EE. Bol to jeden z počiatočných rámcov webových aplikácií Java EE. Ale o niekoľko rokov neskôr prišiel Struts2 (alebo Struts verzia 2) a bol to úplne iný a výrazne vylepšený rámec webových aplikácií. Riešila niekoľko problémov, ktoré boli v pôvodnej verzii vnímané ako nedostatky. Struts2 sa teraz vo svete veľmi intenzívne používa na vývoj aplikácií Java EE.
Čo je to Struts?
Struts (Struts 1) framework bol jedným z prvých rámcov webových aplikácií pre vývoj webových aplikácií Java EE. Rámec Struts podporuje použitie architektúry MVC (Model-View-Controller). Ide o rozšírenie Java Servlet API. Craig McClanahan je pôvodným tvorcom Struts. Spočiatku bol známy ako Jakaratha Struts a bol udržiavaný v rámci projektu Jakarta od Apache Software Foundation. Je vydaný pod licenciou Apache 2.0. Rámec Struts sa nazýva rámec založený na požiadavkách a pozostáva z troch hlavných komponentov: obsluhy požiadaviek, obsluhy odpovedí a knižnice značiek. Štandardný identifikátor URI (Uniform Resource Identifier) je namapovaný na obsluhu žiadosti. Obsluha odozvy je zodpovedná za prenos kontroly. Na vytváranie interaktívnych aplikácií s formulármi možno využiť funkcie, ktoré ponúka knižnica značiek. Struts podporujú aplikácie REST a rôzne technológie ako SOAP, AJAX atď.
Čo je Struts2?
Rámec Struts bol vnímaný tak, že obsahuje určité obmedzenia (hlavne nedostatok oddelenia medzi prezentačnou vrstvou, vrstvou spracovania požiadaviek a modelom) vývojármi Java EE v tom čase, a preto o niekoľko rokov neskôr prišiel Struts2. V skutočnosti bol Struts2 úplne iný ako Struts. V skutočnosti dokonca nezdieľali rovnakú kódovú základňu, pretože Struts2 bol jednoducho výsledkom premenovania rámca WebWork 2.2 (t. j. komunity WebWork a Struts, ktoré nejaký čas pracovali oddelene, nakoniec spojili ruky a prišli s Struts2). Jeho aktuálne stabilné vydanie je verzia 2.2.3, ktorá bola vydaná v máji 2011.
Aký je rozdiel medzi Struts a Struts2?
Jedným z mnohých problémov rámca Struts bola potreba programovania abstraktných tried namiesto rozhraní. Toto vyriešil framework Struts2. Napríklad rámec Struts vyžadoval, aby boli triedy Action rozšírené z abstraktných základných tried, ale Struts2 Actions môže implementovať rozhranie Action. Kvôli rozdielom v modeli vlákien medzi týmito dvoma verziami sa v rámci Struts2 nevyskytujú problémy s bezpečnosťou vlákien, ktoré sa objavili v rámci Struts v súvislosti s objektmi Action. Dôvodom je, že objekty Struts2 Action sú vytvárané pre každú požiadavku, zatiaľ čo rámec Action in Struts má iba jednu inštanciu na spracovanie všetkých požiadaviek na túto akciu. Na rozdiel od rámca Actions in Struts, Struts2 Actions nie sú závislé od Servlet API.
Testovateľnosť rámca Struts2 je porovnateľne vyššia ako rámca Struts. Akcie Struts2 môžete otestovať jednoducho podľa troch krokov: vytvorenie inštancie, nastavenie vlastností a vyvolanie metód. Zber vstupu je jednoduchší v rámci Struts2, pretože vlastnosti Action sa používajú ako vlastnosti vstupu bez toho, aby ste museli ponechať druhý vstupný objekt. Okrem podpory integrácie JSTL (ktorá je prítomná v Struts), môže rámec Struts2 používať výkonnejší a výraznejší jazyk OGNL (Object Graph Notation Language). Na konverziu typov Strut a Strut2 používajú Commons-Beanutils a OGNL. Vďaka týmto vylepšeniam je rámec Struts2 považovaný za vysoko vyspelý rámec a medzi programátormi Java EE je veľmi populárny. Na druhej strane sa rámec Struts teraz považuje za zastaraný.