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/

Podobne dokumenty