Struts vs Struts2
Struts (také známý jako Apache Struts nebo Struts 1) je multiplatformní open source framework napsaný v jazyce Java, který je určen pro vývoj webových aplikací Java EE. Byl to jeden z počátečních rámců webových aplikací Java EE. Ale o několik let později dorazila Struts2 (nebo Struts verze 2) a byl to úplně jiný a vysoce vylepšený rámec webových aplikací. Zabýval se několika problémy, které byly v původní verzi vnímány jako nedostatky. Nyní je Struts2 velmi využíván pro vývoj aplikací Java EE ve světě.
Co je to Struts?
Rámec Struts (Struts 1) byl jedním z počátečních rámců webových aplikací pro vývoj webových aplikací Java EE. Rámec Struts podporuje použití architektury MVC (Model-View-Controller). Jedná se o rozšíření Java Servlet API. Craig McClanahan je původním tvůrcem Struts. Zpočátku to bylo známé jako Jakaratha Struts a bylo udržováno v rámci Jakartského projektu Apache Software Foundation. Je vydáván pod licencí Apache License 2.0. Rámec Struts se nazývá framework založený na požadavcích a skládá se ze tří hlavních komponent: obslužné rutiny požadavků, obslužné rutiny odpovědí a knihovny značek. Standardní identifikátor URI (Uniform Resource Identifier) je namapován na obslužnou rutinu požadavku. Obsluha odpovědi je odpovědná za předání kontroly. K vytváření interaktivních aplikací s formuláři lze využít funkce nabízené knihovnou značek. Struts podporuje aplikace REST a různé technologie jako SOAP, AJAX atd.
Co je Struts2?
Rámec Struts byl v té době vnímán tak, že obsahuje určitá omezení (zejména nedostatek oddělení mezi prezentační vrstvou, vrstvou zpracování požadavků a modelem) vývojáři Java EE a následně o několik let později dorazil Struts2. Ve skutečnosti byla Struts2 úplně jiná než Struts. Ve skutečnosti ani nesdíleli stejnou kódovou základnu, protože Struts2 byl jednoduše výsledkem přejmenování rámce WebWork 2.2 (tj. Komunity WebWork a Struts, kteří nějakou dobu pracovali samostatně, nakonec přišli s Struts2 do rukou). Jeho aktuální stabilní vydání je verze 2.2.3, která byla vydána v květnu 2011.
Jaký je rozdíl mezi Struts a Struts2?
Jedním z mnoha problémů rámce Struts byla potřeba programování abstraktních tříd místo rozhraní. To vyřešil rámec Struts2. Například rámec Struts vyžaduje, aby byly třídy akcí rozšířeny z abstraktních základních tříd, ale Struts2 Akce může implementovat rozhraní akcí. Kvůli rozdílům v modelu vláken mezi dvěma verzemi se problémy s bezpečností vláken, které se objevily v rámci Struts v souvislosti s objekty Action, v Struts2 framework nevyskytují. Důvodem je, že objekty Akce Struts2 jsou instancovány pro každý požadavek, zatímco akce v rámci Struts má pouze jednu instanci ke zpracování všech požadavků na tuto akci. Na rozdíl od rámce Akce v Struts nejsou akce Struts2 závislé na API Servletu.
Testovatelnost rámce Struts2 je poměrně vyšší než rámec Struts. Struts2 Actions můžete otestovat jednoduše po třech krocích: vytvoření instance, nastavení vlastností a vyvolání metod. Sklizeň vstupu je v rámci Struts2 jednodušší, protože jako vstupní vlastnosti se používají vlastnosti akce, aniž byste museli ponechat druhý vstupní objekt. Kromě podpory integrace JSTL (která je součástí Struts) může rámec Struts2 používat výkonnější a expresivnější OGNL (Object Graph Notation Language). Pro převod typů používají Strut a Strut2 Commons-Beanutils a OGNL. Kvůli těmto vylepšením je rámec Struts2 považován za vysoce vyspělý rámec a je mezi programátory Java EE velmi populární. Na druhou stranu je rámec Struts nyní považován za zastaralý.