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
Back-end

MERN Stack – charakterystyka i zastosowanie

MERN Stack to jeden z najpopularniejszych zestawów technologii wykorzystywanych do tworzenia nowoczesnych aplikacji webowych. Dzięki połączeniu MongoDB, Express, React oraz Node.js umożliwia on budowę wydajnych i skalowalnych rozwiązań opartych w całości na języku JavaScript. Stack ten jest chętnie wybierany zarówno przez startupy, jak i doświadczone zespoły developerskie.

Tomasz Kozon
14 gru 2025
Back-end

Biome w praktyce: nowoczesne narzędzie do formatowania i lintowania kodu

Utrzymanie spójnego stylu i wysokiej jakości kodu to jedno z największych wyzwań w nowoczesnych projektach programistycznych. Wraz z rozwojem ekosystemu JavaScript i TypeScript deweloperzy coraz częściej muszą korzystać z wielu narzędzi do formatowania i lintowania, co prowadzi do złożonej konfiguracji i potencjalnych konfliktów. Biome powstało jako odpowiedź na te problemy, oferując jedno, szybkie i spójne rozwiązanie typu all-in-one.

Tomasz Kozon
04 gru 2025
Back-end

Bazel – szybkie i skalowalne budowanie projektów

Bazel to jedno z najszybszych i najbardziej niezawodnych narzędzi do budowania projektów, stworzone z myślą o pracy na dużą skalę. Dzięki inteligentnemu zarządzaniu zależnościami i zaawansowanym mechanizmom cache’owania znacząco skraca czas kompilacji, nawet w bardzo rozbudowanych repozytoriach. Pozwala zespołom pracować szybciej, stabilniej i bardziej przewidywalnie, niezależnie od stosowanych języków programowania.

Tomasz Kozon
04 gru 2025
Back-end

Czym jest PocketBase?

PocketBase to narzędzie, które w ostatnim czasie zyskuje coraz większą popularność wśród frontendowców i twórców aplikacji. Oferuje ono szybki sposób na uruchomienie kompletnego backendu bez skomplikowanej konfiguracji i integracji wielu usług. Dzięki połączeniu bazy danych, API oraz systemu autoryzacji w jednym rozwiązaniu pozwala skupić się na budowie samej aplikacji.

Tomasz Kozon
03 gru 2025