Struts vs Struts2
Struts (također poznat kao Apache Struts ili Struts 1) je cross-platformski open source okvir napisan na Javi, a namijenjen je razvoju Java EE web aplikacija. Bio je to jedan od početnih okvira Java EE web aplikacija. No nekoliko godina kasnije stigao je Struts2 (ili Struts verzija 2) i to je bio potpuno drugačiji i vrlo poboljšani okvir web aplikacija. Bilo je riječi o nekoliko pitanja koja su u početnoj verziji shvaćena kao nedostaci. Sada se Struts2 vrlo intenzivno koristi za razvoj Java EE aplikacija u svijetu.
Što je Struts?
Okvir Struts (Struts 1) bio je jedan od početnih okvira web aplikacija za razvoj web aplikacija Java EE. Okvir Struts potiče upotrebu MVC (Model-View-Controller) arhitekture. To je proširenje Java Servlet API-ja. Craig McClanahan izvorni je autor Struts-a. U početku je bio poznat pod nazivom Jakaratha Struts, a održavan je u okviru Jakarta Project of Apache Software Foundation. Objavljuje se pod licencom Apache 2.0. Okvir Struts naziva se okvir temeljen na zahtjevu, a sastoji se od tri glavne komponente: alata za obradu zahtjeva, alata za odgovor i knjižnice oznaka. Standardni URI (jedinstveni identifikator resursa) mapiran je u obrađivač zahtjeva. Voditelj odgovora odgovoran je za prijenos kontrole. Za stvaranje interaktivnih aplikacija s obrascima mogu se koristiti značajke koje nudi knjižnica oznaka. Podupirači podržavaju REST aplikacije i razne tehnologije poput SOAP-a, AJAX itd.
Što je Struts2?
Okviri Struts-a smatrali su da sadrže određena ograničenja (uglavnom nedostatak razdvajanja između prezentacijskog sloja, sloja za obradu zahtjeva i modela) tadašnjih Java EE programera, i posljedično nekoliko godina kasnije, Struts2 je stigao. Zapravo, Struts2 se potpuno razlikovao od Struts-a. U stvari, oni nisu dijelili ni istu bazu kodova jer je Struts2 jednostavno rezultat preimenovanja okvira WebWork 2.2 (tj. Zajednice WebWork i Struts koje su neko vrijeme radile odvojeno u konačnici su se udružile kako bi smislile Struts2). Njegovo trenutno stabilno izdanje je verzija 2.2.3, koja je objavljena u svibnju 2011.
Koja je razlika između Struts i Struts2?
Jedan od mnogih problema okvira Struts bila je potreba za programiranjem na apstraktne klase umjesto na sučelja. To je riješio okvir Struts2. Na primjer, okvir Struts zahtijeva da se klase Action prošire sa apstraktnih osnovnih klasa, ali Struts2 Action može implementirati akcijsko sučelje. Zbog razlike u modelu navoja između dvije verzije, problemi s sigurnosnim nitima koji su se pojavili u okviru Struts u vezi s Action objektima ne pojavljuju se u okviru Struts2. Razlog je što se Objekti Action Struts2 primjenjuju za svaki zahtjev, dok Akcija u Struts okviru ima samo jednu instancu koja obrađuje sve zahtjeve za ovu Akciju. Za razliku od Akcije u Struts okviru, Struts2 Akcije ne ovise o Servlet API-ju.
Provjerljivost okvira Struts2 usporedno je veća od okvira Struts2. Radnje Struts2 možete testirati jednostavno slijedeći tri koraka: instancija, postavljanje svojstava i pozivanje metoda. Berba unosa je lakša u Struts2 okviru jer se Action svojstva koriste kao ulazna svojstva, bez potrebe za zadržavanjem drugog ulaznog objekta. Osim podrške za JSTL integraciju (koja je prisutna u Struts-u), Struts2 okvir može koristiti i snažniji i ekspresivniji OGNL (Object Graph Notation Language). Za pretvorbu tipa, Strut i Strut2 koriste Commons-Beanutils i OGNL, respektivno. Zbog ovih poboljšanja, Struts2 okvir smatra se vrlo zrelim okvirom i vrlo je popularan među Java EE programerima. S druge strane, Strutsov okvir sada se smatra zastarjelim.