Jouset vs. Jouset 2
Struts (tunnetaan myös nimellä Apache Struts tai Struts 1) on Java-kielellä kirjoitettu alustojen välinen avoimen lähdekoodin kehys, joka on tarkoitettu Java EE -verkkosovellusten kehittämiseen. Se oli yksi alkuperäisistä Java EE -verkkosovelluskehyksistä. Mutta muutama vuosi myöhemmin Struts2 (tai Struts-versio 2) saapui, ja se oli täysin erilainen ja erittäin parannettu verkkosovelluskehys. Se oli käsitellyt muutamia asioita, joiden alkuperäisessä versiossa pidettiin puutteina. Struts2: ta käytetään nyt erittäin voimakkaasti Java EE -sovellusten kehittämiseen maailmassa.
Mikä on Struts?
Struts (Struts 1) -kehys oli yksi ensimmäisistä verkkosovelluskehyksistä Java EE -verkkosovellusten kehittämiseksi. Struts-kehys kannustaa käyttämään MVC (Model-View-Controller) -arkkitehtuuria. Se on Java Servlet -sovellusliittymän laajennus. Craig McClanahan on Strutsin alkuperäinen luoja. Aluksi se tunnettiin nimellä Jakaratha Struts ja sitä ylläpidettiin Apache Software Foundation -säätiön Jakarta-projektin alla. Se julkaistaan Apache License 2.0: lla. Struts-kehystä kutsutaan pyyntöpohjaiseksi kehykseksi, ja se koostuu kolmesta pääkomponentista: pyynnön käsittelijä, vastauksen käsittelijä ja tunnistekirjasto. Tavallinen URI (Uniform Resource Identifier) on yhdistetty pyynnön käsittelijään. Vastekäsittelijä on vastuussa valvonnan siirtämisestä. Luomalla vuorovaikutteisia sovelluksia lomakkeilla voidaan käyttää tunnistekirjaston tarjoamia ominaisuuksia. Struts tukee REST-sovelluksia ja erilaisia tekniikoita, kuten SOAP, AJAX jne.
Mikä on Struts2?
Struts-kehyksen havaittiin sisältävän tiettyjä rajoituksia (lähinnä esityskerroksen, pyynnönkäsittelykerroksen ja mallin välisen erotuksen puuttumisen) Java EE -kehittäjien tuolloin, ja muutama vuosi myöhemmin Struts2 saapui. Oikeastaan Struts2 oli täysin erilainen kuin Struts. Itse asiassa he eivät edes jakaneet 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, liittyivät lopulta Struts2: n keksimiseen). Sen nykyinen vakaa julkaisu on versio 2.2.3, joka julkaistiin toukokuussa 2011.
Mitä eroa on joustavilla ja joustavilla2?
Yksi Struts-kehyksen monista ongelmista oli tarve ohjelmoida abstrakteihin luokkiin rajapintojen sijaan. Tämä ratkaistiin Struts2-kehyksellä. Esimerkiksi Struts-kehys vaati Action-luokkien laajentamista abstraktista perusluokasta, mutta Struts2 Actions voi toteuttaa Action-käyttöliittymän. Struts2-kehyksessä ei tapahdu ketjutusmallin eroja kahden version välillä Struts-kehyksessä esiin tulleita langan turvallisuuskysymyksiä, jotka koskevat toiminto-objekteja. Syy on se, että Struts2 Action -objektit instantioidaan jokaiselle pyynnölle, kun taas Action in Struts -kehyksessä on vain yksi esiintymä, joka käsittelee kaikki kyseisen toiminnon pyynnöt. Toisin kuin Actions in Struts -kehyksessä, Struts2-toiminnot eivät ole riippuvaisia Servlet-sovellusliittymästä.
Struts2-kehyksen testattavuus on verrattain korkeampi kuin Struts-kehys. Voit testata Struts2-toimintoja yksinkertaisesti seuraamalla kolmea vaihetta: instantiointi, ominaisuuksien asettaminen ja menetelmien kutsuminen. Struts2-kehyksessä syötteen kerääminen on helpompaa, koska toiminto-ominaisuuksia käytetään syöttöominaisuuksina ilman, että pitää pitää toista syöttöobjektia. Struts2-kehys voi käyttää JSTL-integraation tuen (joka on Strutsissa) lisäksi tehokkaampaa ja ilmeikkäämpää OGNL: ää (Object Graph Notation Language). Strut2 käyttää tyypin muuntamiseen Commons-Beanutils ja OGNL. Näiden parannusten takia Struts2-kehystä pidetään erittäin kypsänä kehyksenä, ja se on erittäin suosittu Java EE -ohjelmoijien keskuudessa. Toisaalta Struts-kehystä pidetään nyt vanhentuneena.