Struts proti Struts2
Struts (znan tudi kot Apache Struts ali Struts 1) je odprtokodno ogrodje za več platform, napisano v Javi, ki je namenjeno razvoju spletnih aplikacij Java EE. Bilo je eno od začetnih ogrodij spletnih aplikacij Java EE. Toda nekaj let kasneje je prišel Struts2 (ali Struts različica 2) in bil je popolnoma drugačen in zelo izboljšan okvir spletne aplikacije. Odpravil je nekaj težav, ki so bile v začetni različici zaznane kot pomanjkljivosti. Zdaj se Struts2 zelo pogosto uporablja za razvoj aplikacij Java EE v svetu.
Kaj je Struts?
Ogrodje Struts (Struts 1) je bilo eno od začetnih ogrodij spletnih aplikacij za razvoj spletnih aplikacij Java EE. Struts framework spodbuja uporabo MVC (Model-View-Controller) arhitekture. Je razširitev API-ja Java Servlet. Craig McClanahan je izvirni ustvarjalec Strutsov. Sprva je bil znan kot Jakaratha Struts in je bil vzdrževan v okviru Jakarta Project of Apache Software Foundation. Izdan je pod licenco Apache 2.0. Ogrodje Struts se imenuje ogrodje, ki temelji na zahtevah, in je sestavljeno iz treh glavnih komponent: obdelovalnika zahtev, obdelovalnika odgovorov in knjižnice oznak. Standardni URI (Uniform Resource Identifier) je preslikan v obravnavo zahtev. Upravljavec odziva je odgovoren za prenos nadzora. Za ustvarjanje interaktivnih aplikacij z obrazci je mogoče uporabiti funkcije, ki jih ponuja knjižnica oznak. Struts podpira aplikacije REST in različne tehnologije, kot so SOAP, AJAX itd.
Kaj je Struts2?
Takratni razvijalci Java EE so menili, da ogrodje Struts vsebuje določene omejitve (predvsem pomanjkanje ločevanja med predstavitveno plastjo, plastjo za obdelavo zahtev in modelom), posledično pa je nekaj let pozneje prišel Struts2. Pravzaprav je bil Struts2 popolnoma drugačen od Strutsa. Pravzaprav niti niso delili iste kodne baze, ker je bil Struts2 preprosto rezultat preimenovanja ogrodja WebWork 2.2 (tj. skupnosti WebWork in Struts, ki sta nekaj časa delali ločeno, sta si na koncu združili roke, da bi ustvarili Struts2). Njegova trenutna stabilna izdaja je različica 2.2.3, ki je bila izdana maja 2011.
Kakšna je razlika med Struts in Struts2?
Eden od mnogih problemov ogrodja Struts je bila potreba po programiranju za abstraktne razrede namesto vmesnikov. To je rešil okvir Struts2. Ogrodje Struts je na primer zahtevalo, da se razredi Action razširijo iz abstraktnih osnovnih razredov, vendar lahko Struts2 Actions implementira vmesnik Action. Zaradi razlik v modelu niti med obema različicama se težave z varnostjo niti, ki so se pojavile v ogrodju Struts v zvezi z objekti Action, ne pojavijo v ogrodju Struts2. Razlog je v tem, da so objekti Struts2 Action instancirani za vsako zahtevo, medtem ko ima Action v okviru Struts samo en primerek za obravnavo vseh zahtev za to dejanje. Za razliko od dejanj v ogrodju Struts dejanja Struts2 niso odvisna od API-ja Servlet.
Preizkusnost ogrodja Struts2 je sorazmerno višja od ogrodja Struts. Dejanja Struts2 lahko preprosto preizkusite po treh korakih: instancacija, nastavitev lastnosti in priklic metod. Zbiranje vhodnih podatkov je v ogrodju Struts2 lažje, saj se lastnosti dejanj uporabljajo kot vhodne lastnosti, ne da bi morali ohraniti drugi vhodni objekt. Poleg podpore za integracijo JSTL (ki je prisotna v Strutsu) lahko ogrodje Struts2 uporablja močnejši in izrazitejši OGNL (Object Graph Notation Language). Za pretvorbo tipa Strut in Strut2 uporabljata Commons-Beanutils oziroma OGNL. Zaradi teh izboljšav se ogrodje Struts2 šteje za zelo zrelo ogrodje in je zelo priljubljeno med programerji Java EE. Po drugi strani pa se ogrodje Struts zdaj šteje za zastarelo.