Web frameworks do budowy aplikacji zgodnych z J2EE
Transkrypt
Web frameworks do budowy aplikacji zgodnych z J2EE
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 ● – translator obiektowo-relacyjny Spring ● – wspomaganie w zarządzaniu projektem Hibernate ● – system wersjonowania szkielet programistyczny warstwy środkowej Eclipse ● zintegrowane śrdowisko programistyczne Środowisko pracy (2) ● Narzędzia testujące – Spring Mock (baza danych) ● – EasyMock ● – wspracie dla obiektów pozornych JUnit 4 ● – transakcyjne testowanie warstwy DAO testy jednostkowe Selenium ● testy akceptacyjne, działające na poziomie przeglądarki