Struts vs Struts2
Struts (tunnetaan myös nimellä Apache Struts tai Struts 1) on Java-kielellä kirjoitettu monikäyttöinen avoimen lähdekoodin kehys, joka on tarkoitettu Java EE -verkkosovellusten kehittämiseen. Se oli yksi ensimmäisistä Java EE -verkkosovelluskehyksistä. Mutta muutamaa vuotta myöhemmin Struts2 (tai Struts-versio 2) saapui, ja se oli täysin erilainen ja erittäin parannettu verkkosovelluskehys. Siinä oli käsitelty muutamia ongelmia, joita pidettiin alkuperäisen version puutteina. Nyt Struts2:ta käytetään erittäin paljon Java EE -sovellusten kehittämiseen maailmassa.
Mikä on Struts?
Struts (Struts 1) -kehys oli yksi ensimmäisistä verkkosovelluskehyksistä Java EE -verkkosovellusten kehittämiseen. Struts-kehys kannustaa MVC-arkkitehtuurin (Model-View-Controller) käyttöön. Se on Java Servlet API:n laajennus. Craig McClanahan on Strutsin alkuperäinen luoja. Alun perin se tunnettiin nimellä Jakaratha Struts, ja sitä ylläpidettiin Apache Software Foundationin Jakarta Projectissa. Se on julkaistu Apache License 2.0 -lisenssillä. Struts-kehystä kutsutaan pyyntöpohjaiseksi kehykseksi, ja se koostuu kolmesta pääkomponentista: pyyntökäsittelijästä, vastauskäsittelijästä ja tunnistekirjastosta. Vakio-URI (Uniform Resource Identifier) on yhdistetty pyyntökäsittelijään. Vastauskäsittelijä vastaa ohjauksen siirrosta. Vuorovaikutteisten sovellusten luomiseen lomakkeilla voidaan hyödyntää tunnistekirjaston tarjoamia ominaisuuksia. Tuet tukevat REST-sovelluksia ja erilaisia teknologioita, kuten SOAP, AJAX jne.
Mikä on Struts2?
Java EE:n kehittäjät havaitsivat tuolloin Struts-kehyksen sisältävän tiettyjä rajoituksia (lähinnä esityskerroksen, pyyntöjenkäsittelykerroksen ja mallin välisen eron puuttuminen), ja näin ollen Struts2 saapui muutamaa vuotta myöhemmin. Itse asiassa Struts2 oli täysin erilainen kuin Struts. Itse asiassa he eivät edes jakaneet samaa koodipohjaa, koska Struts2 oli yksinkertaisesti seurausta WebWork 2.2 -kehyksen uudelleennimeämisestä (eli WebWork- ja Struts-yhteisöt, jotka työskentelivät jonkin aikaa erikseen, yhtyivät lopulta yhteen ja keksivät Struts2:n). Sen nykyinen vakaa julkaisu on versio 2.2.3, joka julkaistiin toukokuussa 2011.
Mitä eroa on Strutsilla ja Struts2:lla?
Yksi Struts-kehyksen monista ongelmista oli tarve ohjelmoida abstrakteja luokkia rajapintojen sijaan. Tämä ratkaistiin Struts2-kehyksellä. Esimerkiksi Struts-kehys vaati Action-luokkien laajentamista abstrakteista perusluokista, mutta Struts2 Actions voi toteuttaa Action-rajapinnan. Kahden version ketjutusmallin eroista johtuen Struts-kehyksessä Action-objektien os alta esiin tulleita säikeen turvallisuusongelmia ei esiinny Struts2-kehyksessä. Syynä on se, että Struts2 Action -objektit instantoidaan jokaiselle pyynnölle, kun taas Struts-kehyksen toiminnolla on vain yksi ilmentymä käsittelemään kaikki kyseisen toiminnon pyynnöt. Toisin kuin Actions in Struts -kehys, Struts2 Actions ei ole riippuvainen Servlet API:sta.
Struts2-kehyksen testattavuus on verrattain korkeampi kuin Struts-kehyksen. Voit testata Struts2 Actions -toimintoja seuraamalla kolmea vaihetta: ilmentäminen, ominaisuuksien asettaminen ja menetelmien kutsuminen. Syötteen kerääminen on helpompaa Struts2-kehyksessä, koska Action-ominaisuuksia käytetään syöttöominaisuuksina ilman, että toista syöttöobjektia tarvitsee säilyttää. JSTL-integraation tuen (joka on Strutsissa) lisäksi Struts2-kehys voi käyttää tehokkaampaa ja ilmeikkäämpää OGNL:ää (Object Graph Notation Language). Tyyppimuunnokseen Strut ja Strut2 käyttävät Commons-Beanutils ja OGNL, vastaavasti. Näiden parannusten ansiosta Struts2-kehystä pidetään erittäin kypsänä kehyksenä ja se on erittäin suosittu Java EE -ohjelmoijien keskuudessa. Toisa alta Struts-kehystä pidetään nyt vanhentuneena.