Struts vs Struts2
Struts (tuntud ka kui Apache Struts või Struts 1) on Java keeles kirjutatud platvormideülene avatud lähtekoodiga raamistik, mis on mõeldud Java EE veebirakenduste arendamiseks. See oli üks esimesi Java EE veebirakenduste raamistikke. Kuid paar aastat hiljem saabus Struts2 (või Strutsi versioon 2) ja see oli täiesti erinev ja täiustatud veebirakenduste raamistik. See oli käsitlenud väheseid probleeme, mida peeti esialgses versioonis puudusteks. Nüüd kasutatakse Struts2-d Java EE rakenduste arendamiseks maailmas väga palju.
Mis on Struts?
Struts (Struts 1) raamistik oli üks esimesi veebirakenduste raamistikke Java EE veebirakenduste arendamiseks. Strutsi raamistik julgustab kasutama MVC (Model-View-Controller) arhitektuuri. See on Java Servleti API laiendus. Craig McClanahan on Strutsi algne looja. Algselt oli see tuntud kui Jakaratha Struts ja seda hooldati Apache Software Foundationi Jakarta projekti raames. See on välja antud Apache litsentsi 2.0 alusel. Strutsi raamistikku nimetatakse päringupõhiseks raamistikuks ja see koosneb kolmest põhikomponendist: päringu töötleja, vastuse töötleja ja silditeegi. Standardne URI (ühtne ressursiidentifikaator) on vastendatud päringukäsitlejaga. Juhtimise üleandmise eest vastutab reageerimise töötleja. Vormidega interaktiivsete rakenduste loomiseks saab kasutada silditeegi pakutavaid funktsioone. Toed toetavad REST-rakendusi ja erinevaid tehnoloogiaid, nagu SOAP, AJAX jne.
Mis on Struts2?
Strutsi raamistik sisaldas sel ajal teatud piiranguid (peamiselt esitluskihi, päringute käsitlemise kihi ja mudeli vahelise eraldatuse puudumine) Java EE arendajate poolt ja seetõttu jõudis mõni aasta hiljem kohale Struts2. Tegelikult oli Struts2 Strutsist täiesti erinev. Tegelikult ei jaganud nad isegi sama koodibaasi, sest Struts2 oli lihts alt WebWork 2.2 raamistiku ümbernimetamise tulemus (st WebWorki ja Strutsi kogukonnad, kes töötasid mõnda aega eraldi, lõid lõpuks käed Struts2 väljatöötamiseks). Selle praegune stabiilne väljalase on versioon 2.2.3, mis anti välja 2011. aasta mais.
Mis vahe on Struts ja Struts2 vahel?
Üks paljudest Strutsi raamistiku probleemidest oli vajadus programmeerida liideste asemel abstraktseid klasse. Selle lahendas Struts2 raamistik. Näiteks Strutsi raamistik nõudis Action-klasside laiendamist abstraktsetest baasklassidest, kuid Struts2 Actions saab rakendada Action-liidest. Kahe versiooni keermestusmudeli erinevuste tõttu ei esine Strutsi raamistikus tegevusobjektidega seotud lõime ohutuse probleeme Struts2 raamistikus. Põhjus on selles, et Struts2 Action objektid instantseeritakse iga päringu jaoks, samas kui Strutsi raamistiku toimingul on ainult üks eksemplar, mis käsitleb kõiki selle toimingu taotlusi. Erinev alt raamistikust Actions in Struts ei sõltu Struts2 toimingud Servleti API-st.
Struts2 raamistiku testitavus on suhteliselt kõrgem kui Struts raamistikul. Saate katsetada Struts2 toiminguid, järgides lihts alt kolme sammu: käivitamine, atribuutide seadistamine ja meetodite kutsumine. Sisendite kogumine on Struts2 raamistikus lihtsam, kuna toimingu atribuute kasutatakse sisendatribuutidena, ilma et oleks vaja säilitada teist sisendobjekti. Lisaks JSTL-i integratsiooni toele (mis on Strutsis olemas) saab Struts2 raamistik kasutada võimsamat ja väljendusrikkamat OGNL-i (Object Graph Notation Language). Tüübi teisendamiseks kasutavad Strut ja Strut2 vastav alt Commons-Beanutils ja OGNL. Nende täiustuste tõttu peetakse Struts2 raamistikku väga küpseks raamistikuks ja see on Java EE programmeerijate seas väga populaarne. Teisest küljest peetakse Strutsi raamistikku nüüdseks aegunuks.