Przegląd technologii J2EE

59
Przegląd technologii J2EE Jakub Kostynowicz Kamil Rembalski

description

Przegląd technologii J2EE. Jakub Kostynowicz Kamil Rembalski. Struktura J2EE. Aplety (Applets). Programy java działające po stronie klienta. Wykorzystują maszynę wirtualną zawarta w przeglądarce. Przegladarka wywołuje kolejno metody init(), start(), stop(), destroy(). Aplety (Applets). - PowerPoint PPT Presentation

Transcript of Przegląd technologii J2EE

Page 1: Przegląd technologii J2EE

Przegląd technologii J2EE

Jakub Kostynowicz

Kamil Rembalski

Page 2: Przegląd technologii J2EE

Struktura J2EE

Page 3: Przegląd technologii J2EE

Aplety (Applets)

• Programy java działające po stronie klienta.

• Wykorzystują maszynę wirtualną zawarta w przeglądarce.

• Przegladarka wywołuje kolejno metody init(), start(), stop(), destroy()

Page 4: Przegląd technologii J2EE

Aplety (Applets)

• Mogą zawierać klienty sieciowe - Sockety, RMI, CORBA.

• Mogą utrzymywać łączność jedynie z serwerem, z którego zostały pobrane.

• Konkurencja: ActiveX, Macromedia Flash

Page 5: Przegląd technologii J2EE

Serwlety (Servlets)

• Coś podobnego do programów CGI

• Dziedziczą po klasie HttpServlet

• Metody doXXX() wywoływane przez kontener serwletów po otrzymaniu odpowiedniego żądania

• Metody init() i destroy(), inicjujące i niszczące serwlet.

Page 6: Przegląd technologii J2EE

Serwlety (Servlets)

• Klasy HttpServletRequest i HttpServletResponse: dostęp do nagłówków Http, parametramów żądań, cookies, sesji, IP użytkownika wywołującego serwlet oraz metody autentykacji i informacji o rolach użytkownika

Page 7: Przegląd technologii J2EE

Koncept: Deskryptory

• Pliki xml, pozwalające programiście opisać aplikację.

• Przekazywanie parametrów inicjacyjnych dla serwletów, wiązanie serwletów z wzorami zapytań

Page 8: Przegląd technologii J2EE

JSP (?)

Page 9: Przegląd technologii J2EE

Java Server Pages

• Pliki HTML/WML zawierające skryplety - fragmenty kodu w javie.

• Konwertowane (Kompilowane) do postaci serwletów

• Możliwość definiowania własnych bibliotek tagów JSP

• Łatwe korzystanie z JavaBeans

Page 10: Przegląd technologii J2EE

Koncept: Kontrolery

• Centralny serwlet przechwytujacy wszystkie żądania.

• W zależności od żądania (akcji) wywołuje odpowiedni Handler, obsługujacy dane zdarzenie.

• Mapy zdarzenie-handler przechowywane są w plikach konfiguracyjnych.

Page 11: Przegląd technologii J2EE

Technologia pomocnicza: Struts

• Gotowe wzorce kontrolera

• Usystematyzowany schemat aplikacji

• Bogata bilblioteka tagów JSP, upraszczająca tworzenie formularzy, iterowanie po listach czy choćby generowanie linków.

Page 12: Przegląd technologii J2EE

Java API for XML Parsing

• Umożliwia pracę z danymi zapisanymi w XML'u za pomocą:

• parsera - SAX

• modelu danych - DOM

• transformacji - XSLT

Page 13: Przegląd technologii J2EE

SAX

• Umożliwia proste parsowanie dokumentów XML za pomocą parsera opartego na obsłudze zdarzeń. Parserowi podczepiamy napisaną przez nas klasę o odpowiednim interfejsie. Podczas parsowania parser będzie wywoływał opowiednie metody tej klasy.

• Zdarzenia: startDocument, startElement, characters, endElement, endDocument

Page 14: Przegląd technologii J2EE

DOM (Document Object Model)

• Podstawową wadą SAX'a jest sekwencyjny dostęp, DOM eliminuje tą wadę

• DOM jest to zbiór interfejsów, które odwzorowują strukturę dokumentu XML. Podstawowe interfejsy to Document, Element i Node. Obiekty tych interfejsów tworzą drzewo, które również nazywa się DOM'em.

Page 15: Przegląd technologii J2EE

XSLT (XML Stylesheet Language Transformations)

• Java API for XSLT- umożliwia transformowanie dokumentów XML za pomocą arkuszy XSL w sposób zgodny ze specyfikacją XSLT, zdefiniowaną przez W3C.

• Pozwala na prezentacje danych zawartych w dokumencie XML przy pomocy arkusza XLS

Page 16: Przegląd technologii J2EE

Technologia pomocnicza: Ant

• „Małe narzędzie do dużych zadań”

• Skrypty w postaci plików xml, pozwalające kompilować nawet najbardziej złożone aplikacje.

• Zupełne uwolnienie się od środowisk IDE.

• Nie ma potrzeby pisania skryptów do każdej aplikacji.

Page 17: Przegląd technologii J2EE

Co potrafi mrówka?

• Kompilować klasy Java, pliki JSP

• Czytać pliki konfiguracyjne .properties

• Kopiować, kasować, zmieniać nazwy plików.

• Zarządzać wersjami buildów.

• Komunikować się z CVS

• Pakować programy do postaci plików .jar

Page 18: Przegląd technologii J2EE

BEA Weblogic 8.1

• Serwer aplikacji J2EE

• Wszystkie technologię powiązane z J2EE

• Własna maszyna wirtualna JRockit

• Własne sterowniki JDBC

• Pomost JCOM

• Pomost Tuxedo

Page 19: Przegląd technologii J2EE

JDBC (?)

Page 20: Przegląd technologii J2EE

JDBC

• API pozwalające komunikować się z bazami danych.

• Każdy producent pisze sterownik JDBC do własnej bazy danych.

• Możliwość wykonywania zapytań SQL i przeglądania wyników.

• Pule połaczeń.

Page 21: Przegląd technologii J2EE

JNDI (?)

Page 22: Przegląd technologii J2EE

Java Naming and Directory Interface

• Odpowiednik Naming Service z CORBA.

• Możliwość wiązania obiektów z nazwami, tworzenia podkontekstów w postaci drzewa.

• Możliwość podłączenia do LDAP

• Większość serwerów aplikacji oferuje własne JNDI.

Page 23: Przegląd technologii J2EE

JDBC 2

• Pakiet javax.sql

• klasa DataSource - fabryka połaczeń z bazą danych, powiązana z nazwą w JNDI.

• Pule połaczeń.

• Multipule - zbiory pul połaczeń, możliwość tworzenia pul zapasowych lub pobierania danych z kilku źródeł.

Page 24: Przegląd technologii J2EE

EJB (?)

Page 25: Przegląd technologii J2EE

Enterprise Java Beans

Co to jest java bean?

Można powiedzieć, że jest to klasa (obiekt klasy) napisana w sposób zgodny z pewnym standardem, przez co mogą nią zarządzać programy. Zgodnie z zaleceniami, komponent JavaBean powinien mieć metody setXXX / getXXX dla każdego atrybutu.

Bean nie znaczy fasola! Nazwa „Java” pochodzi od nazwy gatunku kawy, a „coffee bean” oznacza ziarno kawy. JavaBean raczej nie znaczy „fasolki javy”.

Page 26: Przegląd technologii J2EE

Enterprise Java Beans

• Gotowy wzorzec obiektowej warstwy logiki biznesowej.

• Ustandaryzowany sposób komunikacji z bazami danych

• Dostęp do Obiektów logiki biznesowej przez RMI-IIOP i JNDI

Page 27: Przegląd technologii J2EE

EJB - jak to działa?

• Generuje kod obiektuEJB - odpowiednika szkieletu z CORBA.

• Zarządza istniejącymi ziarnami, wywołując na nich metody.• Może zapewniać trwałość ziaren.

Większość rzeczy robi za nas kontener EJB.

Page 28: Przegląd technologii J2EE

EJB - co musimy napisać

• Klasa ziarna - własciwa implementacja logiki biznesowej. Klasa ta zaweira wszystkie atrybuty i implementacje metod.

• Remote interface - zbiór metod dostępnych zdalnie.

• Local interface - zbiór metod dostepnych lokanie• Home interfaces - zbiór metod klasy, używanych

do tworzenia/ znajdywania ziaren.

Page 29: Przegląd technologii J2EE

EJB - rodzaje ziaren

Ile mamy rodzajów ziaren EJB?

Page 30: Przegląd technologii J2EE

EJB - rodzaje ziaren

• Session bean - świadczy usługi klientom. Reprezentuje raczej procesy niż dane. Są ziarna sesyjne posiadające stan i nie posiadające stanu.

• Entity bean - reprezentuje obiekty logiki biznesowej. Dzielą się na ziarna CMP i BMP.

• Message driven bean - ziarno obsługiwane przez JMS - o tym później.

Page 31: Przegląd technologii J2EE

Stateless Session Beans

• Ziarna nie posiadające stanu - pamietają dane na czas wywołania metody.

• Kontener może bardzo łatwo tworzyć pule takich ziaren.

• Przykład: ziarno kompresujace dane.

Page 32: Przegląd technologii J2EE

Statefull session beans

• Ziarna posiadające stan.• Kontener buduje pule ziaren zapamiętywując ich

stan. Ziarno jest więc usypiane (pasywowane) i budzone (aktywowane) jako zupełnie inne ziarno.

• Należy uważać, jeśli zapamiętuje się stan ziarna np. w bazie danych. Jeśli w międzyczasie wystapi awaria kontenera, dane nie zostaną usunięte.

• Przykład: wózek sklepowy.

Page 33: Przegląd technologii J2EE

Entity beans

• Ziarna o trwałym stanie.• Posiadają klasy kluczy głównych.• Kontener tworzy pule tych ziaren aktywując

je i pasywując.• Ich interfejsy Home posiadaja metody

findByXXX(), pozwalające wyszukiwać ziarna.

• Przykład: Pracownik.

Page 34: Przegląd technologii J2EE

Entity beans: BMP / CMP

BMP / CMP (?)

Page 35: Przegląd technologii J2EE

Entity beans: BMP

• Używając JDBC, sami piszemy metody pobierające stan ziarna z bazy danych, zapisujące ten stan oraz metody pozwalające wyszukiwać ziarna.

• Sami obsługujemy relacje miedzy ziarnami - trzeba albo wczytać cały graf obiektów (aggresive loading), albo w metodach getXXX() i setXXX() znaleźć te obiekty (lazy loading)

• Dużo pisania...

Bean managed persistance

Page 36: Przegląd technologii J2EE

Entity Beans: CMP

• Kontener dba o zachowanie trwałości ziarna. Nie musimy pisać metod Load(), Store() itp.

• Nie musimy pisać metod typu findByXXX(), jedynie zadeklarować je w interfejsie Home.

• Kod jest dzięki temu kilkakrotnie krótszy, i nie musimy pisać ani jednej linijki SQL.

Container managed persistance

Page 37: Przegląd technologii J2EE

Entity Beans: CMP

Container managed persistance

Jest w deskryptorze.

Deskryptor zawiera nazwy pól z bazy danych odpowiadające atrybutom ziarna oraz deklaracje asocjacji miedzy ziarnami, dzieki czemu jest w stanie wygenerować odpowiednie inserty i update’y.

Jednak skąd kontener miałby wiedzieć, co oznacza findBiggerThen (int i) czy findByColor(String color) ? Jak generuje odpowiednie zapytania?

Page 38: Przegląd technologii J2EE

Entity Beans: CMP

EJB-QLJęzyk zapytań na Entity Beans’ach. Posiada większość konstrukcji znanych z języka sql oraz możliwość trawersowania pól obiektów. Zapytania ejb-ql zapisywane są w deskryptorach, jako opisy metod findXXX() dla kontenera. Przykład:

SELECT OBJECT(a) AS a FROM StudentBean WHERE student.dataUrodzenia.miesiąc = 5

Page 39: Przegląd technologii J2EE

XDoclet

• Dość nowa technologia.

• Jej twórcy twierdzą, że jest w stanie wygenerować do 83% kodu.

• Jest to gruba przesada, ale tak czy inaczej jest to mocne narzędzie.

• Wcześniejsze rozwiązania: programy typu Middlegen.

Page 40: Przegląd technologii J2EE

XDoclet - jak to działa

• W kodzie umieszczamy komentarze z odpowiednimi oznaczeniami, podobnymi do parametrów javadoc.

• Na podstawie tych oznaczeń XDoclet generuje za nas „głupi kod” - wszyskie interfejsy ejb, deskryptory ejb oraz deskryptory dla wiekszości kontenerów EJB.

• Współpracuje z technologią ant.

Page 41: Przegląd technologii J2EE

Zostawmy na momencik EJB-ki...

JMS (?)

Page 42: Przegląd technologii J2EE

Java Messaging Service

• API do łatwego, niezawodnego przesyłania danych. Dane przesyłane są w postaci „wiadomości”.

• Do wiadomości można dopisywać obiekty i typy proste (klucz-wartość).

• Istnieja dwa modele wysyłania wiadomości: point-to-point, gdzie wiadomośc wysyłana jest do konkretnego klienta, oraz publish/subscribe, gdzie wiadomość wysyłana jest do wszystkich klientów zarejestrowanych w temacie (topic)

Page 43: Przegląd technologii J2EE

EJB - message driven beans

• Ziarna, dostępne przez JMS.• Jest to w zasadzie asynchroniczne wołanie

metod.• JMS jest szybsze niż RMI-IIOP czy CORBA.• Najprostszy model ziaren.• Dużo problemów z bezpieczeństwem, load-

balancingiem i transakcjami.

Page 44: Przegląd technologii J2EE

EJB - Message driven beans.

Ze względu na złożoność JMS oraz fakt, że chodzi tu w zasadzie o asynchroniczne wołanie metod, ten rodzaj ziaren prawdopodobnie zostanie zastapiony ziarnami typu Asynchronicznego albo po prostu nowym interfejsem w ziarnach sesyjnych. Będzie tak, gdy specyfikacja EJB uwzględni asynchroniczne RMI. Póki co nie ma jednak niczego na ich miejsce, a programisci musza pisać ogromne ify żeby dowiedzieć się, o co w ogóle chodzi w danej wiadomości.

Page 45: Przegląd technologii J2EE

import javax.naming.*; public class EJBClient {  public static void main (String[] argv) {   // get the JNDI naming context   Context initialCtx = new InitialContext ();   // use the context to lookup the EJB Home interface   AccountHome home=(AccountHome)initialCtx.lookup("Account");   // use the Home Interface to create a Session Bean object   Account account = home.create (1234, "Athul", 1000225.28d);   // invoke business methods   account.credit (1000001.55d);   // remove the object   account.remove ();  } }

Sesja Enterprise JavaBean od strony klienta

Page 46: Przegląd technologii J2EE
Page 47: Przegląd technologii J2EE

JTA- (?)

Page 48: Przegląd technologii J2EE

Java Trasnaction API

Page 49: Przegląd technologii J2EE

Java Trasnaction API• Zarządca transakcji (ang. transaction manager) dostarcza funkcje i usługi wymagane do wyznaczania początku i końca transakcji, transakcyjnego zarządzania zasobami i synchronizacji

• Serwer aplikacji (ang. application server) stanowi środowisko uruchomieniowe dla aplikacji z uwzględnieniem zarządzania stanem transakcji (np. serwer EJB)

• Zarządca zasobów (ang. resource manager) umożliwia aplikacjom dostęp do zasobów. Aplikacje łączą się z zarządcą zasobów poprzez dedykowaną bibliotekę programową. Przykładem zarządców zasobów są serwery relacyjnych baz danych (komunikacja przez odpowiedni sterownik JDBC) lub serwery zarządzania komunikatami (dostępne poprzez interfejs Java Message Service - JMS)

• Transakcyjna aplikacja (np. składajaca się z wielu EJB) powierza zarządzanie transakcjami serwerowi aplikacji

• Zarządca komunikacji (ang. communication resource manager) umożliwia współpracę zarządców transakcji poprzez przekazywanie kontekstu transakcji

Page 50: Przegląd technologii J2EE

Java Trasnaction API

• Transakcje dla ziaren EJB:

• declarative - deklarujemy transakcje dla każdej metody w deskryptorze

• programative - sami wywołujemy metody begin() i commit()

• client-initiated - transakcje zaprogramowane w kodzie klienta

Page 51: Przegląd technologii J2EE

JAAS (?)

Page 52: Przegląd technologii J2EE

Java Authorization and Authentication Service

API to miało być bardzo uniwersalne, gotowe do podłączenia do dowolnego systemu odpowiedzialnego za bezpieczeństwo.

Page 53: Przegląd technologii J2EE

Java Authorization and Authentication Service

API to miało być bardzo uniwersalne, gotowe do podłączenia do dowolnego systemu odpowiedzialnego za bezpieczeństwo.

Cel został osiągnięty....

Page 54: Przegląd technologii J2EE

Java Authorization and Authentication Service

Jest to typowy przykład fragmentu programu, który wystarczy napisac raz, a potem stosować do woli w wielu aplikacjach.

Wiekszość rzeczy robi za nas serwer aplikacji: my piszemy tylko klienta, moduł logowania i obiekt akcji.

Serwer aplikacji powinien zapewniać obsługe ról, przechowywanie haseł, loginów. Nasza rola podczas pisania modułu logowania ogranicza się do skorzystania z narzędzi dostarczonych z serwerem.

Page 55: Przegląd technologii J2EE

Connector architecture

Page 56: Przegląd technologii J2EE

Connector architecture•Podstawowym problemem przy tworzeniu aplikacji rozproszonych jest to, że zazwyczaj działają w heterogenicznym środowisku.

•Istnieje problem integracji aplikacji J2EE z istniejącymi systemami, nie przystosowanymi do specyfikacji J2EE.

•J2EE Connector Architecture - Architektura standardowego sposobu komunikacji z systemami EIS nie napisanymi w języku Java

EIS -Enterprise Information System, najczęściej systemy typu ERP (Enterprice Resource Planning) takie jak SAP R/3

•Komunikacja odbywa się wyłącznie poprzez adaptery zasobów (resource adapters).

•Jeden adapter umożliwia korzystanie z systemu EIS wielu różnym komponentom EJB.

•Architektura J2EECA definiuje standardowe API, które narzuca szkielet adaptera nie definiując jego metod - umożliwia tworzenie adapterów do wielu różnorodnych systemów.

Page 57: Przegląd technologii J2EE

Connector architecture

Serwery aplikacji i adaptery zasobów są oparte na technice Kontraktów.

Adapter realizuje 2 rodzaje kontraktów:

• Kontrakty aplikacji (Application Contract)– definiujące API, poprzez które komponenty takie jak EJB komunikują się z systemami EIS

• Kontrakty systemowe (System Contract) łączą adapter zasobów z usługami zarządzanymi przez serwer J2EE (pule połączeń, transakcje, zarządzanie bezpieczeństwem)

Page 58: Przegląd technologii J2EE

Podsumowanie

Page 59: Przegląd technologii J2EE

Serwer aplikacji Edycja Wersja Release EJBJ2EELicense

J2EECertif. Cena

Art Technology Group

Dynamo Application ServerBEA $495 (basic)

WebLogic $3,000(Premium)

$10,000 (Advantage)

$17,000 (Premium)

Workgroup 7.0 lut-03 2.0 Tak 1.3 $4,000

Server 8.1 Beta 8.1 lut-03 2.0 Tak Darmowa wersja próbna

Borland Appserver Edition 5.2 sty-03 2.0 Tak 1.3 $12,000 CPU

Enterprise Server Web Server 5.2 sty-03 Tak $399 Server

IBM Express 5.0 mar-01 1.1 Tak 1.2 $800 Server

Websphere Standard 5.0 sie-01 2.0 Tak 1.3  $12,000 CPU

Enterprise 5.0 mar-02 2.0 Tak 1.3  $35,000 CPU

IONA $1,495 Dev

Orbix ASP 6.0 $5,000 CPU

$5,000 Dev

$10,000 CPU

$10,000 Dev

$20,000 CPU

Macromedia

JRun Server

Full License v4 4.0 maj-02 2.0  Tak 1.3  $899 CPU

Novell Developer 4.0 wrz-02 2.0 Tak 1.3  $495 Dev

eXteNd Professional 4.0 wrz-02 2.0 Tak 1.3  $5,000 CPU

Enterprise 4.0 wrz-02 2.0 Tak 1.3  $10,000 CPU

Oracle Standard 9.02 mar-02 2.0 Tak 1.2 $10,000 CPU

9i AS Enterprise 9.02 mar-02 2.0 Tak 1.2 $20,000 CPU

Wireless 9.02 mar-02 2.0 Tak 1.2 $10,000 CPU

Personalization Option 9.02 mar-02 2.0 Tak 1.2 $10,000 CPU

Developer

Pre-Release

Persistence

Power Tier for J2EESAP AG

Web Application ServerSun Microsystems

Sun ONEStandard Edition 7.0 paź-02 2.0 Tak 1.3 $2000 CPU

Sybase

EAServer

Trifork Developer 3.2.0 lut-03 2.0 Tak 1.3 $399 Seat

Enterprise Application Server Web 3.2.0 lut-03 2.0 Tak 1.3 $999 CPU

Standard 3.2.0 lut-03 2.0 Tak 1.3 $1500 CPU

Pro 3.2.0 lut-03 2.0 Tak 1.3 $2500 CPU

Enterprise 3.2.0 lut-03 2.0 Tak 1.3 $15,000 CPU

6.0 sie-02 1.2 $15,000 CPU

Express 7.0 kwi-02 Tak

1.1 Tak

Tak

Server 7.0 kwi-02 2.0 Tak 1.3

2.0 Tak 1.3 J2EE Technology 6.0 gru-02

2.0 Tak 1.3Standard 6.0 gru-02

2.0 Tak 1.3 Enterprise 6.0 gru-02

Darmowy2.0  TakDeveloper License v4 4.0 maj-02

cze-02 2.0 Tak

1.3 

$25,000 CPU

1.3 TBA

7.0 sie-01 1.1 Tak 1.2

9.03

Na żądanie6.2 kwi-02 1.1  Tak 1.2 

paź-02 2.0 Tak 1.3 darmowe

Developer 4.12 wrz-02 2.0 Tak 1.3 Darmowy

Platform Edition 7.0

Tak 1.3 $2995 ServerSmall Bus. 4.12 wrz-02 2.0

Tak 1.3 $7500 CPUAdvanced 4.12 wrz-02 2.0

Tak 1.3 $20,000 CPUEnterprise 4.12 wrz-02 2.0

SE

RW

ER

Y A

PL

IKA

CJI Z

GO

DN

E Z

J2EE