przegląd technologii j2ee

59
Przegląd technologii J2EE Jakub Kostynowicz Kamil Rembalski

Upload: monifa

Post on 11-Jan-2016

47 views

Category:

Documents


0 download

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

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