http://jakarta.apache.org/tapestryfaj: java alapú web framework (lásd még
struts, webwork2,
http://waferproject.org )
alfaj: komponens alapú web framework (mint pl.
jsf)
jellemzők: Szakítás a hagyományos
MVC paradigmával, komponens alapú fejlesztésre helyezve a hangsúlyt. Eltérően a hagyományos MVC-vel, az alkalmazás fejlesztőjének nem kell törődnie az URL paraméterekkel, a Session objecttel, úgy általában a
Servlet API-val (Természetesen ettől függetlenül lehetőség van az API elérésére). Ennek következtében az evolúció ezen szakaszában a framework által generált URL-ek nem túl kereső- és bookmark barátok, de ez a közeljövőben változni fog, és egyébként is van workaround.
Sok ötletet merít az Apple féle WebObjects nevű projektből, így akik azt ismerik, a Tapestry-t is ismerősnek találják majd.
A rugalmas felépítésnek köszönhetően rengeteg előnnyel rendelkezik a többi fajhoz képest:
- Parameter binding. A framework automatikusan bindingeli (hunglish rulez again) a request parametereket a fejlesztő által írt java osztályok property-jeihez. Ehhez kapcsolódik egy nagyon király validation facility, ahol magát a validáció logikáját is meghatározhatjuk (ha nem elég az a pár default validation bean, amit már születéskor tartalmaz a szervezet), csakúgy, mint a tüneteket (look & feel).
- Session handling. Lehetőség van a "régimódi" session kezelésre, azaz a session objektumban eltárolni a session adatait, de köszönhetően a persistent component property-knek, a tökölés a sessionnel nagyban lecsökkenthető. A persistent component property azt jelenti, hogy minden komponens deklarálhat property-ket, amik ha persistentként vannak deklarálva, a framework gondoskodik arról, hogy a session során ezek megőrizzék értéküket. Ennek köszönhetően a hosszútávú memóriában észlelhető zavarok is csökkenthetőek.
- Valid HTML templates. A bestia külső felépítése nagyban megkönnyíti a fodrászok, mani- és pedikűrösök, esetleg plasztikai sebészek munkáját. A Tapestry template-ek érvényes (X)HTML file-ok, amit egy mezei, Java-hoz, tag library-khez mit sem értő web designer is könnyen elkészíthet, sőt, az operáció előtt lehetőség van a végeredmény azonnali tesztelésére html böngészők segítségével.
- High level of reuse. Már születéskor tartalmazza a fejlesztéshez
elengedhetetlen komponenseket (framework library), egyéb hasznos komponenseket (contrib library), és még wml komponenseket is (wml library). Saját library-k készítése és felhasználása gyerekjáték. Ezek fejlesztése (legjobb tudomásom szerint) jóval egyszerűbb, mint a JSP tag-libraryk fejlesztése.
- Line precise error reporting. Ez kemény. Ha beteg megmondja hol fáj, mi fáj, és még a vércsoportját is közli. Najó, kicsit kevésbé elvontan tartalmaz egy komponenst a framework, ami megjelenít minden információt egy el nem kapott kivétel esetén. Erősen addiktív feature.
példa kórlap .
- Dokumentáció. Sokáig nagy hibája volt a fajnak, hogy belső felépítését csak néhány beavatott, igen képzett kutató ismerte. Az kutatáshoz újonnan hozzákezdő zöldfülűeknek nagy gondot okozott a megszokott MVC arhitektúráktől eltérő fejlesztési model. Szerencsére manapság sokkal több információ áll rendelkezésre a lelkes fejlesztők számára. A cikk végén felsorolásra kerülnek a lelőhelyek is. A dokumentációkon kívül - jó opensource hagyományokhoz híven - a levelező lista igen segítőkész és hatékony.
- IDE support (Csak eclipse egyelőre, de hát az A java ide nem? ;-)). Bár Tapestry alkalmazások könnyedén fejleszthetők egy pőre vim segítségével is, de a
http://spindle.sourceforge.net project sok-sok unalmas gépeléstől és hibakereséstől mentesíti a fejlesztőt. A spindle alkotója szerencsére nem esett abba a hibába, hogy egy WYSIWYG típúsu szörnyet készítsen. Ehelyett code completion, egy-két wizard található benne, és egy saját builder, ami képes (elvileg) minden hibát észlelni a html template-ekben és component descriptorokban.
Számos előnye mellett néhány hátránnyal is rendelkezik a faj, amik elsőrorban szociális problémák (lassan múló beilleszkedési zavarok):
- Learning curve. A hagyományos MVC-hez szokott fejlesztőknek eltarthat egy darabig, amíg hozzászoknak az inkább a swinghez, mintsem a Model2 MVC-hez hasonló fejlesztési modelhez.
- Nem mainstream. A Struts mellett nehezen jut szóhoz. A struts gyakorlatilag a szabvány J2EE view layer technológia. Mint általában a szabványoknál, nem feltétlenül a legfejlettebb megoldás, de sokan használják.
- A SUN helyett az apache áll mögötte. Nem rossz társaság az apache group (bár vannak furcsa szokásaik), mégsem olyan erőteljes szervezet, mint a SUN. A SUN mostanában kezdi erőltetni a JSF nevű új technológiáját, ami elmondások szerint egy a tapestry-hez hasonló szörnyeteg, de igazi developer toolok nélkül esélytelen a fejlesztés JSF-el. Mivel erős lobbi áll mögötte (SUN és más tool developers) várhatóan jobban elterjed majd, mint a kis Tapestry :-(
Néhány lelőhely bővebb információkra éhezőknek:
Minta alkalmazások:
references to tapestry: (36)
ognl, 1-4, 1-6, 1-1, Spindle, Spindle, 1-1, iCal webapp-4, 1, 1, MVC, Trails, 1, Archetype, Component Based Web Frameworks, 2, 5, 1-1, petshop collection, ajax, 1, ASF, rad, hivemind, appfuse, kocka, ioc, myeclipse, annotations, tiles, j2ee, spring, blog, webapp, maven2, topics