Kuka? Java Platform, Enterprise Edition (Java EE) Yleiskatsaus Janne Kuha janne.kuha@descom.fi Descom Oy IBM Certified Enterprise Developer IBM Certified System Administrator Sisältö Mikä on Java EE / J2EE? Yleiskatsaus Java EE / Java EE alustaan Komponentit ja ajoympäristö Arkkitehtuuri Palvelut Tiedon integrointi Komponenttityypit Java Platform, Enterprise Edition (Java EE / J2EE) Rakentuu Java 2 Platform, Standard Edition (J2SE) määrittelyn päälle (ts. normaalin Javan päälle) Laajentaa Java-kieltä laajojen liiketoimintasovelluksien suuntaan Tarjoaa tuen useille liiketoimintasovelluksien tarvitsemille palveluille ja rakenteille. 1
Mistä Java EE koostuu? Java EE -sovellusten ajoympäristö Alusta, jonka avulla voi rakentaa liiketoimintasovelluksia Java-kielellä tiettyjen standardien mukaisesti. Koostuu useasta alistandardista, jotka määrittelevät miten sovelluspalvelimien ja sovelluksien palvelimen sisällä tulee toimia. Java EE on Sunin omistama, mutta avoin standardi. Alustan päälle rakennetut sovellukset koostuvat standardeista komponenteista Sama (standardien mukainen) liiketoimintasovellus voidaan ajaa eri palvelintoimittajien tuotteilla Esimerkkejä J2EE-sovelluspalvelimista IBM WebSphere BEA WebLogic Oracle Application Server JBoss (OS) Geronimo (OS) Mitä Java EE tarjoaa? Java EE hyödyt? Java EE tarjoaa komponenttipohjaisen lähtötavan sovelluksien suunnitteluun, kehittämiseen, koostamiseen ja ajoympäristöön viemiseen. Java EE-alusta tarjoaa mm. Hajautetun ja monitasoisen sovellusmallin Mahdollisuuden komponenttien uudelleenkäyttöön Yhtenäistetyn turvallisuusmallin Joustavan tapahtumanhallinnan 2
Java EE kehittämisen syyt 1/3 Kehittymisen syyt Internet-teknologioiden kehittyminen. pienten järjestelmäalustojen käytön yleistyminen, hajauttaminen (esim. CORBA). Oliopohjaisten ohjelmointikielien sekä Komponentti-teknologioiden kehittyminen. Java EE kehittämisen syyt 2/3 Java EE sovelluspalvelimet ovat kahden eri teknologian yhteenliittymiä Tapahtumamonitorit ja tapahtumankäsittely Hajautetut oliojärjestelmät ja hajautetut viestinvälitysjärjestelmät (ORB) Java EE perusosat Hajautetut oliot (tai komponentit) infrastruktuuri, sisältäen tapahtumanhallinnan Palvelimella ajettava sovelluskohtainen komponenttimalli Java EE kehittämisen syyt 3/3 Useiden CORBA-pohjaisten (tms.) hajautusjärjestelmien ongelmana, ettei sopimusta komponenttimallista, vaan jokaisella oma. Vastauksena tähän ongelmaan kehitettiin mm. Enterprise JavaBeans standardi Samoja sovelluksia voidaan käyttää eri valmistajien sovelluspalvelinten sisällä standardin komponenttimallin mukaisesti. Komponentit ja ajoympäristö 3
Java EE teknologiat Java EE komponentit Perusteknologiat Java EE 5 Web Services Technologies Component Model Technologies Management Technologies Other J2EE Technologies Java EE sovellus koostuu useista komponenteista, jotka keskustelevat keskenään yleensä jonkin liiketoimintaongelman ratkaisemiseksi. Kukin Java EE komponentti ajetaan sovelluspalvelimella tietyssä ajoympäristössä (säiliössä). Mikä tarkoitetaan säiliöillä? Säiliöiden toiminta Jokainen Java EE alustan mukaisesti rakennettu komponentti ajetaan hallinnoidussa ympäristössä säiliössä. Säiliö toimii komponenttien ajoympäristönä ja tarjoaa komponenteille niiden tarvitsemat palvelut. Esimerkiksi Enterprise Java Beans (EJB) komponenteille on oma säiliönsä, kuten on myös webbikomponenteille. Säiliö hallinnoin ympäristöä ja kommunikaatiota Kaikki komponentit ajetaan säiliön sisällä Komponentteihin pääsee käsiksi vain säiliön kautta. Säiliö hallinnoi myös komponenttien välistä kommunikaatiota 4
Java EE komponenttimalli Webbikomponentit Java Server Pages (JSP) Servlets Filters Listeners Custom Tags Liiketoimintakomponentit Stateless session beans Stateful session beans Message driven beans Entity beans Integrointi Resource adapters Arkkitehtuuri Arkkitehtuurin perustasot Asiakas-taso selain, thin client ja työpöytäsovellukset Esitys-taso web-komponentit Sovellusalalogiikka liiketoimintakomponentit Integraatio- tai tietotaso tietokantakomponentit, viestinvälitys ja legacy-integraatio Miksi enemmän kuin kaksi tasoa? 2-tasoarkkitehtuurissa (2-tier architecture) asiakkaat ovat suoraan yhteydessä tietovarastoon (esimerkiksi tietokantaan) Useita ongelmia mm. Liiketoiminta- ja esityslogiikka sekä tietomallit asiakassovelluksessa. Ohjelman toiminnallisuus on tiukkaan kytköksissä kaikilta osin Sovelluksen koodin uudelleenkäytöstä, päivittämisestä ja muutoksista tulee todella vaikeasti hallittavia. 5
n-tasoarkkitehtuuri n-tasoarkkitehtuuri esimerkki n-taso arkkitehtuurissa asiakkaat ovat yhteydessä sovelluspalvelimeen, joka hoitaa puolestaan yhteydet eri tietovarastoihin. Tällä saavutetaan mm. asiakasohjelmista saadaan kevyempiä (thin client) liiketoimintalogiikka ja tietomallit erotettu käyttöliittymästä parempi skaalatutuvuus (esimerkiksi tietokantayhteyksien poolaus) vikasietoisuus ja transaktioeheyden mahdollistaminen riippumatta asiakasohjelmasta Tuki useille eri tyyppisille asiakasratkaisuille (web, Java GUI, PDA) ASIAKAS PALVELIN FAT-client Java GUI Asiakasohjelma THIN-client Selain päätelaitteet Webkomponentit EJBkomponentit ASIAKASTASO WEB-TASO EJB-TASO TIETOKANTA- PALVELIMET JA LEGACY- JÄRJESTELMÄT Tietokanta Taustajärjestelmät EIS-TASO Java EE-alustan palvelut Palvelut Java EE-alusta tarjoaa monia eri palveluita liiketoimintasovelluksien rakentamiseen Palveluita ovat mm. Java Naming and Directory Interface (JNDI), Tapahtumahallinta (transaktiot), JDBC / J2C, Java Messaging Service (JMS), Turvallisuuskehys, jne. 6
Java EE-palvelut Teknologiat eri tasoilla Teknologia J2SE EJB Servlets JSP JDBC JNDI JMS JTA/JTS JavaMail JAF RMI/IIOP JAXP JAAS Kuvaus formerly known as JDK distributed processing servlets Java server pages access data base directory messages transactions API and services mail application framework remote method invocation XML parsing API authentication Connector connector framework lähde: WebSphere Competitive Technical Seminar Java EE vs..net lähde: Java EE Technology in Practice: Building Business Applications With the J2EE Platform JNDI Tapahtumanhallinta (transaction) JNDI on oliosäiliö, jonne voidaan tallettaa ja josta voidaan lukea olioita komponenttien toimesta. JNDI toimii siis sovelluksen laajuisena hakemistona, josta tarvittavia sovelluspalvelimen hallinnoima resursseja voidaan hakea. Java EE-alustassa on mukana deklaratiivinen tapahtumanhallinta. Yksinkertaisimmillaan kuvaustiedostoon merkitään kuhunkin komponenttiin liittyvät tapahtumamäärittelyt. Lisäksi ohjelmallisesti on mahdollista käsitellä tapahtumia ohjelmallisesti. 7
Tapahtumat J2EE-alustalla JDBC Tapahtumat voivat olla hajautettuina usean eri komponentin, palvelimen ja tietokannan välillä. Tapahtuman epäonnistuessa kussakin tapahtumaan kuuluvassa osasessa perutaan muutokset kyseiseen järjestelmään (jos mahdollista) Tapahtumaan liittyvän kontekstin ja kokonaisuuden pitää hallussa tapahtumahallitsija (transaction manager) Kullakin järjestelmään kuuluvalla osalla on oma resurssihallitsija. Tietokantayhteydet tietokantavalmistajasta riippumattomalla tavalla. Tietokantayhteydet hoidetaan yleensä hallinnoidusti sovelluspalvelimen läpi. Java Messaging Service (JMS) Viestinvälitystoiminnot sovelluksen osien ja eri sovellusten välillä. Tarjoaa yleisen rajapinnan, jota kunkin valmistajan JMS-tuotteet käyttävät. Java EE sisältää myös komponentteja, joita kutsutaan viestinvälityksen läpi (Message Driven Beans) Tiedon integrointi 8
Tiedon integrointi Tiedon integrointi Tiedon integrointi Java EE sovellukseen voidaan tehdä usealla eri teknologialla mm. Web services Messaging Resource Adapters Samoin usean tyyppisiä asiakkaita voidaan tukea mm. Selaimet B2B-asiakkaat Asiakasrajapinnat Komponenttityypit 9
Java EE komponentteja Enterprise JavaBeanit Java EE sovelluksessa on käytössä useita komponenttityyppejä Webbikomponentit (servletit, JSPt, jne.) Liiketoimintakomponentit (Enterprise Java Beanit) Resurssikomponentteja (Resurssiadapterit) Asiakas Entitybean Viestinvälitysasiakas View Sovelluspalvelin Message Driven Controller Sessionbean Entitybean Entitybean Model Tietokanta Enterprise JavaBeans -teknologia mahdollista hajautettujen palvelinkomponenttien rakentamisen. Nämä komponentit voivat toimia transaktioita tukevassa ympäristössä Komponenttiajattelu mahdollistaa (ainakin periaatteessa) kytköksien vähentämisen eri sovelluksen moduulien välillä, lähdekoodiin uudelleenkäytettävyyden parantamisen ja helpomman päivitettävyyden Enterprise JavaBeanit Servletit yleisesti EJB-komponentteja kolmea eri tyyppiä Session Beans (statefull / stateless) toimintaa ja liiketoimintaprosesseja mallintava Entity Beans (BMP / CMP) tietoa mallintava Message Driven Beans asynkronista toimintaa ja liiketoimintaprosesseja mallintava Servletit ovat palvelimella ajettavia ohjelmia, jotka mahdollistavat jonkin webbipalvelun toteuttamisen palvelimella. Servletit siis lisäävät palvelimen toimintaa jollakin tavalla. Yksinkertainen toiminto, jonka servletti voisi toteuttaa on esimerkiksi päivämäärän tulostaminen käyttäjän selaimelle. 10
Java Server Pages (JSP) Java EE alustan malli dynaamisten webbisivujen rakentamiseen. HTML-koodin sekaan määritellään tarvittavat paikat dynaamiselle tiedolle. Sivut voivat tarvittaessa sisältää myös esimerkiksi Java-koodia. Kysymyksiä? 11