Struts vs Struts2
Struts (také známý jako Apache Struts nebo Struts 1) je multiplatformní open source framework napsaný v Javě, který je určen pro vývoj webových aplikací Java EE. Byl to jeden z prvních frameworků webových aplikací Java EE. Ale o několik let později přišel Struts2 (nebo Struts verze 2) a byl to úplně jiný a vysoce vylepšený rámec webových aplikací. Řešil několik problémů, které byly v původní verzi vnímány jako nedostatky. Struts2 se nyní ve světě velmi intenzivně používá pro vývoj aplikací Java EE.
Co je to Struts?
Struts (Struts 1) framework byl jedním z první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án pod licencí Apache 2.0. Rámec Struts se nazývá framework založený na požadavku a skládá se ze tří hlavních komponent: obsluhy požadavku, obsluhy odezvy a knihovny značek. Standardní identifikátor URI (Uniform Resource Identifier) je mapován na obsluhu požadavku. Obsluha odezvy je odpovědná za přenos řízení. K vytváření interaktivních aplikací s formuláři lze využít funkce, které nabízí knihovna značek. Struts podporují aplikace REST a různé technologie jako SOAP, AJAX atd.
Co je Struts2?
Struts framework byl v té době vnímán tak, že obsahuje určitá omezení (hlavně chybějící oddělení mezi prezentační vrstvou, vrstvou zpracování požadavků a modelem) vývojáři Java EE, a proto o několik let později přišel Struts2. Struts2 byl ve skutečnosti ú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, které nějakou dobu pracovaly odděleně, nakonec spojily ruce a přišli se Struts2). Jeho aktuální stabilní verze 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 namísto rozhraní. Toto vyřešil framework Struts2. Rámec Struts například vyžadoval rozšíření tříd Action z abstraktních základních tříd, ale Struts2 Actions může implementovat rozhraní Action. Kvůli rozdílům v modelu vláken mezi dvěma verzemi se v rámci Struts2 nevyskytují problémy s bezpečností vláken, které se objevily v rámci Struts týkající se objektů Action. Důvodem je, že objekty Struts2 Action jsou konkretizovány pro každý požadavek, zatímco rámec Action in Struts má pouze jednu instanci pro zpracování všech požadavků na tuto akci. Na rozdíl od rámce Actions in Struts nejsou akce Struts2 závislé na Servlet API.
Testovatelnost rámce Struts2 je poměrně vyšší než rámce Struts. Akce Struts2 můžete otestovat jednoduše podle tří kroků: vytvoření instance, nastavení vlastností a vyvolání metod. Sklízení vstupu je v rámci Struts2 jednodušší, protože vlastnosti Action se používají jako vstupní vlastnosti, aniž by bylo nutné ponechat druhý vstupní objekt. Kromě podpory integrace JSTL (která je přítomna ve Struts) může framework Struts2 používat výkonnější a výraznější OGNL (Object Graph Notation Language). Pro konverzi typů používají Strut a Strut2 Commons-Beanutils a OGNL. Díky těmto vylepšením je framework Struts2 považován za vysoce vyspělý framework a je velmi oblíbený mezi programátory Java EE. Na druhou stranu je framework Struts nyní považován za zastaralý.