Jakarta Server arcok - Jakarta Server Faces
| Eredeti szerző (k) | Sun Microsystems |
|---|---|
| Fejlesztő (k) | Eclipse Alapítvány |
| Stabil kiadás | 2.3.2 / 2019. augusztus 20 .
|
| Előnézet kiadása | 3.0.0 RC1 / 2020. március 7 .
|
| Adattár |
|
| Beírva | Jáva |
| típus | Webalkalmazás-keretrendszer |
| Weboldal |
jakarta |
A Jakarta Server Faces ( JSF ; korábban JavaServer Faces) egy Java- specifikáció, amely összetevőkön alapuló felhasználói felületek építésére szolgál webalkalmazásokhoz, és amelyet a Java közösségi folyamat részeként a Java Platform, Enterprise Edition részeként formalizáltak szabványként . Ez is egy MVC webes keretrendszer , amely leegyszerűsíti építési felhasználói felületek (UI) a szerver-alapú alkalmazások segítségével újrahasznosítható UI komponensek oldalt.
A JSF 2 alapértelmezett sablonrendszerként a Facelets alkalmazást használja . Más nézet technológiák is alkalmazhatók, mint például az XUL vagy a sima Java. Ezzel szemben a JSF 1.x alapértelmezett sablonrendszerként a JavaServer Pages (JSP) szolgáltatást használja.
Történelem
2001-ben az eredeti Java Specification Request (JSR) arra a technológiára, amely végül JavaServer Faces lett, egy csomag nevű csomag kifejlesztését javasolta javax.servlet.ui
2001 júniusáig a JavaWorld beszámol Amy Fowler csapatának "JavaServer Faces API" (más néven "Moonwalk") - "webalapú felhasználói felületek létrehozására szolgáló alkalmazás-keretrendszer" - tervezéséről.
Legfrissebb fejlemények
A Facelets-et (amelyet kifejezetten a Java Server Faces-hez tervezték) a JSF 2.0 hivatalos nézettechnológiájaként fogadták el. Ez kiküszöböli a JSP-vel fennálló életciklus-konfliktusokat, kiküszöbölve a Java fejlesztők által megkerülő megoldásokat. A Facelets lehetővé teszi az összetevők / címkék egyszerű létrehozását Java kód helyett XML jelöléssel, ez a legfőbb panasz a JSF 1.x ellen.
Az új JSF fejlesztések széles körű hozzáférést biztosítanak a Java 5 annotációkhoz, mint például @ManagedBean, @ManagedPropertyés @FacesComponentez faces-config.xmlminden esetben feleslegessé teszi a keretrendszer-kiterjesztés kivételével. A navigációt egyszerűsítették, feleslegessé vált a faces-config.xmlnavigációs esetek szükségessége . Az oldalátmeneteket egyszerűen meg lehet hívni a kívánt Nézet / Arclap nevének átadásával.
A részleges állapotmegtakarítás és a DOM frissítések hozzáadása a beépített szabványosított Ajax támogatáshoz tartozik.
A legújabb JSF kiadás beépített támogatást nyújt az olyan erőforrások kezeléséhez, mint a képek, a CSS és a Javascript, lehetővé téve a műtermékek hozzáadását az alkatrészkönyvtárakhoz, JAR fájlokba szétválasztását vagy egyszerűen a helymeghatározást a webalkalmazásban. Ez magában foglalja az erőforrások logikai elnevezését és verziószámosítását.
A JSF 2.0 számos egyéb változtatást is tartalmaz, például az események támogatását, különálló fejlesztési, stádiumi és gyártási módokat, hasonlóan RAILS_ENVa Ruby on Rails-hez , és jelentősen kibővítve a szabványos alkatrészkészletet.
Verziók
- JSF 2.3 (2017-03-28) - Főbb jellemzők: Kifejezések, kiterjesztés nélküli URL-ek keresése, egész osztályok babellenőrzése, push kommunikáció a WebSocket használatával , fokozott integráció a CDI-vel.
- JSF 2.2 (2013-05-21) - Új fogalmakat vezetett be, mint például a hontalan nézetek, az oldalfolyamat és a hordozható erőforrás-szerződések létrehozásának képessége.
- JSF 2.1 (2010-11-22) - A JSF 2.0 2. karbantartási kiadása. Csak nagyon kevés specifikációváltozás történt.
- JSF 2.0 (2009-07-01) - Jelentős kiadás a könnyű használat, továbbfejlesztett funkcionalitás és teljesítmény érdekében. Egybeesik a Java EE 6- tal .
- JSF 1.2 (2006-05-11) - Az alaprendszerek és az API-k sok fejlesztése. Egybeesik a Java EE-vel 5. Első bevezetés a Java EE-be.
- JSF 1.1 (2004-05-27) - Bug-fix kiadás. A specifikáció nem változik.
- JSF 1.0 (2004-03-11) - Az eredeti specifikáció kiadva.
Hogyan működik
Komponens-vezérelt felhasználói felület tervezési modell alapján a JavaServer Faces XML fájlokat használ, amelyeket nézet sablonoknak vagy Facelets nézeteknek neveznek . A FacesServletfolyamatok kéri, betölti a megfelelő nézetet sablon, épít egy összetevő fa, feldolgozza az eseményeket, és megjeleníti a válasz (tipikusan a HTML nyelv) az ügyfélnek. A felhasználói felület összetevőinek és más érdeklődésre számot tartó objektumok állapota minden kérés végén elmentésre kerül egy stateSaving nevű folyamatban (megjegyzés: tranziens igaz ), és a nézet következő létrehozásakor visszaáll. Akár az ügyfél, akár a szerver oldal menthet objektumokat és állapotokat.
JSF és Ajax
A JSF-et gyakran használják az Ajax-szal , a gazdag internetes alkalmazások fejlesztési technikájával. Az Ajax olyan webfejlesztési technikák és technológiák kombinációja, amelyek lehetővé teszik a gazdag felhasználói felületek létrehozását. A Mojarra (JSF referencia implementáció ) és az Apache MyFaces felhasználói felületének összetevőit eredetileg csak HTML-hez fejlesztették ki, és az Ajax-ot JavaScript-en keresztül kellett hozzáadni. Ez azonban megváltozott:
Mivel a JSF több kimeneti formátumot támogat, az Ajax-kompatibilis összetevők könnyen hozzáadhatók a JSF-alapú felhasználói felületek gazdagításához. A JSF 2.0 specifikáció beépített támogatást nyújt az Ajax számára az Ajax kérelem életciklusának egységesítésével és az Ajax események egyszerű fejlesztési interfészeinek biztosításával, lehetővé téve az ügyfél által kiváltott események megfelelő ellenőrzését, átalakítását és végül a módszer meghívását, mielőtt visszaadná az eredményt XML DOM frissítéssel a böngészőbe.
A JSF 2 támogatja a kecses lebontást, amikor a JavaScript le van tiltva a böngészőben.
Ajax-kompatibilis komponensek és keretrendszerek
A következő vállalatok és projektek kínálják Ajax-alapú JSF keretrendszereket vagy komponens könyvtárakat:
- Apache MyFaces - Az Apache Foundation JSF megvalósítása Ajax komponensekkel
- Backbase Enterprise Ajax - JSF Edition - Ajax keretrendszer
- A BootsFaces nyílt forráskódú JSF keretrendszer a Bootstrap alapján
- IBM Notes - XPages
- ICEfaces - nyílt forráskódú, Java JSF kiterjesztési keretrendszer és gazdag összetevők, Ajax JavaScript nélkül
- JBoss RichFaces (az Ajax4jsf- ből származik és helyettesíti ) - Az Ajax-kompatibilis JSF-összetevők az elrendezéshez, a fájlok feltöltéséhez, az űrlapokhoz, az inputokhoz és még sok más szolgáltatáshoz. Életének végét 2016 júniusában érte el.
- OmniFaces - nyílt forráskódú JSF segédkönyvtár
- OpenFaces - Ajax keretrendszer JSF komponensekkel
- Az Oracle ADF szembesül a gazdag ügyféllel - Oracle Application Development Framework
- PrimeFaces - Ajax keretrendszer JSF komponensekkel
- Sun Java BluePrints AJAX komponensek
- ZK - Ajax keretrendszer JSF komponensekkel
Kritikák
ThoughtWorks, 2014
A ThoughtWorks 2014. januári Technology Radar kiadványában ezt írta:
Továbbra is azt látjuk, hogy a JSF - JavaServer Faces - használatával a csapatok bajba kerülnek, és javasoljuk, hogy kerülje el ezt a technológiát. Úgy tűnik, hogy a csapatok azért választják a JSF-et, mert ez JEE szabvány, anélkül, hogy valóban felmérnék, hogy a programozási modell megfelel-e nekik. Úgy gondoljuk, hogy a JSF hibás, mert megpróbálja elvonni a HTML-t , a CSS-t és a HTTP-t , pont fordítva a modern web-keretrendszer működéséhez . A JSF, az ASP.NET webformákhoz hasonlóan, megpróbálja az állapot nélküli állapotot létrehozni a hontalan protokoll HTTP tetején, és végül számos problémát okoz a megosztott szerveroldali állapotban. Tisztában vagyunk a JSF 2.0 fejlesztéseivel, de úgy gondoljuk, hogy a modell alapvetően elromlott. Azt javasoljuk a csapatoknak, hogy egyszerű keretrendszereket használjanak, és átfogják és megértsék a webes technológiákat, beleértve a HTTP-t, a HTML-t és a CSS-t.
Cáfolat
2014 februárjában Çağatay Çivici (PrimeFaces vezető) válaszolt a ThoughtWorks kritikáira egy JSF című bejegyzésben, amit már nem mondtak neked . Çivici szerint a JSF fejlesztése az évek során számos olyan funkciót kínál, amelyek magukban foglalják a modern webfejlesztést, lehetőséget biztosítva saját JavaScript, HTML és CSS megírására. Az államot illetően Çağatay azt írta:
A JSF természeténél fogva állapottalan keretrendszer, és az állapot megkönnyíti a webalkalmazások fejlesztését. A JSF 2.0+ verzióban bevezetett továbbfejlesztett állapotkezelési technikákkal (pl. Hontalan mód, részleges állapotmentés) a JSF is méretezhet.
DZone, 2014
A DZone webhelyén 2014. novemberben megjelent cikk "Miért kellene elkerülnöd a JSF-et" címmel Jens Schauder ezt írta:
Facelets, a JSF előnyben részesített prezentációs technológiája első látásra olyan, mint egy közönséges sablon technológia, mint a jó öreg JSP vagy a Thymeleaf. De ha jobban megnézed, a borzalom nyilvánvalóvá válik. Ugyanazon a helyen, ahol a HTML-jét strukturálja, elhelyezi a logikát is, amelyet a felhasználói felület egyes részeinek frissíteni kell egy művelethez. Az aggályok elkülönítésének elvének egyértelmű megsértése a könyvemben. Még jobb az azonnali attribútum, amely megváltoztatja a szerveroldali életciklust! És ha ez nem elég, akkor különböző módon teszi, attól függően, hogy milyen címkén használja. Nem készíthet ilyeneket.
TheServerSide, 2016
2016 februárjában a TheServerSide vállalati Java közösségi weboldal cikket tett közzé, amelyben javasolta a JSF használata ellen, amelynek használata veszélyeztetheti a végtermék minőségét. A cikk öt okból készült:
- Az egyszerű feladatok nehézzé válnak;
- A JSF nem rendelkezik rugalmassággal;
- A tanulási görbe meredek;
- Kompatibilitás a standard Java technológiákkal; és
- Primitív Ajax támogatás.