Wprowadzenie do J2EE
Transkrypt
Wprowadzenie do J2EE
Piotr Matkowski Wprowadzenie do J2EE 20 kwietnia 2005 "Unfortunately, no one can be...told what the J2EE is. You have to see it for yourself." Plan referatu 1.Wstęp 2.Najważniejsze koncepcje • • • Wielowarstwowość Komponentowy model programowania Menadżery zasobów 3.Najważniejsze technologie • • Podział ogólny Interfejsy programowe 4.Schemat procesu tworzenia aplikacji 5.Istniejące implementacje 6.Bibliografia Wstęp ● Co to jest J2EE ? – – J2EE jest platformą dla złożonych, wielowarstowych, rozproszonych, wydajnych i skalowalnych aplikacji zbiór specyfikacji dotyczących powiązanych ze sobą technologii, które razem mają zapewnić dobrą realizację zadań: ● ● ● ● ● Uwierzytelnianie Kontrola uprawnień Transakcyjność Komunikacja między modułami systemu Dostęp do danych Wstęp ● Middleware - warstwa oprogramowania rezydującą ponad systemem operacyjnym, odpowiedzialna za implementację zestawu mechanizmów, protokołów i interfejsów programistycznych, które są nieodzowne dla stworzenia zaawansowanego systemu informatycznego dla współczesnego przedsiębiorstwa prowadzącego działalność w sieci. Istnienie takiej warstwy umożliwia twórcy systemu pracę na wyższym poziomie abstrakcji i skupienie się na oprogramowaniu logiki aplikacji, bez angażowania się w skomplikowane mechanizmy niskopoziomowe. Middleware - korzyści ● ● ● Uniknięcie ryzyka popełnienia błedów programistycznych w krytycznych mechanizmach systemu Szybsze, tańsze i łatwiejsze projektowanie, programowanie, wdrażanie i utrzymanie aplikacji Lepsza skalowalność i łatwiejsza integracja systemów dzięki standaryzacji interfejsów Części składowe J2EE ● ● ● ● J2EE Platform - specyfikacja platformy J2EE Compatibility Test Suite - zbiór testów umożliwiających weryfikację zgodności ze specyfikacją konkretnej implementacji J2EE J2EE Reference Implementation - dostarczona przez twórcę specyfikacji, firmę Sun Microsystems, wzorcowa implementacja specyfikacji J2EE Blueprints - zbiór wskazówek, preferowanych rozwiązań, wzorców projektowych wraz z propozycją konkretnego modelu rozproszonej, skalowalnej aplikacji Najważniejsze koncepcje ● Wielowarstwowość aplikacji – Aplikacje J2EE są logicznie podzielone na warstwy. Każda warstwa odpowiada za inny zakres funkcjonalności systemu i może zawierać wiele komponentów. Najczęściej pod terminem "wielowarstwowy" (ang. multi-tiered) rozumie się 3 warstwy: (jak we wzorcu MVC) ● Warstwa prezentacji (View) - aplikacje w Javie, aplety, serwlety, strony JSP ● Warstwa logiki biznesowej (controller) - komponenty EJB ● Warstwa danych (Model) - bazy danych, Enterprise Information Systems Wielowarstwowość aplikacji Najważniejsze koncepcje ● Komponentowy model programowania – – Platforma J2EE wspiera następujące komponenty: aplikacje klienckie, applety, komponenty WWW (serwlety i strony JSP) oraz komponenty EJB Kontener - otoczka, w której działają komponenty. Kontener zapewnia środowisko wykonania oraz standardowe usługi, z których korzystają komponenty (np. dynamiczne tworzenie i kasowanie komponentów, zarządzanie transakcjami i zewnętrznymi zasobami, autoryzacja użytkowników). Dzięki istnieniu kontenerów programista komponentów nie musi się zajmować tymi funkcjami. Pomiędzy komponentami a kontenerami również zdefiniowany jest odpowiedni intefejs Najważniejsze koncepcje ● Menadżery zasobów – Dostęp do zewnętrznych zasobów danych organizowany jest wokół koncepcji tzw. menadżerów zasobów (ang. resource manager). Serwer aplikacyjny korzysta z usług odpowiedniego sterownika, który, implementując odpowiedni protokół komunikacyjny, umożliwia dostęp do zasobów konkretnego systemu przechowywania i archiwizacji danych (EIS). Specyfikacja J2EE connector architecture 1.0 opisuje ten standard. Technologie – podział ogólny ● Technologie komponentowe – Ze względu na miejsce wykonania kodu: ● ● – komponenty strony klienta (applety i aplikacje w Javie) komponenty strony serwera (pozostałe) Ze wzlgędu na charakter wykonywanych zadań: ● ● komponenty odpowiedzialne za interakcję z użytkownikiem (wszystkie oprócz EJB) komponenty odpowiedzialne za logikę biznesową, stosujące skomplikowane algorytmy i przeprowadzające transakcje na dużych wolumenach (EJB) Technologie – podział ogólny ● Komunikacja – Ponieważ aplikacje tworzone na platformę J2EE są zwykle rozproszone, muszą być dostarczone odpowiednie protokoły zapewniające komunikację między poszczególnymi elementami systemu ● ● ● HTTP, HTTPS - typowym klientem systemu J2EE jest przeglądarka WWW JDBC, JNDI - dostęp do baz danych RMI/RMI-IIOP - dostęp do komponentów EJB Technologie – podział ogólny ● Usługi – Ze względu na to, że aplikacje J2EE często muszą integrować wiele źródeł informacji (bazy danych, systemy typu ERP, CRM, inne aplikacje isntniejące w firmie), serwer aplikacyjny musi oferować jednolity sposób dostępu do tych zasobów. Tego typu usługi definiuje specyfikacja J2EE Connector Architecture. Technologie – interfejsy programowe ● Aby aplikacje zbudowane w modelu J2EE mogły działać zgodnie z podanymi wytycznymi, potrzebnych jest wiele interfejsów programowych (API). Dostawca systemu zgodnego z J2EE zapewnia ich implementację, a twórca komponentów musi ich przestrzegać, co wiąże się także z pewnymi ograniczeniami, np. pisząc komponenty EJB nie można korzystać z bibliotek natywnych, tworzyć i synchronizować wątków, korzystać z dostępu do plików poprzez bibliotekę java.io, ani korzystać z obiektów klasy ServerSocket. Kilka z tych interfejsów występuje już w J2SE Technologie – interfejsy programowe ● ● ● ● Java IDL API - Java IDL pozwala na tworzenie aplikacji obiektowych komunikujących się przez CORBA. JDBC Core API - dostęp do relacyjnych baz danych. RMI-IIOP API - Protokół RMI pozwala na komunikację międzyprocesową. RMI-IIOP jest jego przenośnym rozszerzeniem bazującym na protokole IIOP (Internet Inter-ORB Protocol), używanym przez aplikacje wykorzystujące standard CORBA. JNDI API - JNDI pozwala na zlokalizowanie komponentu lub innego zasobu w sieci. Technologie – interfejsy programowe ● ● ● ● EJB - Standard EJB definiuje sposób pisania komponentów strony serwera i ustanawia standardowy interfejs pomiędzy komponentami i serwerem aplikacyjnym. Servlets - Specyfikacja Servlets 2.3 definiuje zasady programowania serwletów. JSP - Specyfikacja JSP określa zasady budowania komponentów WWW bazujących na osadzaniu kodu języka Java w dokumentach HTML. JMS - Java Messaging Service pozwala na asynchroniczną komunikację pomiędzy rozproszonymi obiektami. Technologie – interfejsy programowe ● ● ● JTA - Specyfikacje Java Transaction API i Java Transaction Service oferują komponentom usługi transakcyjne. JavaMail - Pozwala na wysyłanie poczty z poziomu aplikacji napisanej w Javie w sposób niezależny od platformy oraz używanych protokołów dostarczania poczty (zależny od JAF) JAF - Specyfikacja JavaBeans Activation Framework określa zadania tego interfejsu jako: określanie typu dowolnych danych, enkapsulacja dostępu do danych, pobieranie zestawu operacji możliwych do wykonania na określonym typie danych. Technologie – interfejsy programowe ● ● ● JAXP - Java API for XML Parsing obsługuje interfejsy SAX i DOM parserów XML, jak również wspiera obsługę procesorów transformacji XSLT. Connector - Ten interfejs pozwala na integrację aplikacji J2EE z różnymi systemami EIS. JAAS - Za pomocą Java Authentication and Authorization Service można przeprowadzić autentykację użytkowników i kontrolować ich prawa dostępu do aplikacji. Technologie – interfejsy programowe Tworzenie aplikacji - pakowanie ● Aplikacje zgodne ze specyfikacją J2EE są odpowiednio pakowane do pliku typu EAR. Plik taki ma dobrze określoną strukturę, a jego zawartość opisywana jest przez deskryptor pliku EAR. Pojedynczy plik EAR jest samodzielnym, zamkniętym pakietem, który stanowi kompletną aplikację gotową do uruchomienia na dowolnym systemie zgodnym z J2EE. Plik EAR zwykle składa się z kilku modułów, które zawierają komponenty. Podobnie jak plik EAR, każdy moduł jest opisany swoim deskryptorem. Każdy moduł może dać się samodzielnie uruchomić, nie jest do tego potrzebny kontekst ani deskryptor aplikacji. Części składowe aplikacji J2EE ● W pliku EAR przynajmniej jeden spośród: – – – – Moduły EJB w postaci archiwów JAR, które zawierają komponenty EJB (sesyjne, trwałe oraz komunikacyjne) razem z właściwym deskryptorem. Specyfikacja EJB określa strukturę i zawartość takiego modułu. Moduły WWW w postaci archiwów WAR (Web Archive), zawierających serwlety, JSP, strony HTML i inne zasoby WWW razem z właściwym deskryptorem. Specyfikacja Servlets określa strukturę i zawartość takiego modułu. Moduły adapterów zasobów w postaci plików RAR (Resource Archive) Moduły aplikacji klienta w postaci archiwów JAR Struktura pliku EAR Przykładowy deskryptor ● Deskryptor aplikacji: <!DOCTYPE application PUBLIC '-//Sun Microsystems, Inc.//DTD J2EE Application 1.2//EN' 'http://java.sun.com/j2ee/dtds/application_1_2.dtd'> <application> <display-name>Admin</display-name> <description>Application description</description> <module> <web> <web-uri>petstoreadmin.war</web-uri> <context-root>admin</context-root> </web> </module> <module> <ejb>petstoreadminEjb.jar</ejb> </module> <security-role> <description>the administrator role</description> <role-name>administrator</role-name> </security-role> </application> Jak wysłać e-mail ● Użycie interfejsu JavaMail: (wersja minimalna) import java.util.*; import javax.mail.*; public class MailUtils { public static boolean sendMail(String sender, String receiver, String subject, String text, String footer) { Properties properties = System.getProperties(); properties.put("mail.smtp.host", "adres.serwera.smtp"); properties.put("mail.smtp.auth", "false"); Session session = Session.getInstance(properties); Message message = new MimeMessage(session); message.setFrom(new InternetAddress(sender)); message.setRecipient(Message.RecipientType.TO, new InternetAddress(receiver)); message.setSubject(subject); message.setSentDate(new Date()); message.setText(text); Transport.send(message); } } Wybrane implementacje ● ● ● ● ● ● ● ● ● ● ● ● ● ● Bea Weblogic Server HP Bluestone Total-e-Server iPlanet Application Server IBM Websphere Application Server IONA iPortal Application Server Oracle 9i Application Server Macromedia JRun Server SilverStream Application Server Sybase EAServer TogetherSoft ControlCenter Trifork Enterprise Application Server Ars Digita Community System Borland AppServer Java 2 SDK, Enterprise Edition Bibliografia ● ● ● http://strony.aster.pl/gregor/subsites/j2ee/ http://java.sun.com/j2ee http://www.javasoft.pl/