Jakarta Server Faces - Jakarta Server Faces

Jakarta Server Faces
20110510-jsf-logo.tiff
Originalförfattare Sun Microsystems
Utvecklare Eclipse Foundation
Stabil frisättning
2.3.2 / 20 augusti 2019 ; För 22 månader sedan ( 2019-08-20 )
Förhandsgranska release
3.0.0 RC1 / 7 mars 2020 ; För 15 månader sedan ( 2020-03-07 )
Förvar Redigera detta på Wikidata
Skrivet i Java
Typ Ram för webbapplikationer
Hemsida jakarta .ee / specifikationer / ansikten / Redigera detta på Wikidata

Jakarta Server Faces ( JSF ; formerly Javaserver Faces) är en Java- specifikation för att bygga komponent -baserade användargränssnitt för webbapplikationer och formaliserades som en standard genom Java Community Process vara en del av Java-plattformen, Enterprise Edition . Det är också ett MVC -webbramverk som förenklar konstruktionen av användargränssnitt (UI) för serverbaserade applikationer genom att använda återanvändbara UI-komponenter på en sida.

JSF 2 använder Facelets som standardmallsystem. Andra visningstekniker som XUL eller vanlig Java kan också användas. Däremot använder JSF 1.x JavaServer Pages (JSP) som standardmallsystem.

Historia

År 2001 föreslog den ursprungliga Java Specification Request (JSR) för tekniken som i slutändan blev JavaServer Faces att utveckla ett paket med namnet javax.servlet.ui

I juni 2001 skulle JavaWorld rapportera om Amy Fowlers teamdesign av "JavaServer Faces API" (aka "Moonwalk") - "ett applikationsramverk för att skapa webbaserade användargränssnitt".

Senaste utvecklingen

Facelets (som designades speciellt för Java Server Faces) antogs som den officiella visningstekniken för JSF 2.0. Detta eliminerar livscykelkonflikter som fanns med JSP, vilket tvingar lösningar från Java-utvecklare. Facelets gör det enkelt att skapa komponenter / taggar med XML-markering istället för Java-kod, huvudklagomålet mot JSF 1.x.

Den nya JSF-utvecklingen ger också bred åtkomst till Java 5-anteckningar som @ManagedBean, @ManagedPropertyoch @FacesComponentdet tar bort behovet av faces-config.xmli alla fall utom ramtillägg. Navigationen har förenklats och därmed tagit bort behovet av faces-config.xmlnavigationsfall. Sidövergångar kan åberopas genom att helt enkelt skicka namnet på önskad vy / ansikte.

Tillägg av uppdateringar av delstatssparande och DOM är en del av det inbyggda standardiserade Ajax- stödet.

Den senaste JSF-versionen har inbyggt stöd för hantering av resurser som bilder, CSS och Javascript, vilket gör att artefakter kan inkluderas i komponentbibliotek, separeras i JAR-filer eller helt enkelt samplaceras på en konsekvent plats i webbapplikationen. Detta inkluderar logisk namngivning och versionering av resurser.

JSF 2.0 innehåller också ett antal andra ändringar som att lägga till stöd för evenemang, separat utvecklings-, iscenesättnings- och produktionslägen, liknande RAILS_ENVi Ruby on Rails , och avsevärt att utöka standarduppsättningen av komponenter.

Versioner

  • JSF 2.3 (2017-03-28) - Huvudfunktioner: sökuttryck, förlängningsfria webbadresser, bönevalidering för kompletta klasser, push-kommunikation med WebSocket , förbättrad integration med CDI.
  • JSF 2.2 (2013-05-21) - Introducerade nya koncept som statslösa vyer, sidflöde och möjligheten att skapa bärbara resurskontrakt.
  • JSF 2.1 (2010-11-22) - Underhållsutgåva 2 av JSF 2.0. Endast ett mycket litet antal specifikationsändringar.
  • JSF 2.0 (2009-07-01) - Stor version för enkel användning, förbättrad funktionalitet och prestanda. Sammanfaller med Java EE 6.
  • JSF 1.2 (2006-05-11) - Många förbättringar av kärnsystem och API: er. Sammanfaller med Java EE 5. Första antagandet i Java EE.
  • JSF 1.1 (2004-05-27) - Bug-fix release. Inga specifikationsändringar.
  • JSF 1.0 (2004-03-11) - Ursprunglig specifikation släppt.

Hur det fungerar

Baserat på en komponentdriven UI- designmodell använder JavaServer Faces XML-filer som kallas visningsmallar eller Facelets- vyer. De FacesServletprocesser förfrågningar, laster den lämplig vy mall, bygger en komponent träd, bearbetar händelser, och gör responsen (typiskt i HTML-språket) till klienten. UI-komponenternas tillstånd och andra objekt av omfattningsintresse sparas i slutet av varje begäran i en process som kallas stateSaving (Obs: transient true ) och återställs vid nästa skapande av den vyn. Antingen klienten eller serversidan kan spara objekt och tillstånd.

JSF och Ajax

JSF används ofta tillsammans med Ajax , en Rich Internet-applikationsutvecklingsteknik . Ajax är en kombination av webbutvecklingstekniker och tekniker som gör det möjligt att skapa rika användargränssnitt. Användargränssnittskomponenterna i Mojarra (JSF- referensimplementeringen ) och Apache MyFaces utvecklades ursprungligen endast för HTML och Ajax måste läggas till via JavaScript. Detta har dock förändrats:

Eftersom JSF stöder flera utdataformat kan Ajax-aktiverade komponenter enkelt läggas till för att berika JSF-baserade användargränssnitt. JSF 2.0-specifikationen tillhandahåller inbyggt stöd för Ajax genom att standardisera Ajax-begäranens livscykel och tillhandahålla enkla utvecklingsgränssnitt till Ajax-händelser, så att alla händelser som utlöses av klienten kan gå igenom korrekt validering, konvertering och slutligen metodinrop, innan resultatet returneras till webbläsaren via en XML DOM-uppdatering.

JSF 2 innehåller stöd för graciös nedbrytning när JavaScript är inaktiverat i webbläsaren.

Ajax-aktiverade komponenter och ramar

Följande företag och projekt erbjuder Ajax-baserade JSF-ramar eller komponentbibliotek:

Kritik

ThoughtWorks, 2014

I sin januari 2014 Technology Radar publikation, Thoughtworks skrev:

Vi fortsätter att se lag stöta på problem med JSF - JavaServer Faces - och rekommenderar att du undviker denna teknik. Team verkar välja JSF eftersom det är en JEE-standard utan att verkligen utvärdera om programmeringsmodellen passar dem. Vi tror att JSF är felaktig eftersom den försöker ta bort HTML , CSS och HTTP , exakt det motsatta av vad moderna webbramar gör. JSF, som ASP.NET-webbformulär, försöker skapa statefulness ovanpå det statslösa protokollet HTTP och slutar med att orsaka en hel rad problem som involverar delat server-state-tillstånd. Vi är medvetna om förbättringarna i JSF 2.0, men tror att modellen i grunden är trasig. Vi rekommenderar att team använder enkla ramar och omfamnar och förstår webbteknik inklusive HTTP, HTML och CSS.

Vederläggning

I februari 2014 svarade Çağatay Çivici (PrimeFaces Lead) på ThoughtWorks kritik i ett inlägg med titeln JSF är inte vad du har fått veta längre . Çivici hävdar att förbättringar av JSF genom åren erbjuder många funktioner som omfattar modern webbutveckling, vilket ger möjlighet att skriva din egen JavaScript, HTML och CSS. Även angående staten skrev Çağatay:

JSF är en statlig ram av natur och stat gör webbapplikationer lätta att utveckla med. Med förbättrade tillståndshanteringstekniker introducerade i JSF 2.0+ (t.ex. statslöst läge, delvis tillståndssparande) kan JSF också skalas.

DZone, 2014

I artikeln som publicerades november 2014 på DZone-webbplatsen, med titeln "Why You Should Avoid JSF", skrev Jens Schauder:

Facelets, den föredragna presentationstekniken för JSF ser vid första anblicken ut som en vanlig mallteknik som den gamla gamla JSP eller Thymeleaf. Men om du tittar närmare blir skräckan uppenbar. På samma plats där du strukturerar din HTML placerar du också logiken vilka delar av användargränssnittet som ska uppdateras om en åtgärd. Ett tydligt brott mot principen om separering av oro i min bok. Ännu bättre är det omedelbara attributet som förändrar serverns livscykel! Och om detta inte räcker gör det det på olika sätt beroende på vilken tagg du använder den på. Du kan inte göra sådana saker.

TheServerSide, 2016

I februari 2016 publicerade Java-företagswebbplatsen TheServerSide en artikel som rekommenderar användning av JSF, vars användning kan äventyra kvaliteten på den slutliga produkten. Artikeln utarbetade av fem skäl:

  1. Enkla uppgifter blir svåra;
  2. JSF saknar flexibilitet;
  3. Inlärningskurvan är brant;
  4. Inkompatibilitet med standard Java-teknik; och
  5. Primitivt Ajax-stöd.

Referenser

externa länkar