Jakarta Server Gezichten - Jakarta Server Faces

Jakarta Server Gezichten
20110510-jsf-logo.tiff
Oorspronkelijke auteur(s) Sun Microsystems
Ontwikkelaar(s) Eclipse Stichting
Stabiele vrijlating
2.3.2 / 20 augustus 2019 ; 22 maanden geleden ( 2019-08-20 )
Preview-release
3.0.0 RC1 / 7 maart 2020 ; 15 maanden geleden ( 2020-03-07 )
Opslagplaats Bewerk dit op Wikidata
Geschreven in Java
Type Webtoepassingsframework
Website jakarta .ee /specificaties /gezichten / Bewerk dit op Wikidata

Jakarta Server Faces ( JSF ; voorheen JavaServer Faces) is een Java- specificatie voor het bouwen van op componenten gebaseerde gebruikersinterfaces voor webapplicaties en is geformaliseerd als een standaard via het Java Community Process als onderdeel van het Java Platform, Enterprise Edition . Het is ook een MVC -webframework dat de constructie van gebruikersinterfaces (UI) voor servergebaseerde applicaties vereenvoudigt door herbruikbare UI-componenten in een pagina te gebruiken.

JSF 2 gebruikt Facelets als standaardsjabloonsysteem. Andere weergavetechnologieën zoals XUL of gewoon Java kunnen ook worden gebruikt. JSF 1.x daarentegen gebruikt JavaServer Pages (JSP) als standaardsjabloonsysteem.

Geschiedenis

In 2001 stelde de oorspronkelijke Java Specification Request (JSR) voor de technologie die uiteindelijk JavaServer Faces werd, voor om een ​​pakket te ontwikkelen met de naam javax.servlet.ui

In juni 2001 zou JavaWorld rapporteren over het ontwerp van Amy Fowler's team van "de JavaServer Faces API" (ook bekend als "Moonwalk") - "een applicatieraamwerk voor het creëren van webgebaseerde gebruikersinterfaces".

Laatste ontwikkelingen

Facelets (die speciaal is ontworpen voor Java Server Faces) werd aangenomen als de officiële weergavetechnologie voor JSF 2.0. Dit elimineert de levenscyclusconflicten die bestonden met JSP, waardoor tijdelijke oplossingen door Java-ontwikkelaars werden afgedwongen. Facelets maakt het eenvoudig om componenten/tags te maken met XML-opmaak in plaats van Java-code, de belangrijkste klacht tegen JSF 1.x.

De nieuwe JSF-ontwikkelingen bieden ook brede toegankelijkheid tot Java 5-annotaties zoals @ManagedBean, @ManagedPropertyen @FacesComponentdat maakt faces-config.xmlin alle gevallen de noodzaak overbodig , behalve framework-extensie. Navigatie is vereenvoudigd, waardoor faces-config.xmlnavigatiegevallen niet meer nodig zijn. Pagina-overgangen kunnen eenvoudig worden aangeroepen door de naam van de gewenste View/Facelet door te geven.

Toevoeging van gedeeltelijke statusbesparing en DOM-updates maken deel uit van de ingebouwde gestandaardiseerde Ajax- ondersteuning.

De nieuwste JSF-release heeft ingebouwde ondersteuning voor het verwerken van bronnen zoals afbeeldingen, CSS en Javascript, waardoor artefacten kunnen worden opgenomen in componentbibliotheken, worden gescheiden in JAR-bestanden of eenvoudig op een consistente plaats binnen de webtoepassing worden geplaatst. Dit omvat logische naamgeving en versiebeheer van bronnen.

JSF 2.0 bevat ook een aantal andere wijzigingen, zoals het toevoegen van ondersteuning voor evenementen, afzonderlijke ontwikkelings-, enscenerings- en productiemodi, vergelijkbaar met RAILS_ENVin Ruby on Rails , en een aanzienlijke uitbreiding van de standaardset componenten.

versies

  • JSF 2.3 (28-03-2017) - Belangrijkste kenmerken: zoekexpressies, extensieloze URL's, bean-validatie voor volledige klassen, push-communicatie met WebSocket , verbeterde integratie met CDI.
  • JSF 2.2 (2013-05-21) - Nieuwe concepten geïntroduceerd zoals stateless views, paginastroom en de mogelijkheid om draagbare resourcecontracten te maken.
  • JSF 2.1 (2010-11-22) – Onderhoudsversie 2 van JSF 2.0. Slechts een zeer klein aantal specificatiewijzigingen.
  • JSF 2.0 (2009-07-01) – Belangrijke release voor gebruiksgemak, verbeterde functionaliteit en prestaties. Valt samen met Java EE 6.
  • JSF 1.2 (2006-05-11) – Veel verbeteringen aan kernsystemen en API's. Valt samen met Java EE 5. Eerste adoptie in Java EE.
  • JSF 1.1 (2004-05-27) – Bugfix-release. Geen specificatiewijzigingen.
  • JSF 1.0 (2004-03-11) – Eerste specificatie vrijgegeven.

Hoe het werkt

JavaServer Faces is gebaseerd op een componentgestuurd UI- ontwerpmodel en gebruikt XML-bestanden die weergavesjablonen of Facelets- weergaven worden genoemd. Het FacesServletproces vraagt, laadt de juiste weergavesjabloon, bouwt een componentenboom, verwerkt gebeurtenissen en geeft het antwoord (meestal in de HTML-taal) weer aan de client. De status van UI-componenten en andere objecten die van belang zijn, wordt aan het einde van elk verzoek opgeslagen in een proces met de naam stateSaving (opmerking: transient true ), en hersteld bij de volgende creatie van die weergave. Zowel de client- als de serverkant kunnen objecten en statussen opslaan.

JSF en Ajax

JSF wordt vaak gebruikt in combinatie met Ajax , een techniek voor het ontwikkelen van Rich Internet-applicaties . Ajax is een combinatie van webontwikkelingstechnieken en technologieën die het mogelijk maken om rijke gebruikersinterfaces te creëren. De componenten van de gebruikersinterface in Mojarra (de JSF- referentie-implementatie ) en Apache MyFaces waren oorspronkelijk alleen voor HTML ontwikkeld en Ajax moest via JavaScript worden toegevoegd. Dit is echter veranderd:

Omdat JSF meerdere uitvoerformaten ondersteunt, kunnen Ajax-compatibele componenten eenvoudig worden toegevoegd om op JSF gebaseerde gebruikersinterfaces te verrijken. De JSF 2.0-specificatie biedt ingebouwde ondersteuning voor Ajax door de levenscyclus van Ajax-verzoeken te standaardiseren en eenvoudige ontwikkelingsinterfaces voor Ajax-evenementen te bieden, waardoor elke gebeurtenis die door de client wordt geactiveerd, de juiste validatie, conversie en uiteindelijk methodeaanroep kan doorlopen voordat het resultaat wordt geretourneerd naar de browser via een XML DOM-update.

JSF 2 bevat ondersteuning voor sierlijke degradatie wanneer JavaScript is uitgeschakeld in de browser.

Ajax-compatibele componenten en frameworks

De volgende bedrijven en projecten bieden op Ajax gebaseerde JSF-frameworks of componentbibliotheken:

kritieken

ThoughtWorks, 2014

In hun Technology Radar- publicatie van januari 2014 schreef ThoughtWorks :

We zien nog steeds dat teams in de problemen komen bij het gebruik van JSF - JavaServer Faces - en raden u aan deze technologie te vermijden. Teams lijken voor JSF te kiezen omdat het een JEE-standaard is zonder echt te evalueren of het programmeermodel bij hen past. We denken dat JSF gebrekkig is omdat het HTML , CSS en HTTP probeert te abstraheren , precies het omgekeerde van wat moderne webframeworks doen. JSF probeert, net als ASP.NET-webformulieren, statefulness te creëren bovenop het staatloze protocol HTTP en veroorzaakt uiteindelijk een hele reeks problemen met betrekking tot gedeelde server-side status. We zijn op de hoogte van de verbeteringen in JSF 2.0, maar denken dat het model fundamenteel kapot is. We raden teams aan om eenvoudige frameworks te gebruiken en webtechnologieën te omarmen en te begrijpen, waaronder HTTP, HTML en CSS.

Weerwoord

In februari 2014 reageerde Çağatay Çivici (PrimeFaces Lead) op de kritiek van ThoughtWorks in een bericht met de titel JSF is niet meer wat je is verteld . Çivici stelt dat verbeteringen in JSF door de jaren heen veel functies bieden die moderne webontwikkeling omarmen en de mogelijkheid bieden om je eigen JavaScript, HTML en CSS te schrijven. Ook over de staat schreef Çağatay:

JSF is van nature een stateful framework en de staat maakt webapplicaties gemakkelijk om mee te ontwikkelen. Met verbeterde state management technieken geïntroduceerd in JSF 2.0+ (bijv. stateless mode, gedeeltelijke state saving), kan JSF ook schalen.

DZone, 2014

In het artikel dat in november 2014 op de DZone-website is gepubliceerd, getiteld "Waarom u JSF moet vermijden", schreef Jens Schauder:

Facelets, de geprefereerde presentatietechnologie van JSF, lijkt op het eerste gezicht op een gewone sjabloontechnologie zoals de goede oude JSP of Thymeleaf. Maar als je beter kijkt, wordt de horror duidelijk. Op dezelfde plaats waar u uw HTML structureert, plaatst u ook de logica welke delen van de gebruikersinterface bij een actie moeten worden bijgewerkt. Een duidelijke schending van het principe van de scheiding van belangen in mijn boek. Nog beter is het directe kenmerk dat de levenscyclus aan de serverzijde verandert! En alsof dit nog niet genoeg is, doet het dat op verschillende manieren, afhankelijk van de tag waarop je het gebruikt. Je kunt dit soort dingen niet verzinnen.

TheServerSide, 2016

In februari 2016 publiceerde de enterprise Java-communitywebsite TheServerSide een artikel waarin het gebruik van JSF wordt afgeraden, omdat het gebruik ervan de kwaliteit van het eindproduct in gevaar zou kunnen brengen. Het artikel ging in op vijf redenen:

  1. Eenvoudige taken worden moeilijk;
  2. JSF mist flexibiliteit;
  3. De leercurve is steil;
  4. Incompatibiliteit met standaard Java-technologieën; en
  5. Primitieve Ajax-ondersteuning.

Referenties

Externe links