Struts proti Struts2
Struts (znan tudi kot Apache Struts ali Struts 1) je medplatični odprtokodni okvir, zapisan v Javi, ki je namenjen razvoju spletnih aplikacij Java EE. Bil je eden od začetnih okvirov spletnih aplikacij Java EE. Toda nekaj let pozneje je prišel Struts2 (ali Struts različica 2) in bil je povsem drugačen in zelo izboljšan okvir spletnih aplikacij. Obravnaval je nekaj vprašanj, ki so bila v prvotni različici zaznana kot pomanjkljivosti. Zdaj se Struts2 zelo pogosto uporablja za razvoj aplikacij Java EE v svetu.
Kaj je Struts?
Okvir Struts (Struts 1) je bil eden od začetnih okvirov spletnih aplikacij za razvoj spletnih aplikacij Java EE. Okvir opornic spodbuja uporabo arhitekture MVC (Model-View-Controller). To je razširitev Java Servlet API-ja. Craig McClanahan je prvotni ustvarjalec Struts-a. Sprva je bil znan kot Jakaratha Struts, vzdrževal pa se je v okviru projekta Jakarta Project of Apache Software Foundation. Izhaja pod licenco Apache 2.0. Ogrodje Struts se imenuje okvir, ki temelji na zahtevi, in ga sestavljajo tri glavne komponente: obravnavalec zahtevkov, odzivnik in knjižnica oznak. Standardni URI (enotni identifikator vira) je preslikan na upravitelja zahteve. Za prenos nadzora je odgovoren obdelovalec odzivov. Za ustvarjanje interaktivnih aplikacij z obrazci je mogoče uporabiti funkcije, ki jih ponuja knjižnica oznak. Oporniki podpirajo aplikacije REST in različne tehnologije, kot so SOAP, AJAX itd.
Kaj je Struts2?
Takrat so razvijalci Java EE zaznali, da okvirji Struts vsebujejo določene omejitve (predvsem pomanjkanje ločevanja med predstavitvenim slojem, slojem za obdelavo zahtevkov in modelom) in posledično nekaj let pozneje je prišel Struts2. Pravzaprav se je Struts2 povsem razlikoval od Strutsa. Pravzaprav si niso delili iste baze kode, ker je bil Struts2 preprosto rezultat preimenovanja okvira WebWork 2.2 (tj. Skupnosti WebWork in Struts, ki sta nekaj časa delali ločeno, sta na koncu združili roke, da sta si ustvarila Struts2). Njegova trenutna stabilna izdaja je različica 2.2.3, ki je izšla maja 2011.
Kakšna je razlika med Struts in Struts2?
Eden od številnih težav okvira Struts je bila potreba po programiranju abstraktnih razredov namesto vmesnikov. To je rešil okvir Struts2. Na primer, okvir Struts zahteva, da se razredi akcij razširijo iz abstraktnih osnovnih razredov, vendar lahko Struts2 Action izvajajo vmesnik Action. Zaradi razlik v modelu navoja med dvema različicama vprašanja o varnosti niti, ki so se pojavila v okviru Struts glede objektov Action, se v okviru Struts2 ne pojavljajo. Razlog je, da se predmeti Struts2 Action namenijo za vsako zahtevo, medtem ko ima dejanje v okviru Struts le en primerek za obravnavo vseh zahtev za to dejanje. Za razliko od dejanj v okviru Struts, dejanja Struts2 niso odvisna od strežniškega API-ja.
Testabilnost okvira Struts2 je sorazmerno večja od okvira Struts. Dejanja Struts2 lahko preizkusite tako, da sledite trem korakom: instanca, nastavitev lastnosti in priklic metod. Nabiranje vnosa je v okviru Struts2 lažje, saj se lastnosti lastnosti uporabljajo kot vhodne lastnosti, ne da bi morali obdržati drugi vhodni objekt. Razen podpore za integracijo JSTL (ki je prisotna v Struts) lahko okvir Struts2 uporablja tudi močnejši in izraznejši OGNL (Object Graph Notation Language). Za pretvorbo vrst Strut in Strut2 uporabljata Commons-Beanutils oziroma OGNL. Zaradi teh izboljšav okvir Struts2 velja za zelo zrel okvir in je zelo priljubljen med programerji Java EE. Po drugi strani je okvir Struts danes zastarel.