Volgens Jeroen Benckhuijsen en Tijs Rademakers van Atos Origin levert de nieuwe JSF-standaard duidelijke voordelen op. Bij webapplicaties zal het werk van een Java-ontwikkelaar volgens hen bijvoorbeeld beter verdeeld worden over de verschillende lagen.
Het zwaartepunt bij het bouwen van bedrijfskritische webapplicaties in een J2EE-omgeving ligt wat betreft urenbesteding nog steeds bij het bouwen van de gebruikersinterface. Dit heeft een aantal oorzaken, te beginnen bij de toolondersteuning. Voor het bouwen van de gebruikersinterface voor een desktopapplicatie is het bijvoorbeeld al geruime tijd mogelijk om visueel complexe schermen te construeren. Voor webapplicaties ontbreekt deze ondersteuning, voornamelijk door het ontbreken van een standaardraamwerk binnen de J2EE-specificatie.
Een andere oorzaak voor het grote aantal uren dat gemiddeld wordt besteed aan de user interface, is de wildgroei aan frameworks, die het gat van een standaard Model-View-Controller-implementatie ( MVC) binnen de J2EE-specificatie proberen in te vullen. Het meest bekende en gebruikte framework in de Java-gemeenschap is Struts. Er is echter nog een groot aantal andere frameworks dat zich in de loop van de tijd ontwikkeld heeft, zoals Tapestry, WebWork en Spring MVC. Het ontbreken van een standaard, zoals bij Microsoft ASP.NET, heeft een aantal nadelen, zoals het gebrek aan kennis van de frameworks, weinig standaardcomponenten van third parties en de afhankelijkheid van een niet gestandaardiseerd framework.
Een laatste oorzaak is de complexiteit en de klantspecifieke invulling van de gebruikersinterfaces. Door het ontbreken van complexe standaardcomponenten binnen de Java-omgeving worden bij veel projecten de componenten nieuw ontwikkeld.
Om de productiviteit voor het bouwen van gebruikersinterfaces in een Java-omgeving enorm te vergroten, heeft het Java Community Process al in 2004 een specificatie ontwikkeld, genaamd Java Server Faces ( JSF), onder JSR 127. Een verbeterde versie van deze specificatie wordt in JSR 252 klaargestoomd voor de nieuwe J2EE-specificatie: Java Enterprise Edition 5. Dit betekent dat JSF het enige standaard MVC-framework wordt in de Java-omgeving.
Specificatie
JSF heeft als belangrijkste doelstelling het ontwikkelwerk van webapplicaties te vereenvoudigen en dus te versnellen. De basis van de vereenvoudiging is gelegd in een duidelijke, stapsgewijze architectuur van JSF. In zes afgebakende stappen wordt vanuit een aanvraag van een browser een resultaat teruggegeven ( zie online-referentie 2).
Voor het minimaliseren van het ontwikkelwerk is onderkend dat toolondersteuning zeer belangrijk is. Vandaar dat JSF is ontwikkeld onder prominente aanwezigheid van deze doelstelling.
Een ander onderdeel van deze vereenvoudiging is de introductie van componenten. Naast de standaard HTML-objecten die beschikbaar zijn, zoals invoervelden, selectievakken en knoppen, bieden JSF-implementaties van bijvoorbeeld IBM en MyFaces ( zie online-referentie 3) complexe componenten, zoals op Word gebaseerde tekstvakken, boomstructuren en tabbladen. Er is dan ook een groeiend aantal third parties dat JSF-componenten aanbiedt. Naast de beschikbare componenten is het natuurlijk mogelijk om zelf componenten te ontwikkelen. Door het gebruik van deze componenten kan de productiviteit van het bouwen van een gebruikersinterface dramatisch worden vergroot.
Vergelijking Struts en JSF
Struts is al enkele jaren de de facto standaard voor de ontwikkeling van webapplicaties. Daarom is natuurlijk een belangrijke vraag: "Is JSF een betere technologie voor het bouwen van webapplicaties dan Struts?" Een leuk detail daarbij is dat Craig McClanahan – bedenker van Struts – spec lead was voor JSF.
Struts is veelvuldig gebruikt bij het ontwikkelen van webapplicaties en is daarom uitontwikkeld. JSF-implementaties zijn nu ongeveer een jaar te vinden bij verschillende leveranciers als IBM en Oracle, maar ook bestaan er open source projecten zoals MyFaces. Dit betekent dat Struts als framework op dit moment meer volwassen is, maar als begin volgende jaar JEE 5 wordt gelanceerd, zal dit snel veranderen in het voordeel van JSF.
Een belangrijk verschil tussen Struts en JSF is de doelstelling van het framework. Bij Struts ligt dit op het implementeren van het MVC-pattern, bij JSF is dit een componentgebaseerde architectuur gericht op toolondersteuning met een flexibele implementatie van het MVC-pattern. Dit geeft al aan dat JSF een veel bredere doelstelling heeft.
Een meer technisch georiënteerd verschil is de implementatie van het Struts- en JSF-framework. Bij het bouwen van een webapplicatie met Struts wordt de door de ontwikkelaar gebouwde code automatisch afhankelijk van het Struts-framework. De code raakt zogezegd vervuild met afhankelijkheden van Struts-classes. Bij JSF is deze afhankelijkheid zoveel mogelijk vermeden. Meer verschillen kunnen gevonden worden in de vele beschikbare artikelen hierover ( zie onder meer online-referentie 1).
Met het publiceren van de JSF-specificatie in 2004 is er in de Struts-wereld onder aansturing van Craig McClanahan veel discussie over de toekomst van Struts ontstaan. Dit heeft geleid tot een splitsing van Struts in twee frameworks: Struts Core, gebaseerd op de ‘oude’ Struts-technologie en Struts Shale, gebaseerd op de JSF-specificatie ( zie online-referentie 4). De keuze is dus niet JSF óf Struts maar een combinatie is ook heel goed mogelijk. Dit kan de migratie van Struts-applicaties eenvoudiger maken.
Conclusie
JSF komt tegemoet aan de belangrijkste oorzaken voor de hoge urenbesteding bij J2EE projecten aan de gebruikersinterface. Toolondersteuning is namelijk een belangrijk speerpunt van de JSF-specificatie en elke grote leverancier van Java-ontwikkelomgevingen biedt functionaliteit voor het visueel bouwen van een web user interface.
Door de komst van JSF is er eindelijk een standaard binnen de nieuwe JEE 5-specificatie op het gebied van de presentatielaag in applicaties. Door de standaardisatie op JSF is de hoeveelheid informatie hierover enorm, kunnen third parties eindelijk componenten aanbieden en zijn bedrijven verzekerd van ondersteuning uit de markt. Na intern onderzoek bleek JSF duidelijke voordelen op te leveren bij het ontwikkelen van webgebaseerde applicaties. Als een van de grote spelers op de markt spreekt Atos Origin zich dan ook duidelijk uit als voorstander van het gebruik van JSF en positioneert het als een logische keuze voor veel nieuwbouwtrajecten.
Verder biedt JSF een componentgebaseerde architectuur, waardoor het bouwen van complexe schermen door middel van componenten kan worden ingevuld. Deze componenten zijn beschikbaar in de gekozen ontwikkelomgeving, komen van third parties of kunnen zelf worden ontwikkeld. Hergebruik van deze componenten staat hierbij voorop.
Met het gebruik van JSF zal de urenbesteding van een Java-ontwikkelaar beter verdeeld worden over de verschillende lagen van een bedrijfskritische webapplicatie. Met de JEE 5-specificatie in het zicht voor begin 2006 is het moment aangebroken om JSF in te zetten bij het bouwen van webapplicaties. Een andere keuze zal de productiviteit van het bouwtraject namelijk niet ten goede komen.
Vergelijking JSF – Struts: http://websphere.sys-con.com/read/46516.htm
http://myfaces.apache.org
http://struts.apache.org
Jeroen Benckhuijsen, Tijs Rademakers, Atos Origin Nederland