Az AJAX alapjaiban változtatja meg a web interakciós modelljét. A szinkron, nagy granularitású (sok adat ritkán küldve) webkérések számára – mely a hagyományos webkliensekre jellemző – elegendő a minimális cachelés és nincs szükség session szintű konkurenciára. Ez az állapotfüggetlen (stateless) architektúra sok esetben életképes megoldás, de ez a jövőben egyre kevésbé lesz így.
1. Így válhatunk a leggyorsabban „gazdaggá”
Az AJAX alapjaiban változtatja meg a web interakciós modelljét. A szinkron, nagy granularitású (sok adat ritkán küldve) webkérések számára – mely a hagyományos webkliensekre jellemző – elegendő a minimális cachelés és nincs szükség session szintű konkurenciára. Ez az állapotfüggetlen (stateless) architektúra sok esetben életképes megoldás, de ez a jövőben egyre kevésbé lesz így. Az AJAX kliensek felől számos aszinkron, konkurens, finom granularitású kérés (kevés adat sűrűn küldve) érkezik a szerver felé, ami könnyen térdre kényszeríthetné az adatbázisunkat. Abban az esetben, amikor a kérések között az állapotot a memóriában tároljuk, nagy az esélye a konkurenciához kapcsolódó hibák fellépésének, mivel a Java EE platformnak nincs megfelelő konstrukciója a session szintű konkurencia kezelésére.
A Seam teljesen egyedülálló konkurencia- és állapotkezelő modelljének ötlete úgy született meg, illetve úgy lett megtervezve, hogy az AJAX mindig szem előtt volt.
A Seam 1.1 az olyan nyílt forráskódú JSF alapú AJAX megoldásokat, mint például az ICEfaces és az Ajax4JSF, a Seam állapot- és konkurencia-kezelő motorjával integrálja. Az AJAX-ot könnyen az alkalmazásokhoz adhatjuk, anélkül, hogy meg kellene tanulnunk a JavaScriptet, és szintén védettek vagyunk az AJAX-ra való váltáshoz kapcsolódó potenciális hibáktól és teljesítményi problémáktól.
2. Az EJB 3.0 használatával való megismerkedés legegyszerűbb módja
Az EJB 3.0 egy nagyszerű komponens modell a tranzakcionális üzleti komponensek számára. Fő jellemzője az új Java Persistence API (JPA). Azonban azon Java webes és alkalmazási keretrendszerek esetén, melyek az EJB 3.0 megjelenése előtt lettek tervezve, nem beszélhetünk az új komponens modellek támogatásáról, ami azt jelenti, hogy saját magunknak kell megírni az integrációs kódot, és ez sok esetben ránk kényszeríti a rétegzett architektúra használatát, ami nem is biztos, hogy megfelelő az adott alkalmazás számára.
A Seamet az EJB 3.0-val való használatra tervezték, és lehetővé teszi az új komponens modell használatát mindenhol. Mivel a Seamben bármilyen osztály lehet EJB komponens, nincs szükség további, különben szükségtelen rétegek bevezetésére a keretrendszer működéséhez. És természetesen nincs szükség kódírásra az EJB 3.0 integrálásához a webes keretrendszerrel, mivel a Seam ezt már megtette.
Fontos megjegyeznünk, hogy nincs feltétlen szükségünk EJB 3.0-ra a Seam használatához, és ha olyan környezetben fejlesztünk, ami nem támogatja az EJB 3.0-át, a Seam erre is nyújt alternatívát.
3. A JSF kihasználásának legjobb módja
A JSF a komponens libtárak és más bővítmények élénk rendszerét hozta létre, így vált a legizgalmasabb Java-alapú webes keretrendszerré. Azonban a szimpla JSF nagymértékben az XML-re támaszkodik, és bizonyos fontos jellemzőket sem tartalmaz, különösen igaz ez internetre fejlesztendő alkalmazások esetén. A Seam az unalmas XML konfigurációt annotációkkal váltja fel, amivel csökken a kód mennyisége és hatékonyabbá válik a fejlesztők munkája. A Seam a JSF-et további funkcionalitással terjeszti ki a több ablakos működéshez és a munkaterület kezeléséhez, a modell-alapú validációhoz, a jBPM alapú weboldal-vezérléshez, a nemzetköziesítéshez, illetve az oldaltöredékek cacheléséhez. A Seam még a könyvjelzők használatát lehetővé tevő (REST stílusú) weboldalakat kezelő eszközöket is tartalmaz, ami a JFS használatával kapcsolatos legnagyobb felhasználói kifogásra megoldás.
Mivel a JSF nem foglalkozik a tranzakcionális erőforrásokhoz való hozzáférés problémájával, a Seam integrációja a JTA, a JPA és az EJB 3.0 rendszerekkel elengedhetetlen a legtöbb JSF felhasználónak.
4. A BPM legkönnyebb módja
A jBPM egy intuitív és hatékony megoldás az olyan vállalati alkalmazások számára, melyek összetett emberi együttműködést igényelnek, illetve az összetett felhasználói interakcióval jellemzett webes alkalmazások számára. A BPM technológia nemcsak könnyebbé teszi a fejlesztőknek és az elemzőknek, hogy modellezzék, implementálják és optimalizálják az üzleti folyamatokat, hanem azt is lehetővé teszi az üzemeltetés és a menedzsment számára, hogy az üzleti folyamatok hatékonyságát elemezzék, és a problémákról tudomást szerezzenek.
A Seam mélyen integrálja a jBPM-et, valamint hihetetlenül megkönnyíti a jBPM használatát feladatkezelésre vagy weboldal folyamkezelésre, illetve nagyszerű módját nyújtja a BPM technológiával való megismerkedésnek. A Seam és a jBPM ötvözése szó szerint hónapokkal csökkenti le bizonyos projektek fejlesztési idejét.
5. CRUD-ot is könnyű használni
A Seam az összetett vállalati alkalmazásokat érintő problémákkal küzd meg. Azonban ez nem jelenti azt, hogy az eddigi könnyebbséget a bonyolultság váltja fel. A Seam minden szempontból van olyan hatékony, mint bármely jelenlegi CRUD (Create-Update-Delete) keretrendszer, amikor egyszerű, adatvezérelt alkalmazások fejlesztéséről van szó. A Seam a parancssor kódgenerálási és adatbázis visszafejtő fejlesztési eszközöket egyszerű adathozzáférési-keretrendszerrel ötvözi (melyek a JPA és a Hibernate köré épültek) azért, hogy percek alatt elkezdhessük a munkát.
6. A perzisztencia is könnyen megvalósítható
A Seam a Hibernate közösségből nőtte ki magát és a Hibernate-et, illetve a perzisztencia kontextus fogalmát létrehozó fejlesztők tervezték és implementálták. A Seam párbeszéd-modellje sok perzisztenciával kapcsolatos programozási problémát old meg, melyeket a hagyományos, állapotfüggetlen webes alkalmazás architektúrák okoznak. Akár Hibernate-et, akár JPA-t használunk, a Seam könnyűvé és természetessé teszi a kiterjesztett perzisztencia kontextusok használatát, és abban is segít, hogy elkerüljük a szükségtelen állapot-replikációt, amikor kiterjesztett perzisztencia kontextust használunk klaszterezett környezetben.
7. Annotációk
A Seam az első programozási modell, ami lehetővé teszi a Java 5 annotációk használatát végponttól végpontig, a perzisztencia rétegtől a felhasználói felületig. Sosem kell „zajos” XML-ekkel küzdenünk. Ez nem azt jelenti, hogy a Seam nem használ XML-t, amikor az szükséges (a Seam egy kifinomult XML alapú komponens konfigurációs képességgel is rendelkezik), hanem ez azt jelenti, hogy az általános programozási feladatok során nem veszünk el az XML-ek rengetegében.
8. Automatizált integrációs tesztelés
Az automatizált egység-alapú tesztekre (unit test) igény mutatkozik bármelyik projekt során. Azonban több, mint veszélyes kizárólag az egység-alapú tesztelésre támaszkodni. A legtöbb hiba a komponensek közötti interakcióra, és a komponensek illetve a konténer környezet közötti interakciókra vezethető vissza. A tesztelési egységek nem képesek arra, hogy megfelelően modellezzék a konténer viselkedését, és rendszerint nem írják le az összetett, komponensek közötti interakciókat sem. A Seam az automatizált integrációtesztelés innovatív megközelítését vezeti be, ahol egy kérés vagy párbeszéd teljes folyamát emulálhatjuk, és tesztelhetjük a Java kód minden rétegét az alkalmazásban, a prezentációtól a perzisztenciáig.
9. A nyílt forráskódot a nyílt szabványokkal ötvözi
A Seam az olyan nyílt szabványok nyílt forráskódú implementációin alapul, mint a JSF és az EJB 3.0, olyan nyílt forráskódú újító technológiákkal egyetemben, mint a Hibernate, a jBPM, a Facelets, a Drools, az ICEfaces és az Ajax4JSF. A Seam létrehozói aktívan közreműködnek az EJB, JPA, Bean Validation és JSF szakértői csoportokban, és a Web Beans (JSR-299) szakértői csoportot vezetik, melynek célja a Seam ötletek beültetése a Java EE szabványba. A Seam projekt teljes mértékben elkötelezett a nyílt forráskódú innováció iránt, mely a Java platform új ötleteinek kialakítását és bővítéseit segíti elő.
10. Egyszerűen csak működik
Végül az utolsó ok a használatra az, hogy próbáljuk csak ki, mert biztosan elnyeri majd tetszésünket.