Na následujících řádcích se pokusím nastínit hlavní přínosy, jež vám JSF nabídne. Nebudu zde porovnávat JSF s jinými webovými frameworky pracujícími nad Javou,[10] nýbrž spíše upozorním na rozdíly ve vývoji Java EE aplikace s využitím frameworku JSF a bez něj.
Hlavní výhodou JSF je zautomatizování některých rutinních úkonů, které by samotným JSP šly řešit buď velmi těžko, nebo vůbec. Následuje výčet některých z rutin, jejichž vývoj JSF usnadňuje [8].
Vkládání komponent uživatelského rozhraní na stránku pomocí dostupných knihoven tagů.
Mapování komponent, které generují události, na serverový kód, jenž tyto události zpracovává.
Mapování stavu komponent na serverová data.
Validace a konverze uživatelských vstupů.
Tvorba znovupoužitelných komponent.
Ukládání a načítání stavu komponent mezi požadavky.
Každá komponenta uživatelského rozhraní je definována třídou, která determinuje její funkcionalitu, a tzv. rendererem, který určuje její výslednou podobu na výstupním zařízení. JSF tedy není vázáno na žádný značkovací jazyk. Výslednou podobou může být HTML, WML či jakýkoli jiný jazyk, podle toho, jak jsou naprogramovány renderovací třídy (pro více informací o renderování komponent viz 4.2 – „Renderování UI komponent“). Jelikož komponenty mohou mít více rendererů, může být jedna komponenta zobrazena jinak na monitoru a jinak třeba na mobilním telefonu. Základní implementace JSF převádí komponenty do HTML kódu.
JSF aplikuje architekturu Model-View-Controller (MVC), což ve zkratce znamená striktní oddělení stavu, prezentace a logiky.[11] Toho lze za použití čistého JSP dosáhnout pouze z části. V řešitelském týmu, jehož členové mají různé znalosti, se dá díky dodržování MVC architektury dosáhnout efektivnější dělby práce. JSF specifikace definuje pět rolí, které se při vývoji aplikace uplatní [5]. Pro nás jsou však důležité pouze tři z nich:
Page author - zodpovídá za tvorbu uživatelského rozhraní. Má znalosti značkovacích jazyků a JSP. Podle specifikace nemusí mít znalosti programování.
Application developer - má na starosti funkcionalitu aplikace, tzn. například tvorbu EJB komponent.
Component writer - tvoří znovupoužitelné komponenty, které jsou pak na stránku vkládány page authorem.
Počet vývojových rolí samozřejmě neříká nic o tom, kolik lidí na projektu pracuje. V jedné vývojové roli může vystupovat mnoho členů týmů a zároveň jedna osoba může zastávat více rolí. Dle [5] se například v případě rolí page author a application developer jedná většinou o stejnou osobu.
[10] Webových frameworků pracujících nad Javou je celá řada. Mezi ty populárnější patří např. Struts, Stripes, Tapestry, Wicket či Spring MVC. Jejich srovnáním se zabývá mnoho prací, např. prezentace Matta Raibla.