Web frameworks do budowy aplikacji zgodnych z J2EE Jacek Panachida
Cel pracy Analiza wybranych ram projektowych dostępnych dla platformy Java Warunki selekcji napisany z wykorzystaniem języka Java oraz platformy J2EE otwarty kod źródłowy licencja zaaprobowana przez organizację Open Source Initiative
Sposób realizacji Budowa aplikacji wspomagającej pracę przychodni weterynaryjnej (Petclinic) Celem aplikacji jest sprawdzenie badanych bibliotek w praktycznym użyciu Aplikacja nie jest nastawiona na funkcjonalność lecz na pokazanie możliwości badanych bibliotek
Analiza Podczas analizy zostaną uwzględnione kwestie związane z teoretycznymi zasadami działania biblioteki badaniem gotowej aplikacji
Porównanie - część teoretyczna Zakres części teoretycznej porównania architektura model programistyczny cykl życia żądania/zdarzenia nawigacja walidacja i konwersja typów internacjonalizacja łatwość testowania rozszerzalność
Porównanie część praktyczna Zakres części praktycznej porównania wydajność metryki kodu kodu języka Java kodu szablonów wsparcie społeczności dojrzałość dostępność (ang. accessibility) łatwość wprowadzania zmian (ang. changeability)
Standardy Charakterystykę wymagań niefunkcjonalnych obejmuje norma ISO 9126 Dostępność definiowana jest przez standard WAI (Web Accessibility Initiative)
Mnogość możliwości Obecnie istnieje ponad 40 różnych szkieletów programistycznych przeznaczonych do budowy aplikacji internetowych Najpopularniejsze Struts JavaServer Faces Spring Web MVC WebWork Tapestry Struts2 (WebWork + Struts)
Klasyfikacja Ze względu na implementowany model Model 1 Model 2 Model komponentowy Ze względu na zakres działania specjalizowane kompleksowe (ang. full-stack)
Model 1 (rys)
Model 2 (rys)
Zadania szkieletów programistycznych Mapowanie nadchodzących żądań do kontrolerów Nawigacja Dostęp do warstwy modelu, walidacja Integracja z językiem znaczników Internacjonalizacja i lokalizacja Obsługa alternatywnych technologii widoku Zmiana motywów graficznych
Analizowane biblioteki Tworzona praca dotyczy dwóch bibliotek Spring Web MVC JavaServer Faces Uzasadnienie realizacja odmiennych modeli popularność
Podział aplikacji na moduły
Elementy dodatkowe Rozwiązania alternatywne Wzorce projektowe Środowisko pracy
Rozwiązania alternatywne Aplety Java Web Start RIA (Rich Internet Application) Adobe Flex Laszlo Echo
Wzorce projektowe warstwy prezentacji Front Controller View Helper Model-View-Controler (MVC)
Front Controller Cel centralne zarządzania widokami w pojedynczym obiekcie przyjmującym żądania klientów Motywacja ułatwienie wyboru widoku dla żądania, autoryzacja poprawa zarządzania i separacji ról Zastosowanie aplikacja posiadająca skomplikowaną nawigację aplikacje wymagające zastosowania polityki bezpieczeństwa
Front Controller (rys)
View Helper Cel oddzielenie widoku od logiki związanej z jego przetwarzaniem Motywacja podział zespołu projektowego separacja ról (brak logiki w kodzie widoku) Zastosowanie aplikacje zawierające skomplikowaną logiką związaną z prezentacją
View Helper (rys)
Model-View-Controller Cel definicja podstawowych, niezależnych od siebie części aplikacji Motywacja rozdzielenie ról podział zespołu projektowego Zastosowanie duże, skomplikowane aplikacje cechujące się elastycznością
Model-View-Controller (rys)
Środowisko pracy (1) Narzędzia wytwarzania Subversion Maven system wersjonowania wspomaganie w zarządzaniu projektem Hibernate Spring Eclipse translator obiektowo-relacyjny szkielet programistyczny warstwy środkowej zintegrowane śrdowisko programistyczne
Środowisko pracy (2) Narzędzia testujące Spring Mock (baza danych) transakcyjne testowanie warstwy DAO EasyMock JUnit 4 wspracie dla obiektów pozornych testy jednostkowe Selenium testy akceptacyjne, działające na poziomie przeglądarki