Back-end

JavaServer Faces - fundamenty aplikacji internetowych

JavaServer Faces to specyfikacja umożliwiająca rozwijanie aplikacji internetowych z wykorzystaniem struktury MVC w języku Java. W artykule przedstawimy podstawy tej technologii oraz jej zalety i zastosowanie.

31 maj 2023

JavaServer Faces (JSF), obecnie znane jako Jakarta Faces, to framework umożliwiający tworzenie interfejsów użytkownika dla aplikacji webowych w języku Java. Jego głównym założeniem jest oddzielenie warstwy prezentacji od logiki biznesowej, co pozwala na łatwiejsze utrzymanie, testowanie oraz rozwój aplikacji. JSF umożliwia również zarządzanie stanem aplikacji, co oznacza, że można zapisywać i przywracać stan komponentów interfejsu użytkownika pomiędzy żądaniami HTTP.

Wraz z przejściem platformy Java EE pod skrzydła Eclipse Foundation, JSF zostało przemianowane na Jakarta Faces (od wersji 3.0) i używa teraz przestrzeni nazw jakarta.faces.* zamiast wcześniejszego javax.faces.*.

 

Struktura JavaServer Faces

JavaServer Faces opiera się na wzorcu projektowym MVC (Model-View-Controller). Oznacza to, że aplikacja jest logicznie podzielona na:

  • Model – logika biznesowa i dane (np. JavaBeans, EJB, JPA).
  • View – warstwa prezentacji (pliki .xhtml, komponenty UI).
  • Controller – sterowanie przepływem (np. kontrolery zarządzające danymi z formularzy).

 

Struktura projektu JSF powinna odzwierciedlać ten podział, co ułatwia modularność, ponowne wykorzystanie komponentów i testowanie.

 

Edycja widoków JSF

Widoki w JSF tworzy się za pomocą plików XHTML, które zawierają specjalne znaczniki JSF, takie jak <h:form>, <h:inputText>, <h:dataTable>, itp. Dzięki temu możliwa jest dynamiczna budowa interfejsu przy użyciu komponentów serwerowych.

Popularne biblioteki rozszerzające możliwości JSF to:

  • PrimeFaces – najczęściej używana, oferuje ponad 100 gotowych komponentów UI.
  • OmniFaces – rozszerza funkcjonalność standardowego JSF.
  • BootsFaces i ButterFaces – integracja z Bootstrapem.
BoringOwl_programming_developer_in_front_of_the_computer_in_sim_2719f586-aa1e-4fac-a0a9-61cdd4b28818.png

Zarządzanie danymi w JSF

JSF zapewnia różne mechanizmy do zarządzania danymi:

  • Data Binding – powiązanie komponentów formularzy z atrybutami klas JavaBeans.
  • Zarządzanie stanem – dane mogą być przechowywane po stronie klienta (client-side state saving) lub po stronie serwera (server-side).
  • Scope'y – obsługuje różne zasięgi (@RequestScoped, @ViewScoped, @SessionScoped, @ApplicationScoped) umożliwiające kontrolę czasu życia danych.

 

CDI (Contexts and Dependency Injection) jest dziś domyślnym sposobem zarządzania beanami w JSF.

 

Wsparcie i przyszłość

Mimo że JSF nie jest już „modnym” wyborem w porównaniu z rozwiązaniami typu Spring Boot + REST API + frontend (React/Angular), nadal ma silne zastosowanie w projektach korporacyjnych. Dzięki PrimeFaces i OmniFaces, możliwe jest tworzenie złożonych interfejsów bez pisania kodu JavaScript.

Od wersji Jakarta Faces 4.x, framework nadal jest rozwijany, ale warto pamiętać, że jego ekosystem zmierza w stronę integracji z nowoczesnymi rozwiązaniami chmurowymi i kontenerowymi.

 

Podsumowanie

JavaServer Faces (obecnie Jakarta Faces) to stabilny i dojrzały framework do budowy aplikacji webowych w Javie. Dzięki podziałowi na warstwy, integracji z CDI, obsłudze AJAX i bogatym bibliotekom komponentów, JSF nadaje się szczególnie dobrze do budowy rozbudowanych systemów o długim cyklu życia.

FAQ

Najczęstsze pytania

  • JavaServer Faces (JSF), obecnie znane jako Jakarta Faces, to framework do tworzenia interfejsów użytkownika dla aplikacji webowych w języku Java. Jego głównym założeniem jest oddzielenie warstwy prezentacji od logiki biznesowej oraz zarządzanie stanem aplikacji — zapisywanie i przywracanie stanu komponentów pomiędzy żądaniami HTTP.
  • Na wzorcu MVC (Model-View-Controller): Model to logika biznesowa i dane (JavaBeans, EJB, JPA), View to warstwa prezentacji (pliki .xhtml i komponenty UI), a Controller steruje przepływem, np. zarządzając danymi z formularzy. Taki podział ułatwia modularność, ponowne wykorzystanie komponentów i testowanie.
  • Widoki tworzy się w plikach XHTML ze specjalnymi znacznikami JSF, takimi jak h:form, h:inputText czy h:dataTable. Popularne biblioteki rozszerzające to PrimeFaces z ponad 100 gotowymi komponentami UI, OmniFaces rozszerzający standardową funkcjonalność oraz BootsFaces i ButterFaces integrujące się z Bootstrapem.
  • Poprzez Data Binding — powiązanie komponentów formularzy z atrybutami klas JavaBeans, zarządzanie stanem po stronie klienta lub serwera oraz scope'y (@RequestScoped, @ViewScoped, @SessionScoped, @ApplicationScoped) kontrolujące czas życia danych. Domyślnym sposobem zarządzania beanami jest dziś CDI (Contexts and Dependency Injection).
  • Mimo że JSF nie jest już „modnym” wyborem w porównaniu ze Spring Boot + REST API + frontendem w React czy Angularze, nadal ma silne zastosowanie w projektach korporacyjnych. Dzięki PrimeFaces i OmniFaces można tworzyć złożone interfejsy bez pisania JavaScriptu, a od wersji Jakarta Faces 4.x framework wciąż jest rozwijany.

Blog

Powiązane artykuły

Czytaj więcej
Back-end

GraalVM: Rewolucja w świecie wirtualnych maszyn

GraalVM wprowadza przełom w świecie wirtualnych maszyn, oferując wyjątkową uniwersalność i wydajność. Zaprojektowany z myślą o współczesnych wymaganiach programistycznych, umożliwia uruchamianie kodu napisanego w wielu językach, w tym Java, JavaScript, Python, i innych, na jednej platformie.

Tomasz Kozon
06 lut 2024
Back-end

Czym jest SOAP i jak działa?

SOAP to protokół służący do wymiany informacji między różnymi systemami. Dzięki niemu możliwe jest przesłanie kompleksowych danych w formacie XML za pomocą sieci. W artykule dowiesz się, jak działa SOAP i jakie ma zastosowania.

Tomasz Kozon
10 maj 2023
Big Data

DuckDB - dlaczego analityczna baza danych działa bez serwera

DuckDB to analityczna baza danych, która działa wewnątrz aplikacji, bez serwera i bez administratora. Wyjaśniamy, skąd bierze się jej szybkość, jak czyta pliki CSV i Parquet bez importu, gdzie sprawdza się w firmie, czego nie zastąpi i co zmienia zapowiadany tryb serwera w wersji 2.0.

Tomasz Kozon
23 sie 2026