Twarze serwera Jakarta

Dżakarta Twarze
Oryginalni autorzy Mikrosystemy Słońca
Deweloperzy Fundacja Eclipse
Wersja stabilna
4.0.0 / 15 maja 2022 ; 9 miesięcy temu ( 2022-05-15 )
Magazyn
Napisane w Jawa
Typ Ramy aplikacji internetowych
Strona internetowa jakarta .ee /specyfikacje /twarze / Edit this at Wikidata

Jakarta Faces , dawniej Jakarta Server Faces i JavaServer Faces ( JSF ) to specyfikacja Java służąca do budowania interfejsów użytkownika opartych na komponentach dla aplikacji internetowych i została sformalizowana jako standard w procesie społecznościowym Java będącym częścią platformy Java, Enterprise Edition . Jest to również framework webowy MVC , który upraszcza budowę interfejsów użytkownika (UI) dla aplikacji serwerowych przy użyciu komponentów interfejsu użytkownika wielokrotnego użytku na stronie.

JSF 2.x używa Facelets jako domyślnego systemu szablonów. Użytkownicy oprogramowania mogą również zdecydować się na zastosowanie technologii takich jak XUL lub Java . JSF 1.x używa JavaServer Pages (JSP) jako domyślnego systemu szablonów.

Historia

W 2001 roku pierwotne żądanie specyfikacji Java (JSR) dla technologii, która ostatecznie stała się JavaServer Faces, proponowało opracowanie pakietu o nazwie javax.servlet.ui

W czerwcu 2001 r. JavaWorld poinformowało o projekcie zespołu Amy Fowler „API JavaServer Faces” (znanego również jako „Moonwalk”) jako „szkielet aplikacji do tworzenia interfejsów użytkownika opartych na sieci Web”.

Najnowsze osiągnięcia

Facelets (który został zaprojektowany specjalnie dla Java Server Faces) został przyjęty jako oficjalna technologia widoku dla JSF 2.0. Eliminuje to konflikty cyklu życia, które istniały w przypadku JSP, zmuszając programistów Java do obejścia tego problemu.

Nowe rozwiązania JSF zapewniają również szeroki dostęp do adnotacji Java, takich jak @ManagedBean , @ManagedProperty i @FacesComponent , które eliminują konieczność korzystania z plikufaces-config.xml we wszystkich przypadkach z wyjątkiem rozszerzenia frameworka. Uproszczono również nawigację, eliminując konieczność korzystania z w plikufaces-config.xml . Przejścia stron można wywołać po prostu przekazując nazwę żądanego widoku lub twarzy.

Dodanie częściowego zapisywania stanu i aktualizacji DOM (Document Object Model) jest częścią wbudowanej, znormalizowanej obsługi AJAX .

Najnowsza wersja JSF ma wbudowaną obsługę zasobów, takich jak obrazy, CSS i JavaScript, umożliwiając dołączanie artefaktów do bibliotek komponentów, rozdzielanie ich na pliki JAR lub po prostu umieszczanie ich w spójnym miejscu w aplikacji internetowej. Obejmuje to logiczne nazewnictwo i wersjonowanie zasobów.

JSF 2.0 zawiera również szereg innych zmian, takich jak dodanie obsługi zdarzeń, oddzielne tryby programowania, przemieszczania i produkcji, podobnie jak RAILS_ENV w Ruby on Rails , oraz znaczne rozszerzenie standardowego zestawu komponentów.

Historia aktualizacji

  • JSF 4.0 (15.05.2022) – Główne funkcje: Usunięto niektóre przestarzałe rzeczy (natywne zarządzane komponenty bean, natywne odniesienia EL), domyślnie brak rozszerzonego widoku, dodano ClientWindowScoped
  • JSF 3.0.0 (2020-10-28) – Zmieniono nazwę pakietu z Javax na Jakarta.
  • JSF 2.3 (2019-09-10) – Pierwsza wersja interfejsu API Jakarta Server Pages dla Jakarta EE. Ani interfejs API, ani zachowanie nie uległy zmianie.
  • JSF 2.3 (2017-03-28) – Główne funkcje: search Expressions, adresy URL bez rozszerzeń, walidacja komponentu bean dla kompletnych klas, komunikacja push za pomocą WebSocket , rozszerzona integracja z CDI.
  • JSF 2.2 (21.05.2013) – Wprowadzono nowe koncepcje, takie jak widoki bezstanowe, przepływ stron i możliwość tworzenia przenośnych kontraktów zasobów.
  • JSF 2.1 (22.11.2010) — wersja konserwacyjna 2 JSF 2.0. Tylko bardzo niewielka liczba zmian specyfikacji.
  • JSF 2.0 (2009-07-01) — Główne wydanie zapewniające łatwość obsługi, ulepszoną funkcjonalność i wydajność. Zbiega się z Javą EE 6.
  • JSF 1.2 (2006-05-11) – Wiele ulepszeń podstawowych systemów i interfejsów API. Zbiega się z Java EE 5. Wstępne przyjęcie w Java EE.
  • JSF 1.1 (27.05.2004) — wydanie poprawiające błędy. Brak zmian w specyfikacji.
  • JSF 1.0 (2004-03-11) - Opublikowano wstępną specyfikację.

Jak to działa

W oparciu o oparty na komponentach model projektowania interfejsu użytkownika , JavaServer Faces używa plików XML zwanych szablonami widoków lub widokami Facelets . FacesServlet przetwarza zdarzenia i renderuje odpowiedź (zwykle w języku HTML) do klienta. Stan komponentów interfejsu użytkownika i innych obiektów będących przedmiotem zainteresowania jest zapisywany na końcu każdego żądania w procesie zwanym stateSaving (uwaga: transient true ) i przywrócone przy następnym utworzeniu tego widoku. Zarówno klient, jak i serwer mogą zapisywać obiekty i stany.

JSF i AJAX

Mojarra
Inne nazwy JSF RI
Oryginalni autorzy Mikrosystemy Słońca
Deweloperzy Fundacja Eclipse
Pierwsze wydanie 3 marca 2004 ; 19 lat temu ( 03.03.2004 )
Wersja stabilna
3.0.2 / 29 listopada 2021 r . ; 15 miesięcy temu ( 2021-11-29 )
Magazyn github.com/eclipse-ee4j/mojarra _ _ _
Napisane w Jawa
Platforma Dżakarta EE
Typ framework sieciowy
Licencja EPL-2.0
Strona internetowa eclipse-ee4j .github .io /mojarra /

JSF jest często używany razem z AJAX , techniką tworzenia bogatych aplikacji internetowych . AJAX to połączenie technik i technologii tworzenia stron internetowych, które umożliwiają tworzenie bogatych interfejsów użytkownika. Komponenty interfejsu użytkownika w Mojarra ( implementacja referencyjna JSF ) i Apache MyFaces zostały pierwotnie opracowane tylko dla HTML, a AJAX musiał zostać dodany przez JavaScript. To się jednak zmieniło:

Ponieważ JSF obsługuje wiele formatów wyjściowych, można łatwo dodawać komponenty obsługujące AJAX w celu ulepszenia interfejsów użytkownika utworzonych za pomocą JSF. Specyfikacja JSF 2.0 zapewnia wbudowaną obsługę AJAX poprzez standaryzację cyklu życia żądania AJAX i zapewnienie prostych interfejsów programistycznych dla zdarzeń AJAX. Specyfikacja pozwala zdarzeniu wywołanemu przez klienta przejść przez walidację, konwersję i wywołanie metody przed zwróceniem wyniku do przeglądarki poprzez aktualizację XML DOM.

JSF 2 zawiera obsługę płynnej degradacji , gdy JavaScript jest wyłączony w przeglądarce.

Komponenty i frameworki obsługujące technologię AJAX

Następujące firmy i projekty oferują frameworki JSF lub biblioteki komponentów oparte na AJAX:

Krytyka

Myśl Pracownicza, 2014

W publikacji Technology Radar ze stycznia 2014 roku firma ThoughtWorks napisała:

Wciąż obserwujemy, jak zespoły napotykają problemy przy użyciu JSF – JavaServer Faces – i zalecamy unikanie tej technologii. Wydaje się, że zespoły wybierają JSF, ponieważ jest to standard JEE, bez faktycznej oceny, czy model programowania im odpowiada. Uważamy, że JSF jest wadliwy, ponieważ próbuje wyabstrahować HTML , CSS i HTTP , co jest dokładnie odwrotnością tego, co robią nowoczesne frameworki internetowe . JSF, podobnie jak formularze sieciowe ASP.NET, próbuje stworzyć stanowość na szczycie bezstanowego protokołu HTTP i ostatecznie powoduje cały szereg problemów związanych ze współdzieleniem stanu po stronie serwera. Jesteśmy świadomi ulepszeń w JSF 2.0, ale uważamy, że model jest zasadniczo zepsuty. Zalecamy, aby zespoły korzystały z prostych platform oraz opanowywały i rozumiały technologie internetowe, w tym HTTP, HTML i CSS.

Obalenie

W lutym 2014 r. Çağatay Çivici (kierowniczka PrimeFaces) odpowiedziała na krytykę ThoughtWorks w poście zatytułowanym JSF nie jest już tym, o czym mówiono . Çivici twierdzi, że ulepszenia JSF na przestrzeni lat oferują wiele funkcji obejmujących nowoczesne tworzenie stron internetowych, zapewniając opcję pisania własnego JavaScript, HTML i CSS. Również w odniesieniu do stanu, Çivici napisał:

JSF jest strukturą stanową z natury, a stan sprawia, że ​​tworzenie aplikacji internetowych jest łatwe. Dzięki ulepszonym technikom zarządzania stanem wprowadzonym w JSF 2.0+ (np. tryb bezstanowy, częściowe zapisywanie stanu), JSF może również skalować.

DZone, 2014

W artykule opublikowanym w listopadzie 2014 r. na stronie internetowej DZone, zatytułowanym „Dlaczego należy unikać JSF”, Jens Schauder napisał:

Facelets, preferowana technologia prezentacji JSF, na pierwszy rzut oka wygląda jak zwykła technologia tworzenia szablonów, taka jak stary dobry JSP lub Thymeleaf. Ale jeśli przyjrzysz się bliżej, przerażenie staje się oczywiste. W tym samym miejscu, w którym tworzysz strukturę kodu HTML, umieszczasz również logikę, które części interfejsu użytkownika powinny zostać zaktualizowane w ramach akcji. Wyraźne naruszenie rozdzielenia interesów w mojej książce. Jeszcze lepszy jest natychmiastowy atrybut, który zmienia cykl życia po stronie serwera! A jeśli to nie wystarczy, robi to na różne sposoby, w zależności od tagu, na którym go używasz. Nie możesz zmyślać takich rzeczy.

Strona serwera, 2016

W lutym 2016 r. Witryna internetowa społeczności Java dla przedsiębiorstw, TheServerSide, opublikowała artykuł odradzający stosowanie JSF, którego użycie mogłoby zagrozić jakości produktu końcowego. Artykuł rozwinął się z pięciu powodów:

  1. Proste zadania stają się trudne;
  2. JSF nie ma elastyczności;
  3. Krzywa uczenia się jest stroma;
  4. Niezgodność ze standardowymi technologiami Java; I
  5. Prymitywne wsparcie AJAX.

Linki zewnętrzne