Struts vs Struts2
A Struts (más néven Apache Struts vagy Struts 1) egy cross-platform nyílt forráskódú, Java-ban írt keretrendszer, amely a Java EE webalkalmazások fejlesztésére szolgál. Ez volt az egyik kezdeti Java EE webalkalmazás-keret. Néhány évvel később azonban megérkezett a Struts2 (vagy a Struts 2. verziója), és ez egy teljesen más és nagyon továbbfejlesztett webalkalmazás-keret volt. Kevés olyan kérdéssel foglalkozott, amelyet az eredeti változat hiányosságnak vélt. Most a Struts2-t nagyon sokat használják a Java EE alkalmazások fejlesztésére a világon.
Mi a Struts?
A Struts (Struts 1) keretrendszer a Java EE webalkalmazások fejlesztésének egyik kezdeti webes keretrendszere volt. A Struts keretrendszer ösztönzi az MVC (Model-View-Controller) architektúra használatát. A Java Servlet API kiterjesztése. Craig McClanahan a Struts eredeti alkotója. Kezdetben Jakaratha Struts néven ismerték, és az Apache Software Foundation Jakarta projektje alatt tartották fenn. Apache License 2.0 alatt jelent meg. A Struts keretrendszert kérés alapú keretrendszernek hívják, és három fő összetevőből áll: egy kéréskezelőből, egy válaszkezelőből és egy címkekönyvtárból. A szabványos URI (egységes erőforrás-azonosító) lekéréskezelőhöz van hozzárendelve. A válaszkezelő felelős az ellenőrzés átadásáért. Interaktív alkalmazások űrlapokkal történő létrehozásához felhasználhatók a címkekönyvtár által kínált szolgáltatások. A támaszok támogatják a REST alkalmazásokat és a különféle technológiákat, mint a SOAP, AJAX stb.
Mi az a Struts2?
A Struts keretrendszernek bizonyos korlátokat (főleg a bemutató réteg, a kérelemkezelő réteg és a modell közötti elválasztás hiányát) tartalmaznak a Java EE fejlesztői abban az időben, és ennek következtében néhány évvel később a Struts2 megérkezett. Valójában a Struts2 teljesen különbözött a Struts-tól. Valójában nem is osztották meg ugyanazt a kódbázist, mert a Struts2 egyszerűen a WebWork 2.2 keretrendszer átnevezésének eredménye volt (vagyis a WebWork és Struts közösségek, akik egy ideig külön dolgoztak, végül összekapcsolták a Struts2-t). Jelenlegi stabil kiadása a 2.2.3 verzió, amelyet 2011 májusában adtak ki.
Mi a különbség a támaszok és a támaszok között?
A Struts keretrendszer számos problémája egyike az volt, hogy az interfészek helyett osztályokat kellett elvonatkoztatni. Ezt a Struts2 keretrendszer oldotta meg. Például a Struts keretrendszer megkövetelte az Action osztályok kiterjesztését az absztrakt alaposztályoktól, de a Struts2 Actions képes végrehajtani egy Action felületet. A két verzió szálmodelljének különbségei miatt a Struts keretrendszerében a Struts keretrendszerben felmerült szálbiztonsági kérdések nem fordulnak elő a Struts2 keretrendszerben. Ennek oka az, hogy a Struts2 műveletobjektumokat minden kérelemhez példányosítják, míg az Action in Struts keretrendszerben csak egy példány kezeli az adott művelet összes kérését. Az Actions in Struts keretrendszerrel ellentétben a Struts2 Actions nem függ a Servlet API-tól.
A Struts2 keretrendszer tesztelhetősége viszonylag magasabb, mint a Struts keretrendszer. A Struts2 műveleteket egyszerűen tesztelheti a három lépés végrehajtásával: példányosítás, tulajdonságok beállítása és metódusok meghívása. A Struts2 keretrendszerben a bemenet betakarítása könnyebb, mivel a művelet tulajdonságait használják bemeneti tulajdonságként, anélkül, hogy meg kellene tartania egy második bemeneti objektumot. A Struts2 keretrendszer a JSTL integráció támogatásán kívül (amely a Struts-ban található) hatékonyabb és kifejezőbb OGNL-t (Object Graph Notation Language) használhat. A típusátalakításhoz a Strut és a Strut2 a Commons-Beanutils, illetve az OGNL-t használja. Ezen fejlesztések miatt a Struts2 keretrendszert nagyon kiforrott keretrendszernek tekintik, és nagyon népszerű a Java EE programozók körében. Másrészt a Struts keretrendszert ma már elavultnak tekintik.