Tuet vs. Tuet2
Struts (tunnetaan myös nimellä Apache Struts tai Struts 1) on Java-kirjoitettu avoimen lähdekoodin kehys, joka on tarkoitettu Java EE -verkkosovellusten kehittämiseen. Se oli yksi alkuperä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 kysymyksiä, jotka pidettiin puutteellisina alkuperäisessä versiossa. Nyt Struts2: ta käytetään erittäin voimakkaasti Java EE -sovellusten kehittämiseen maailmassa.
Mikä on Struts?
Struts (Struts 1) -kehys oli yksi alkuperäisistä web-sovelluskehyksistä Java EE -verkkosovellusten kehittämiselle. Struts-kehys kannustaa MVC (Model-View-Controller) -arkkitehtuurin käyttöä. Se on Java Servlet API -sovelluksen laajennus. Craig McClanahan on Strutsin alkuperäinen luoja. Alun perin se tunnettiin nimellä Jakaratha Struts ja sitä ylläpidettiin Apache Software Foundation -säätiön Jakarta-projektissa. Se julkaistaan Apache-lisenssillä 2.0. Struts-kehystä kutsutaan pyyntöpohjaiseksi kehykseksi, ja se koostuu kolmesta pääkomponentista: pyynnönkäsittelijä, vastauskäsittelijä ja tag-kirjasto. Vakio URI (Uniform Resource Identifier) yhdistetään pyynnönkäsittelijälle. Vastauksenkäsittelijä vastaa valvonnan siirrosta. Luo interaktiivisia sovelluksia lomakkeilla, tag-kirjaston tarjoamia ominaisuuksia voidaan hyödyntää. Tuet tukevat REST-sovelluksia ja erilaisia tekniikoita, kuten SOAP, AJAX jne.
Mikä on Struts2?
Tuolloin Java EE -kehittäjät havaitsivat, että Struts-kehys sisälsi tiettyjä rajoituksia (lähinnä erottelun puuttumista esityskerroksen, pyyntöjen käsittelykerroksen ja mallin välillä), ja näin ollen muutamaa vuotta myöhemmin Struts2 saapui. Itse asiassa Struts2 oli täysin erilainen kuin Struts. Itse asiassa heillä ei ollut edes samaa koodipohjaa, koska Struts2 johtui yksinkertaisesti WebWork 2.2 -kehyksen uudelleennimeämisestä (ts. WebWork- ja Struts-yhteisöt, jotka työskentelivät jonkin aikaa erikseen, yhdistivät lopulta Struts2: n). Sen nykyinen vakaa julkaisu on versio 2.2.3, joka julkaistiin toukokuussa 2011.
Mitä eroa on tuilla ja tuilla2??
Yksi Struts-kehyksen monista ongelmista oli tarve ohjelmoida abstrakteja luokkia rajapintojen sijasta. Tämä ratkaistiin Struts2-kehyksellä. Esimerkiksi Struts-kehys vaati toimintoluokkien laajentamista abstraktista perusluokista, mutta Struts2-toiminnot voivat toteuttaa toimintarajapinnan. Kaikkien versioiden välisissä kierteitysmallien erojen vuoksi Struts-kehyksessä esille tuotuja langaturvallisuuskysymyksiä, jotka koskevat toimintaobjekteja, ei esiinny Struts2-kehyksessä. Syynä on Struts2. Toimintaobjektit toteutetaan jokaiselle pyynnölle, kun taas Toiminnassa Struts-kehyksessä on vain yksi ilmentymä kaikkien kyseistä toimintoa koskevien pyyntöjen käsittelemiseksi. Toisin kuin Actions in Struts -kehys, Struts2-toiminnot eivät ole riippuvaisia Servlet-sovellusliittymästä.
Struts2-kehyksen testattavuus on verrattain korkeampi kuin Struts-kehys. Voit testata Struts2-toiminnot yksinkertaisesti noudattamalla kolmea vaihetta: toteutusta, ominaisuuksien asettamista ja menetelmien kutsumista. Tulon kerääminen on helpompaa Struts2-kehyksessä, koska toimintaominaisuuksia käytetään syöttöominaisuuksina tarvitsematta pitää toista syöttöobjektia. JSTL-integroinnin tuen lisäksi (joka on läsnä Strutsissä) Struts2-kehys voi käyttää tehokkaampaa ja ilmaisullisempaa OGNL: tä (Object Graph Notation Language). Tyyppimuuntamisessa Strut ja Strut2 käyttävät vastaavasti Commons-Beanutils ja OGNL. Näiden parannusten takia Struts2-kehystä pidetään erittäin kypsänä viitekehyksenä ja se on erittäin suosittu Java EE -ohjelmoijien keskuudessa. Toisaalta Struts-kehystä pidetään nyt vanhentuneena.