Jakarta-palvelimen kasvot - Jakarta Server Faces
| Alkuperäinen kirjoittaja (t) | Sun Microsystems |
|---|---|
| Kehittäjä (t) | Eclipse -säätiö |
| Vakaa vapautus | 2.3.2 / 20. elokuuta 2019
|
| Esikatselujulkaisu | 3.0.0 RC1 / 7. maaliskuuta 2020
|
| Arkisto |
|
| Kirjoitettu | Java |
| Tyyppi | Verkkosovelluskehys |
| Verkkosivusto |
jakarta |
Jakarta Server Faces ( JSF , entinen JavaServer Faces) on Java erittely rakentaa komponentti -pohjainen käyttöliittymiä varten web-sovellusten ja virallistettiin tavallisena läpi Java Community Process on osa Java Platform Enterprise Edition . Se on myös MVC- verkkokehys, joka yksinkertaistaa palvelinpohjaisten sovellusten käyttöliittymien (UI) rakentamista käyttämällä uudelleenkäytettäviä käyttöliittymäkomponentteja sivulla.
JSF 2 käyttää Faceletsiä oletusmallijärjestelmänä. Myös muita näkymän tekniikoita, kuten XUL tai tavallinen Java, voidaan käyttää. Sitä vastoin JSF 1.x käyttää JavaServer Pagesia (JSP) oletusmallijärjestelmänä.
Historia
Vuonna 2001 alkuperäinen Java Specification Request (JSR) teknologialle, josta lopulta tuli JavaServer Faces, ehdotti paketin kehittämistä nimellä javax.servlet.ui
Kesäkuuhun 2001 mennessä JavaWorld raportoi Amy Fowlerin tiimin suunnittelusta "JavaServer Faces API" (alias "Moonwalk") - "sovelluskehys web-pohjaisten käyttöliittymien luomiseksi".
Viimeisin kehitys
Facelets (joka on erityisesti suunniteltu Java Server Facesille ) otettiin viralliseksi näkymän tekniikaksi JSF 2.0: lle. Tämä eliminoi JSP: n kanssa esiintyneet elinkaariristiriidat, mikä pakottaa Java-kehittäjät kiertämään. Facelets mahdollistaa komponenttien / tunnisteiden luomisen helposti käyttämällä XML-merkintöjä Java-koodin sijaan, mikä on tärkein valitus JSF 1.x: stä.
Uudet JSF-kehitykset tarjoavat myös laajan pääsyn Java 5 -merkintöihin , kuten @ManagedBean, @ManagedPropertyja @FacesComponentse poistaa tarpeen faces-config.xmlkaikissa tapauksissa paitsi kehyksen laajennuksessa. Navigointia on yksinkertaistettu poistamalla faces-config.xmlnavigointitapausten tarve . Sivusiirtymät voidaan kutsua yksinkertaisesti välittämällä halutun näkymän / kasvon nimi.
Osatilansäästö- ja DOM-päivitykset ovat osa sisäänrakennettua standardoitua Ajax- tukea.
Viimeisimmässä JSF-julkaisussa on sisäänrakennettu tuki resurssien, kuten kuvien, CSS: n ja Javascriptin, käsittelyyn, jolloin artefaktit voidaan sisällyttää komponenttikirjastoihin, erottaa JAR-tiedostoiksi tai yksinkertaisesti sijoittaa yhtenäiseen paikkaan verkkosovelluksessa. Tähän sisältyy resurssien looginen nimeäminen ja versiointi.
JSF 2,0 sisältää myös useita muita muutoksia, kuten tuen lisääminen tapahtumiin, erillinen kehitys, pysähdyspaikan, ja tuotanto tilat, samanlainen RAILS_ENVvuonna Ruby on Rails , ja laajentaa merkittävästi standardi joukko komponentteja.
Versiot
- JSF 2.3 (2017-03-28) - Tärkeimmät ominaisuudet: hae lausekkeita, laajentamattomat URL-osoitteet, papujen vahvistus kokonaisille luokille, push-viestintä WebSocketin avulla , parannettu integrointi CDI: n kanssa.
- JSF 2.2 (2013-05-21) - Otti käyttöön uusia käsitteitä, kuten valtiottomat näkymät, sivuvirta ja kyky luoda kannettavia resurssisopimuksia.
- JSF 2.1 (2010-11-22) - JSF 2.0: n ylläpitoversio 2. Vain hyvin pieni määrä eritelmämuutoksia.
- JSF 2.0 (2009-07-01) - merkittävä julkaisu helppokäyttöisyyttä, parannettuja toimintoja ja suorituskykyä varten. Yhdistyy Java EE 6: n kanssa.
- JSF 1.2 (2006-05-11) - Paljon parannuksia ydinjärjestelmiin ja sovellusliittymiin. Yhdessä Java EE: n kanssa 5. Ensimmäinen käyttöönotto Java EE: ksi.
- JSF 1.1 (2004-05-27) - Bug-fix-julkaisu. Ei teknisiä muutoksia.
- JSF 1.0 (2004-03-11) - Alkuperäinen eritelmä julkaistu.
Kuinka se toimii
Perustuen komponentti perustuva UI suunnittelu-malli, JavaServer Faces käyttää XML-tiedostoja kutsutaan katsella malleja tai Facelets näkemyksiä. Käsittelee FacesServletpyynnöt, lataa sopivan näkymämallin, rakentaa komponenttipuun, käsittelee tapahtumat ja antaa vastauksen (yleensä HTML-kielellä) asiakkaalle. Käyttöliittymän komponenttien ja muiden kiinnostavien kohteiden tila tallennetaan jokaisen pyynnön lopussa StateSaving-nimiseen prosessiin (huomautus: transient true ) ja palautetaan, kun seuraava näkymä luodaan. Joko asiakas- tai palvelinpuoli voi tallentaa objekteja ja tiloja.
JSF ja Ajax
JSF: ää käytetään usein yhdessä Ajaxin kanssa , joka on Rich Internet -sovellusten kehittämistekniikka. Ajax on yhdistelmä verkkokehitystekniikoita ja tekniikoita, jotka mahdollistavat rikkaiden käyttöliittymien luomisen. Käyttöliittymän komponentit mojarat (JSF viitetoteutus ) ja Apache MyFaces kehitettiin alun perin vain HTML, ja Ajax oli lisättävä kautta JavaScript. Tämä on kuitenkin muuttunut:
Koska JSF tukee useita ulostulomuotoja, Ajax-yhteensopivat komponentit voidaan helposti lisätä rikastamaan JSF-pohjaisia käyttöliittymiä. JSF 2.0 -määrittely tarjoaa sisäänrakennetun tuen Ajaxille standardoimalla Ajax-pyynnön elinkaaren ja tarjoamalla yksinkertaisia kehitysrajapintoja Ajax-tapahtumille, jolloin asiakkaan käynnistämät tapahtumat voivat käydä läpi oikean validoinnin, muunnoksen ja lopuksi menetelmän kutsun ennen tuloksen palauttamista. selaimeen XML DOM -päivityksen kautta.
JSF 2 sisältää tuen sulavalle heikentymiselle, kun JavaScript ei ole käytössä selaimessa.
Ajax-yhteensopivat komponentit ja kehykset
Seuraavat yritykset ja projektit tarjoavat Ajax-pohjaisia JSF-kehyksiä tai komponenttikirjastoja:
- Apache MyFaces - Apache Foundationin JSF-toteutus Ajax-komponenteilla
- Backbase Enterprise Ajax - JSF Edition - Ajax-kehys
- BootsFaces avoimen lähdekoodin JSF-kehys, joka perustuu Bootstrapiin
- IBM Notes - XPages
- ICEfaces - avoimen lähdekoodin Java JSF -laajennuskehys ja rikkaat komponentit, Ajax ilman JavaScriptiä
- JBoss RichFaces (johdettu Ajax4jsf: stä ja korvaa sen ) - Ajax-yhteensopivat JSF-komponentit asettelua, tiedostojen lataamista, lomakkeita, syötteitä ja monia muita ominaisuuksia varten. Sen käyttöikä loppui kesäkuussa 2016.
- OmniFaces - avoimen lähdekoodin JSF-apuohjelmakirjasto
- OpenFaces - Ajax-kehys JSF-komponenteilla
- Oracle ADF kohtaa rikkaan asiakkaan - Oracle Application Development Framework
- PrimeFaces - Ajax-kehys JSF-komponenteilla
- Sun Java BluePrints AJAX-komponentit
- ZK - Ajax-kehys JSF-komponenteilla
Kritiikki
ThoughtWorks, 2014
ThoughtWorks kirjoitti tammikuussa 2014 Technology Radar -julkaisussaan :
Jatkamme, että joukkueet joutuvat vaikeuksiin JSF: n - JavaServer Faces - avulla ja suosittelemme, että vältät tämän tekniikan. Joukkueet näyttävät valitsevan JSF: n, koska se on JEE-standardi arvioimatta todella, sopiiko ohjelmointimalli heille. Mielestämme JSF on puutteellinen, koska se yrittää erottaa HTML , CSS ja HTTP , täsmälleen päinvastoin kuin nykyaikaiset verkkokehykset . JSF, kuten ASP.NET webforms, yritykset luoda tilatietoisuuteen päälle kansalaisuudettomien protokollan HTTP ja päät jopa aiheuttaa koko joukko ongelmia, joihin yhteinen palvelin-puolella tilassa. Olemme tietoisia parannuksista JSF 2.0: ssa, mutta mielestämme malli on pohjimmiltaan rikki. Suosittelemme, että tiimit käyttävät yksinkertaisia kehyksiä ja omaksuvat ja ymmärtävät verkkotekniikat, mukaan lukien HTTP, HTML ja CSS.
Kumoaminen
Helmikuussa 2014 Çağatay Çivici (PrimeFaces Lead) vastasi ThoughtWorksin arvosteluihin JSF- nimisessä viestissä, jota sinulle ei enää ole kerrottu . Çivici väittää, että JSF: n parannukset vuosien varrella tarjoavat monia ominaisuuksia, jotka kattavat modernin verkkokehityksen ja tarjoavat mahdollisuuden kirjoittaa omat JavaScript, HTML ja CSS. Myös valtiosta Çağatay kirjoitti:
JSF on luonteeltaan tilanmukainen kehys ja tila tekee verkkosovelluksista helppoja kehittää. Parannetuilla tilanhallintatekniikoilla, jotka on otettu käyttöön JSF 2.0+: ssa (esim. Valtioton tila, osittainen tilansäästö), JSF voi myös skaalata.
DZone, 2014
Marraskuussa 2014 DZone-verkkosivustolla julkaistussa artikkelissa "Miksi sinun pitäisi välttää JSF: ää" Jens Schauder kirjoitti:
Facelets, JSF: n ensisijainen esitystekniikka näyttää ensi silmäykseltä kuin tavallinen mallintamistekniikka, kuten vanha hyvä JSP tai Thymeleaf. Mutta jos katsot tarkemmin, kauhu tulee ilmeiseksi. Samaan paikkaan, jossa rakennat HTML-koodisi, sijoitat myös logiikan, mitkä käyttöliittymän osat pitäisi päivittää toiminnolle. Kirjassani on selvästi rikottu huolenaiheiden erottamisen periaatetta. Vielä parempi on välitön ominaisuus, joka muuttaa palvelimen puolen elinkaarta! Ja jos tämä ei riitä, se tekee sen eri tavoin riippuen siitä, millä tagilla käytät sitä. Et voi tehdä tällaisia juttuja.
TheServerSide, 2016
Helmikuussa 2016 yritys Java-yhteisö TheServerSide julkaisi artikkelin, jossa suositellaan JSF: n käyttöä, jonka käyttö voi vaarantaa lopputuotteen laadun. Artikkeli kehitettiin viidestä syystä:
- Yksinkertaisista tehtävistä tulee vaikeita;
- JSF: stä puuttuu joustavuus;
- Oppimiskäyrä on jyrkkä;
- Yhteensopimattomuus tavallisten Java-tekniikoiden kanssa; ja
- Primitiivinen Ajax-tuki.