Opinnäytetyö. Tampereen ammattikorkeakoulu Tietojenkäsittelyn koulutusohjelma Tahvo Repo
|
|
- Otto Manninen
- 8 vuotta sitten
- Katselukertoja:
Transkriptio
1 Tampereen ammattikorkeakoulu Tietojenkäsittelyn koulutusohjelma Tahvo Repo Opinnäytetyö Näkökulmia EJB-komponenttikerroksen päivitykseen Java EE sovelluksessa Työn ohjaaja Työn tilaaja Tampere 05/2009 Maritta Hoffren, FM Logia Software Oy, valvojana Merja Järvinen
2 Tampereen ammattikorkeakoulu Tietojenkäsittelyn koulutusohjelma Tekijä Tahvo Repo Työn nimi Näkökulmia EJB-komponenttikerroksen päivitykseen Java EE sovelluksessa Sivumäärä 40 Valmistumisaika Työn ohjaaja Maritta Hoffren Työn tilaaja Logia Software Oy TIIVISTELMÄ Tämän työn toimeksiantaja on työnantajani, pääosin Tampereella toimiva logistiikan IT-ratkaisuja tarjoava yritys, Logia Software Oy. Osallistun työtehtävissäni ParLet - sovelluksen jatkokehitykseen. ParLet on Itella Oyj:n tilaama kansainvälisen postiliikenteen rekisteröinti- ja seurantajärjestelmä. ParLetin liiketoimintakerros on toteutettu EJB 2.0 -tekniikalla, jota voidaan pitää ominaisuuksiltaan vanhentuneena. Tulevaisuudessa ParLetin suoritusympäristöön suoritetaan versionnostoja. Versionnostot tekevät mahdolliseksi siirtymisen uudempaan EJB 3.0 -versioon, joten toimeksiantaja näki siirtymään liittyvien tekijöiden kartoituksen tarpeelliseksi. Tavoitteenani oli kartoittaa mahdolliseen päivitysprosessiin liittyviä tekijöitä, tuottaa kuvaus työn luonteesta sekä esitellä käytettävissä olevia päivitysmalleja ja ongelman rajausmahdollisuuksia. Työn tarkoitus on antaa lukijalle kuva siitä, millainen päivitysprosessi olisi todellisuudessa. Tämän pohjalta toimeksiantaja osaisi määrittää tulevaisuuden toimenpiteitä entistä paremmin. Pyrin työssäni tarkastelemaan tekniikoita ParLetissa käytettyjen ratkaisujen kannalta. Lähdeaineistona käytin ParLetin osalta sovelluksen kehitysdokumentteja ja asiantuntijahaastatteluja. Java- ja EJB -tekniikoita käsittelevinä lähteinä käytin Sun Microsystemsin spesifikaatioita sekä aiheeseen liittyviä kirjoja ja verkkoartikkeleita. Lähdemateriaalin pohjalta laadin yhteenvedon käytettävissä olevista päivitysmahdollisuuksista hyvine ja huonoine puolineen. Lisäksi pystytin uutta tekniikkaa toteuttavan koeympäristön, johon toin komponentin olemassa olevasta ParLetin kehitysversiosta. Siirtyminen EJB 3.0 -tekniikkaan olisi työmäärältään suuri prosessi, ja päivitys voitaisiin suorittaa monin eri tavoin. Toivon tässä työssä esillenousseiden tekijöiden antavan toimeksiantajalle suuntaa ja arvokasta taustatietoa tulevaisuuden toimenpiteitä arvioidessa. Vaikka suurten sovellusten migraatiot ovat aina tapauskohtaisia, voidaan tämän työn tuloksia pitää suuntaa-antavina myös muiden EJB 2.x -pohjaisten sovellusten päivitystarvetta ja -strategiaa suunniteltaessa. Avainsanat ohjelmistoarkkitehtuurit, Java EE, EJB, migraatio
3 TAMK University of Applied Sciences Busines Information Systems Writer Tahvo Repo Thesis Viewpoints on the Migration of EJB Tier in Java EE Application Pages 40 Graduation date Thesis Supervisor Maritta Hoffren Co-operating Company Logia Software Inc. ABSTRACT This thesis was commissioned by my employer, Logia Software Inc., which is a Finnish software company specialising in logistic solutions. In my work, I participate in the development of application ParLet. It is an application for follow-up, registering and maintaining international mail flow, commissioned by Itella Corporation, Finland. The business logic layer of ParLet is based on EJB 2.0 technology, which may be considered slightly outdated in terms of technology. In the future, when the current technical environment will be facing version updates, it would possible to move onto the present version, EJB 3.0. This is why the employer saw it necessary to research the facts concerning the version migration. My goal was to map the factors of possible migration process, produce a description of the nature of the work and introduce some methods to handle the process. After digesting the information in this thesis, the reader should have a clear picture of the conventions of the process. This should help the employer in making any future decisions concerning this topic. I aimed to investigate EJB technologies in light of the solutions used in ParLet. I used ParLet development specifications as source material, and utilised the development team as consultants. Regarding Java and EJB technologies, I turned to Sun Microsystems specifications as well as tutorial books and network articles by experts of the field. From the base of the source materials and my own conclusions I established a round-up of the migration methods and provided them with benefits and downsides. In addition, I built an experimental environment utilising the new EJB version, provided with a component from the existing development version of ParLet. Migration to EJB 3.0 in ParLet would be a large-scale operation in the terms of workload, but there are plenty of methods to execute the work. I hope the results found from this thesis works will provide the employer with valuable information on the topic, and will be of help in making the future decisions. Although the migration of a largescale application is always more or less case-specific, the results of this thesis can be considered suggestive whenever defining the need and strategy for migration of EJB 2.x based applications. Keywords Software Architecture, Java EE, EJB, Migration
4 Tampereen Ammattikorkeakoulu Tietojenkäsittelyn koulutusohjelma Sisällysluettelo 1 Johdanto Kohdejärjestelmä Java EE ohjelmistokehitysalustana Java EE:n Tavoitteet Monikerrosarkkitehtuuri Ohjelmistokomponentit Sovelluspalvelimet Säiliöt Ohjelmointirajapinnat ParLetin sovellusarkkitehtuuri Enterprise JavaBeans Arkkitehtuuri EJB EJB 3.0 tekniikan uudistajana Java Persistence API Komponenttien muuttaminen EJB 2.x -versiosta EJB 3.0 -versioon EJB 2 ja EJB 3 samassa sovelluksessa EJB 2.0 version vaihto EJB 3.0 versioon ParLetissa Yleistä Mahdollisia migraatiotapoja Täysi muutos Priorisoitu migraatio Osittaiset migraatiot kerroksittain Jatkokehitys EJB 3.0 -versiolla ParLet koeympäristön toteuttaminen Koeympäristön vaatimusmäärittely Koeympäristön tekninen suunnittelu Koeympäristön toteutus Koeympäristön rakennusprosessin tulokset Yhteenveto ja Johtopäätökset Lähteet... 40
5 5 (40) 1 Johdanto Opinnäytetyöni toimeksiantaja on työnantajani, pääosin Tampereella toimiva logistiikan IT -ratkaisuihin erikoistunut yritys, Logia Software Oy. Vuonna 1975 toimintansa Tietonauha Oy -nimellä aloittanut yhtiö on nykyisin osa Itella-konsernia. Tällä hetkellä yritys työllistää noin 70 työntekijää. Osallistun työtehtävissäni ParLet -sovelluksen jatkokehitykseen. Kyseessä on Itella Oyj:n tilaama kansainvälisen postiliikenteen rekisteröinti- ja seurantajärjestelmä. Sovellus on toteutettu Java-ohjelmointikielellä, Java EE -määritystä noudattaen. ParLetin liiketoimintakerros noudattaa vuodelta 2001 peräisin olevaa EJB spesifikaatiota, jota voidaan pitää tekniikaltaan vanhentuneena. Uusin EJB -versio on vuonna 2006 ilmestynyt 3.0. ParLet joudutaan tulevaisuudessa, todennäköisesti vuoden 2009 loppuun mennessä, siirtämään uudelle sovelluspalvelimelle. Uusi sovelluspalvelin mahdollistaa uuden komponenttitekniikan käyttöönoton, minkä vuoksi uuteen tekniikkaan perehtyminen on ajankohtaista. EJB (Enterprise JavaBeans) on komponenttiarkkitehtuuri komponenttipohjaisten hajautettujen sovellusten kehittämiseen ja jakeluun. Spesifikaatiota tukevat sovellukset ovat skaalautuvia, tukevat transaktioita ja mahdollistavat usean yhtäaikaisen käyttäjän palvelun. Kun sovellus on kerran kirjoitettu, se voidaan sijoittaa mille tahansa EJB:tä tukevalle palvelinalustalle. (DeMichiel & Keith, 2001:25.) EJB 3.0 uudistaa tekniikkaa monin tavoin aiempiin verrattuna. Se yksinkertaistaa ohjelmointitapaa, tukee paremmin Java-pohjaisia standardeja sekä vähentää huomattavasti tarvittavan ohjelmakoodin määrää. Kuvio 1 esittää Depu Pandan suorittaman selvityksen tuloksia koodin määrän vähenemisestä.
6 6 (40) Kuvio 1: Koodin ja deskriptorien määrän väheneminen versiomigraation tuloksena. (Panda, Losing weight is easier than you think) Tämän mittakaavan muutos koodimäärän vähenemisessä parantaisi sovelluksen suorituskykyä ja helpottaisi ohjelmakoodin ylläpitoa huomattavasti. Tutkin opinnäytetyönäni, mitä tekijöitä EJB 3.0 -tekniikkaan siirtymiseen ParLetissa liittyy. ParLetin kehitysryhmällä ei ollut työtä aloitettaessa omakohtaista kokemusta EJB 3.0 -tekniikasta. Tarkoituksena oli kartoittaa mahdolliseen päivitysprosessiin liittyviä tekijöitä, tuottaa ohjeistusta komponenttien muokkaamiseen sekä esitellä käytettävissä olevia päivitysmalleja ja ongelman rajausmahdollisuuksia. Työn tarkoitus on antaa lukijalle kuva siitä, millainen päivitysprosessi olisi käytännössä. Tämän pohjalta toimeksiantaja osaisi määrittää tulevaisuuden toimenpiteitä entistä paremmin. Työ aloitettiin tutustumalla tausta-aineistoon. Taustatietoa tarvittiin EJB -kerroksen päivityksestä yleisellä tasolla sekä ParLet-sovelluksen teknisistä ratkaisuperiaatteista. EJB -päivitystä koskevaa olemassaolevaa tietoa haettiin alan kirjallisuudesta. ParLetin toiminnan osalta työssä tarvittava informaatio pyrittiin kartoittamaan asiantuntijoita haastattelemalla, sovelluksen teknistä dokumentaatiota tulkitsemalla ja lähdekooditiedostoja tutkimalla. Olemassa olevaa teoriaa uuteen versioon siirtymisessä käytettävistä menetelmistä pyrittiin tarkastelemaan ParLetiin soveltuvien teorioiden osalta. ParLetin liittyvää aineistoa hankittiin sovelluksen kehitysdokumenttien ja asiantuntijahaastattelujen avulla. Java- ja EJB -tekniikoita käsittelevinä lähteinä käytettiin Sun Microsystemsin spesifikaatioita sekä aiheeseen littyviä kirjoja ja verkkoartikkeleita.
7 7 (40) Tutkittuani ParLetin liiketoimintakerroksen tilaa tein yhteenvedon käytettävissä olevista päivitysmenetelmistä. Listasin mahdolliset menetelmät ja arvioin niiden hyviä ja huonoja puolia. Koska EJB 3.0:n syntaksi poikkeaa huomattavasti vanhempien versioiden syntaksista, pystytin uutta versiota käyttävän koeympäristön, johon toin komponentin olemassa olevasta ParLetin kehitysversiosta. Päivitin tämän komponentin uutta tekniikkaa hyödyntävään muotoon, jotta kehittäjäryhmä saisi käytännön esimerkin uuteen tekniikkaan siirtymisestä. Tämän raportin luvut 2 4 esittelevät kohdesovelluksen toimintaa, arkkitehtuuria ja teknistä alustaa. Luvussa 5 tarkastellaan EJB-tekniikan periaatteita ja siirtymistä 2.0- versiosta 3.0-versioon. Luku 6 esittelee suorittamieni selvitysten kulkua ja tuloksia. Vaikka suurten sovellusten liiketoimintakerrosten päivitykset ovat aina tapauskohtaisia, voidaan tämän tutkimuksen tuloksia pitää suuntaa-antavina myös muiden EJB 2.x - pohjaisten sovellusten päivitystarvetta ja -strategiaa suunnitellessa. Tutkittavat päivitysmenetelmät sekä EJB 3.0 -version uudet ominaisuudet todennäköisesti kiinnostavat useita vanhempia versioita käyttäviä tahoja. Vaikka EJB:n päivitystyöstä on jo kirjoitettu aiempaa teoriaa, auttaa tämän työn puitteissa esiteltävä yksittäinen esimerkkitapaus hahmottamaan erityisesti suurten sovellusten päivittämisessä kohdattavia ongelmia.
8 8 (40) 2 Kohdejärjestelmä ParLet on Itella Oyj:n tilaama kansainvälisen postiliikenteen rekisteröinti- ja seurantajärjestelmä. Sovelluksella hoidetaan kaikki ulkomaan postiliikenteen käsittelyyn liittyvät toiminnot. Sitä käytetään muun muassa maahan saapuvien ja maasta lähtevien lähetysten kirjaamiseen, kuljetusreittien suunnitteluun sekä laskutuksessa käytettävien raporttien tulostamiseen. Toiminnallisuus jakautuu lähtevän, saapuvan ja kauttakulkevan postin käsittelyyn sekä ulkomaan postia koskevaan sanomaliikenteeseen. (Haastattelu, ) Postin käytäntöjen mukaan erikseen määritellyt postilähetykset (paketit, kirjatut kirjeet, vakuutettu posti ja postiennakkolähetykset) kirjataan järjestelmään. Itella Oyj:n liiketoiminnan kannalta ParLet on kriittinen sovellus, sillä ilman toimivaa käsittelyjärjestelmää ulkomaille lähtevä ja kotimaahan saapuva posti eivät etene. Postinkäsittelykeskuksiin saapuu päivässä tuhansia kirjeitä, noin 1500 pakettia sekä lähetyserää. (Logia Software Oy, 2004) Järjestelmä on käytössä 24 tuntia vuorokaudessa 365 päivänä vuodessa. Sovelluksen käyttäjiä on 113, joista yhtäaikaisia käyttäjiä ajankohdasta riippuen ParLetilla on useita eri käyttäjäryhmiä: peruskäyttäjä, ylläpitäjä, pääkäyttäjä, suunnittelija ja tilastointitoimintoja hyödyntävä STAT-käyttäjä. Jokaisella käyttäjällä on pääsy vain omalle käyttäjäryhmälleen sallittuihin toimintoihin. Suurin käyttäryhmä ovat peruskäyttäjät, joita on kolmessa eri lajittelukeskuksessa yhteensä 70. Heidän tehtävänään on esimerkiksi kirjata saapuvat ja lähtevät lähetykset sovelluksen käyttöliittymän avulla tietokantaan. (Logia Software Oy, 2004) Tiedon säilytys tapahtuu kahdessa eri tietosäiliössä: aktiivi- ja historiatietokannassa. Aktiivikannassa tietoa säilytetään kolmen kuukauden ajan ja historiakannassa 18 kuukautta. Nyrkkisääntönä voidaan pitää, että tietoja ylläpitävät toiminnot suoritetaan vain aktiivikantaan. Historiakannan pääasiallinen tarkoitus on toimia vain luettavana tietovarastona. Kumpaakin tietokantaa kohti suoritettavia toimintoja varten on oma erillinen käyttöliittymänsä.
9 9 (40) 3 Java EE ohjelmistokehitysalustana ParLetin kaltaisten yritystason ohjelmistojen kehittäminen olisi työlästä ilman asianmukaisia menetelmiä. Java Platform, Enterprise Edition määrittelee standardin, jota noudattamalla järeiden yritystason sovellusten toteuttamisessa päästään mitä todennäköisimmin haluttuun lopputulokseen. Tämän luvun tavoitteena on perehtyä käsitteisiin, jotka lukijan tulisi hahmottaa Java EE -spesifikaation osalta opinnäytetyöni tuloksia tulkitakseen. Kokonaisuudessaan spesifikaatio on hyvin laaja, joten keskityn kuvaamaan tekniikkaa etupäässä ParLetin näkökulmasta. 3.1 Java EE:n Tavoitteet Shannon (2006) erittelee yritystason sähköisille palveluille kolme päävaatimusta: palvelun tulee olla laajalti saavutettavissa, turvallinen ja luotettava sekä skaalautuva. Java EE pyrkii toteuttamaan nämä vaatimukset monitasoisten ohjelmistoarkkitehtuurien avulla. Useiden tasojen ansiosta sovellusten luominen, ylläpitäminen ja uutta käyttötarkoitusta varten laajentaminen pystytään toteuttamaan kohdistetusti ja edullisesti. Ominaisuudet, jotka tekevät yritystason sovelluksista tehokkaita, tekevät sovelluksista usein myös monimutkaisia. Esimerkiksi sovelluksen tietoturvan ja vakauden varmistaminen vaatii paljon infrastruktuurista ohjelmakoodia. Java EE - ohjelmistokehitysalusta on suunniteltu vähentämään kehitystyön monimutkaisuutta tarjoamalla standardin ohjelmointimallin sekä ajonaikaisen ympäristön, joten ohjelmoijat voivat keskittyä sovelluksen varsinaisen toiminnallisuuden kehittämiseen. (Sun Microsystems, 2006b: 12) 3.2 Monikerrosarkkitehtuuri ParLet noudattaa tyypillisen Java EE -sovelluksen tavoin monikerrosarkkitehtuuria (multi-tier architecture). Sovelluksen toiminnallisuus on jaettu eristettyihin toiminnallisiin osiin, kerroksiin. Usein monikerroksiset sovellukset sisältävät asiakas-, väli- ja datakerroksen. Asiakaskerros koostuu asiakasohjelmasta, joka muodostaa kutsuja välikerrokseen. Välikerroksen liiketoimintafunktiot käsittelevät käyttäjien kutsuja ja prosessoivat sovellusdataa, tallettaen sen lopulta datakerrokseen pysyvää säilytystä varten. (Sun Microsystems, 2006b: 12).
10 10 (40) Kuvio 2 esittelee tyypillistä monikerrosarkkitehtuuria, jossa sovellus on hajautettu fyysisesti kolmelle eri laitteelle. Kuvatussa esimerkkitapauksessa presentaatiokerros huolehtii käyttöliittymäkoodin tuottamisesta, liiketoimintakerros suorittaa varsinaiset liiketoimintaoperaatiot ja datakerros toimii pysyvänä tietovarastona. Käyttöliittymäsovellus Käyttöliittymäkerros Käyttäjän työasema Java Java Java Presentaatiokerros Java EE -sovelluspalvelin EJB EJB EJB Liiketoimintakerros Tietokanta Datakerros Tietokantapalvelin Kuvio 2: Tyypillinen monikerrosarkkitehtuuri havainnollistettuna 3.3 Ohjelmistokomponentit Ohjelmistokomponentti (application component) -nimitystä käytetään ohjelmistokehityksessä ilmaisemaan sovelluksen itsenäistä osaa, joka suorittaa jonkin yksittäisen toiminnon ja kommunikoi toisten komponenttien kanssa. Java EE - spesifikaatio määrittelee joukon erilaisia ohjelmistokomponentteja, joiden määrityksiä Java EE -sovelluksen tulee noudattaa. ParLet käyttää näistä useita eri komponenttityyppejä, kuten jo mainittuja Enterprise JavaBeans (EJB) -komponentteja. Tyypillisesti EJB-komponentit sisältävät Java EE -sovelluksen varsinaisen liiketoimintalogiikan. (Bill Shannon, 2006: 7).
11 11 (40) 3.4 Sovelluspalvelimet Java EE -sovellus tarvitsee toimiakseen ajonaikaisen ympäristön. Siinä missä webpalvelin tarjoaa käyttäjilleen web-sivuja, sovelluspalvelimen voidaan katsoa tarjoavan sovelluksia. Java EE -sovelluspalvelin on palvelinsovellus, joka tarjoaa asiakasohjelmalle Java EE - alustan ohjelmointirajapinnat ja palvelut. Sovelluspalvelin toimii ajoympäristönä eri ohjelmistokomponenttityypeille, jotka vastaavat aina tiettyä kerrosta monikerrosarkkitehtuurin mukaisessa sovelluksessa. Palvelin tarjoaa komponenteille suunnatut palvelut säiliöiden kautta. (Sun Microsystems, 2006b: 15) 3.5 Säiliöt Java EE -sovelluskehitysalusta tukee monikerroksista arkkitehtuuria säiliöiden (container) avulla. Nämä huolehtivat vaadittujen palvelujen tarjoamisesta ohjelmistokomponenteille (Shannon 2006: 5). Säiliö toimii rajapintana komponentin ja Java EE -alustan tarjoaman alemman tason toiminnallisuuden kanssa (Sun Microsystems, 2006b: 15). Komponentit eivät koskaan ole yhteydessä suoraan toisiinsa, vaan käyttävät säiliön tarjoamia protokollia ja metodeja kommunikoidessaan muiden komponenttien tai Java EE -alustan tarjoamien palveluiden kanssa. Kaikille komponenttityypeille on olemassa oma säiliönsä. (Shannon 2006: 8) Esimerkiksi EJB-säiliö toimii rajapintana EJB komponenttien ja Java EE -sovelluspalvelimen välillä. Se sijaitsee fyysisesti sovelluspalvelimella, ja huolehtii sovelluksen EJB-komponenttien suorituksesta.
12 12 (40) Kuvio 3 sittelee säiliön rakennetta yleisellä tasolla. Asiakas kutsuu komponenttia säiliön kautta. Säiliö huolehtii tarvittavien palvelujen suorittamisesta ja komponentin mahdollisesti muihin kerroksiin suorittamien kutsujen edelleen ohjaamisesta. Kutsu Säiliö Asiakas Palvelu 1 Palvelu 2 Palvelu 3 Komponentti Yhteydet muihin kerroksiin Kuvio 3: Säiliön rakenne 3.6 Ohjelmointirajapinnat Java EE tarjoaa sovelluskehittäjän käyttöön useita ohjelmointirajapintoja (Application Programming Interface / API). Näiden rajapintojen tarjoamat palvelut kattavat kaikki yleisimmät yritystason sovelluksissa käytettävät ominaisuudet. Kuvio 4 esittelee Java EE:n ohjelmointirajapinnat säiliöittäin jaoteltuina. Kuvio 4: Java EE:n tarjoamat ohjelmointirajapinnat säiliöittäin (Sun Microsystems, 2007)
13 13 (40) Suurin osa rajapinnoista sijoittuu EJB- ja Web-säiliöihin. Luonteeltaan näiden rajapintojen tarjoamat palvelukokonaisuudet ovat tyypillisesti tiedon siirtoon ja hallinnointiin liittyviä. ParLet käyttää hyväkseen pääasiassa EJB-säiliötä. Muita sovelluksessa hyödynnettäviä rajapintoja ovat Java Message Service (JMS), Java Naming and Directory Interface (JNDI) ja Java Persistence Api (JPA). Näistä viimeksi mainittuun syvennytään tarkemmin EJB:n yhteydessä.
14 14 (40) 4 ParLetin sovellusarkkitehtuuri ParLet on toteutettu Java EE -spesifikaation mukaisen sovellusalustan päälle. Noin 1900 Java-luokkaa käsittävä liiketoimintakerros sijaitsee erillisellä sovelluspalvelimella. Tämä kerros on yhteydessä omilla palvelimillaan toimiviin tietokantoihin. Käyttäjä lataa työasemalleen internetin välityksellä Java Swing -pohjaisen käyttöliittymäsovelluksen. Käyttäjän kutsut ohjautuvat käyttöliittymäkerroksesta verkon yli liiketoimintakerroksen EJB -säiliölle, joka asianmukaiset toimenpiteet suoritettuaan huolehtii mahdollisesti edelleen tietokantapalvelimelle suoritettavista kutsuista. Kuvio 5 esittelee sovelluksen fyysistä sijoittelua verkkoympäristöön. Client node JAAS LoginContextauthentication with JCE password encryption Environment 1: Applcation server Client PC Firewall RMI-over-IIOP (HTTP) Environment 2: Database server JAAS Username- Password- LoginModul e WLS 8.1 WLS 8.1 JDBC 2.0-interface EJB 2.0 CMP entity beans << 100-T Ethernet >> Oracle 9 Server 1 Server 2 Oracle 9 Environment 3: printing server Adobe Output Server Kuvio 5: ParLetin sijoittelukaavio (Logia Software, 2006) Sovelluspalvelimena toimii BEA WebLogic Application Server 8.1. Sekä aktiivi- että historiatietokannat ovat Oraclen tietokantoja.
15 15 (40) ParLetin moduulit ParLetin ohjelmakoodi jakautuu useisiin moduuleihin, joista osa sijoittuu käyttöliittymäkerrokseen ja osa liiketoimintakerrokseen. Kullakin moduulilla on itsenäinen tehtävä sovelluskokonaisuudessa. Kuvio 6 esittelee eri moduulien loogista sijoittumista. Kuvio 6: ParLetin moduulit komponenttikaaviona. Käyttöliittymämoduulit suorittavat käyttäjän interaktioihin liittyviä toimintoja, sovelluspalvelimella sijaitsevien moduulien huolehtiessa sovelluksen liiketoimintaoperaatioista. ParLet.UI -pakkaus sisältää kaikki käyttöliittymään liittyvät toiminnot, kuten esimerkiksi grafiikkakomponenttien piirtämisen ja käyttäjän käskyjen poimimisen. Käyttöliittymässä käytetään XML GUI -nimistä avoimen lähdekoodin kirjastoa. Käyttöliittymäkomponentit ja niiden graafinen sijoittelu kuvataan XML -merkinnöillä, mikä helpottaa koodin ylläpidettävyyttä.
16 16 (40) ParLetissa käytettyjä suunnittelu- ja arkkitehtuurimalleja Suunnittelumalli (design pattern) tarkoittaa ohjelmistokehityksessä suunnitteluvaiheessa usein esiintyvän ongelman ratkaisuun kehitettyä uudellenkäytettävää mallia. Se ei tarjoa valmista ohjelmakoodia eikä pureudu algoritmitasolle, vaan toimii pikemminkin kuvauksena tai suuntaviivana rakenteelle, jota sovelluksen suunnitteluvaiheessa noudattamalla päästään haluttuun lopputulokseen. Arkkitehtuurimallit (architectural patterns) keskittyvät laajemman mittakaavan tekijöihin. Niitä voidaan pitää eräänlaisina kokonaisuutta palvelevina arkkitehtuurin palasina. Kuvio 7 esittää ParLetissa käytettyjä suunnittelu- ja arkkitehtuurimalleja. Sen avulla voidaan hahmottaa sovelluksen teknisiä ratkaisuja. Java Swing / XML GUI (MVC) Front Controller Delegate GUIComponent Service Locator Locator-luokka Value Objects/ Data Transfer Object (serializable) ValueObject-luokka Session Facade Façade-luokka EJBSessionBean Value List Handler Data entity Read-Write entity EJBEntityBean Fast Lane Reader Value object-lista Java beans MDB Facade Façade-luokka Timer Facade MessageDrivenBean (sanomien sisäänluku) Façade-luokka TimedObject (sanomien muodostus ja siivousajot) ParLet.. Kuvio 7: ParLetissa käytettäviä suunnittelumalleja (Logia Software, 2006) Käyttöliittymän rakenne noudattaa MVC (Model-View-Controller) -arkkitehtuurimallia, joka mahdollistaa käyttöliittymäkoodin, liiketoimintalogiikan ja datan käsittelylogiikan erottamisen toisistaan. Service Locator -suunnittelumallin avulla toteutetaan EJB-liiketoimintakomponenttien haut sekä parannetaan suorituskykyä tarvittavilla välimuistiratkaisuilla. Tiedonsiirtoolioita (Data Transfer Object) hyödynnetään tiedon siirrossa Java-client-kerroksen sekä
17 17 (40) EJB-komponenttien välillä. Luokat edustavat ParLet-järjestelmän liiketoimintakäsitteitä ja niiden välisiä suhteita. Istuntofasadi (Session Facade) -mallin avulla toteutetaan kaikki tiedon käsittelyrutiinit (tallennus, ylläpito, tiedustelut). Istuntokomponentit kontrolloivat järjestelmän liiketoimintatransaktioita. Ajastinfasadi (Timer Facade) huolehtii ajastettujen toimintojen suorittamisesta sanomien avulla.
18 18 (40) 5 Enterprise JavaBeans Java EE -sovellusten kehittäjät törmäävät työssään monesti tiettyihin monimutkaisia tietorakenteita edellyttäviin infrastruktuurisiin ongelmiin. EJB on komponenttiarkkitehtuuri, jonka perimmäinen tarkoitus on tarjota sovelluskehitystä helpottava standardi palvelinpuolen komponenttimalli hajautetuille sovelluksille. Samalla se tarjoaa valmiit toteutukset joidenkin monimutkaisten matalan tason toiminnallisuuksien - esimerkiksi transaktioiden ja tietoturvan - toteuttamiseen, jolloin kehittäjä voi keskittyä suuremmissa määrin varsinaisen liiketoimintalogiikan toteuttamiseen. EJB-spesifikaatio kehitettiin IBM:llä vuonna Sun Microsystems adoptoi EJB 1.0- ja 1.1 -versiot itselleen ja kehitti edelleen 2.0 (JSR 19) ja 2.1 (JSR 153) -versiot vuosina 2001 ja Uusin 3.0-versio (JSR 220) on julkaistu vuonna (The Java Community Process (SM) Program, 2008.) Aiempien versioiden keskinäisiä muutoksia voidaan pitää pienehköinä, mutta 3.0-versio tuo tekniikkaan runsaasti uudistuksia. Tämän luvun tavoitteena on esitellä EJB pähkinänkuoressa sekä erityisesti paneutua uusimman 3.0 -version tuomiin muutoksiin ParLetissa käytettävään 2.0 -versioon nähden. 5.1 Arkkitehtuuri EJB-komponentti (engl. enterprise bean) on sovelluspalvelimella omassa säiliössään toimiva komponentti, joka kätkee sisälleen palasen sovelluksen liiketoimintalogiikkaa. Liiketoimintalogiikka muodostuu ohjelmakoodista, joka suorittaa ohjelman varsinaisen toiminnallisuuden. (Sun Microsystems, 2006a) Esimerkiksi verkkokauppasovelluksen EJB -komponentit voisivat sisältää liiketoimintafunktioita kuten haetuotteet(), muodostatilaus() sekä tarkistatuotteensaatavuus(). EJB-arkkitehtuurissa liiketoimintafunktioiden rungot sijaitsevat bean-luokassa, mutta niitä käyttävä asiakas kutsuu niitä komponenttirajapintojen kautta. Kuvio 8 havainnollistaa EJB:n arkkitehtuuria. Varsinainen EJB-komponentti muodostuu tässä tapauksessa local- ja remote-rajapinnoista sekä bean-luokasta. Verkkokaupan tapauksessa asiakas-luokka voisi olla esimerkiksi web-palvelimella sijaitseva java-luokka, joka huolehtii HTML-komponenttien muodostamisesta ja
19 19 (40) käyttäjän käskyjen välittämisestä. Kun käyttäjä pyytää käyttöliittymän välityksellä nähdäkseen tuotelistan, asiakasluokka suorittaa haetuotteet() -funktion kutsun sovelluspalvelimelle. Jos asiakasluokka ja EJB-säiliö sijaitsevat fyysisesti samassa virtuaalisessa Java-ympäristössä, metodia kutsutaan local -rajapinnan kautta. Näin ollen samassa säiliössä pyörivät muut EJB-komponentit voivat kutsua funktiota localrajapinnan kautta. Jos taas kutsu suoritetaan esimerkiksi verkon yli palvelimelta toiselle, joudutaan käyttämään remote-rajapintaa. Kuvion 8 osoittamassa esimerkkitapauksessa Bean-luokan haetuotteet() -metodi suorittaisi tuotehaun tietokantaan. Komponentti voisi tehdä tämän hyödyntäen EJBsäiliön tarjoamia palveluja, kuten esimerkiksi Java Transaction API:a tai Java Persistence API:a. Asiakas Palvelin X (esim. Web-palvelin) Class X {... Asiakas VerkkokauppaRemote.haeTuotteet(); -luokka... } Kutsu Kutsu Home -rajapinta EJB Säiliö Interface VerkkoKauppaLocal { Collection haetuotteet(); } Remote -rajapinta Interface VerkkoKauppaRemote { Collection haetuotteet(); } EJB Sovelluspalvelin Bean -luokka Public Class VerkkoKauppa { Collection haetuotteet() { //Haetaan tuotelista //tietokannasta... } } Kuvio 8: EJB:n arkkitehtuuri yleisellä tasolla. EJB:n komponenttimalli sisältää useita eri tavoin toimivia oliokategorioita, jotka poikkeavat toisistaan erityisesti kutsuntatavan ja tilallisuuden osalta. Sun Microsystems jakaa EJB 2.0 -spesifikaatiossaan (2001:43) oliotyypit seuraavasti: Tilattomia palveluja tarjoava olio Asynkronisesti JMS-sanomien avulla suoritettava, tilattomia palveluja tarjoava olio Keskustelun mahdollistavaa istuntodataa tallettava olio, joka säilyttää tilansa asiakkaan kutsujen ajan Liiketoimintaoliota edustava entiteettiolio, joka on yhteinen kaikille asiakkaille
20 20 (40) Näiden oliokategorioiden toteuttamista varten EJB tarjoaa erilaisia komponenttityyppejä: sessiokomponentti, entiteettikomponentti ja sanomaohjattu komponentti. Näiden komponenttien toteutustavoissa esiintyy kuitenkin joitain olennaisia versiokohtaisia eroja EJB 2.0- ja 3.0 -versioiden välillä, joten seuraavaksi on aiheellista tarkastella näitä omina kokonaisuuksinaan. 5.2 EJB 2.0 ParLetissa käytettävä EJB 2.0 arkkitehtuuri sisältää kolme eri komponenttityyppiä: sessiokomponentti, entiteettikomponentti ja sanomaohjattu komponentti. Sessiokomponentteja on kahdenlaisia: tilallisia (Stateful bean) ja tilattomia (Stateless bean). Sanomien avulla toimivaa komponenttityyppiä edustaa sanomaohjattu komponentti (Message-driven bean). Liiketoimintamallia edustava entiteettikerros toteutetaan entiteettikomponenteilla (Entity beans). Sessiokomponentteja käytetään suorittamaan jokin yksittäinen liiketoimintaoperaatio, esimerkiksi tuotteen haku tietokannasta. Tilaton komponentti ei nimensä mukaisesti säilytä tilaansa asiakasluokan kutsujen välillä, joten se sopii hyvin yksittäisiin hakuihin. Jos komponentin tulee säilyttää itseensä dataa, kuten esimerkiksi ostoskorikomponentin tapauksessa, tulee käyttää tilallista sessiokomponenttia. Sessiokomponentteja voidaan myös käyttää istuntofasadina. Sanomaohjattuja komponentteja voidaan kutsua sessiokomponenteista poiketen asynkronisesti eli ei-reaaliaikaisesti. Ne käyttävät Java Messaging Service (JMS) ohjelmointirajapintaa sanomaliikenteen välitykseen. Komponentit toimivat yksinkertaisina tapahtumankäsittelijöinä, jotka kuuntelevat sanomajonoja. EJB-säiliö tarkkailee JMS-jonojen tilaa ja huolehtii sanomaohjattujen komponenttien suorittamisesta. Tätä tekniikkaa käytetään esimerkiksi sähköpostipalvelimissa. EJB 2.0 toteuttaa entiteettikerroksen entiteettikomponenteilla. Entiteettikomponentti edustaa yksittäistä liiketoimintamallin osaa, esimerkiksi yksittäistä tietokantataulua. Komponentti pitää sisällään tietojäsentasolla tietokantaan kohdistuvat toiminnot, kuten datan päivityksen ja tallennuksen. Entiteettikomponenteilla voidaan siis toteuttaa sovelluksen koko tietomalli Java-koodin avulla, jolloin tietokannan data on helposti kartoitettavissa ohjelmakoodiin. Tietokantaan kohdistuvat operaatiot toteutetaan EJB Query Language (EJB QL) -kielellä, joka muistuttaa syntaksiltaan monille tuttua SQL -kieltä, mutta on tietokanta-alustariipumaton.
21 21 (40) EJB 2.0 -versiossa komponenttien tulee periytyä komponenttityyppiä vastaavasta yläluokasta. Näin ollen niiden tulee myös toteuttaa tiettyjä olion elinkaareen liittyviä toimintoja. Kuvio 9 esittää yksinkertaista sessiokomponenttia. Komponentilla on EJBHome-luokasta periytyvä kotirajapinta (Interface VerkkokauppaHome), jossa luodaan viittaus komponenttiin. Varsinainen liiketoimintarajapinta (Interface Verkkokauppa) periytyy EJBObject-luokasta. Liiketoimintarajapinnan esittämän metodin toteutus löytyy komponenttiluokasta (VerkkokauppaBean). Tämä luokka periytyy SessionBean-luokasta, joten sen tulee toteuttaa useita yläluokassa määriteltyjä metodeja kuten ejbcreate(), ejbactivate(), ejbpassivate() ja ejbremove(). Näitä metodeja tarvitaan komponentin elinkaaren hallinnointiin. Public Interface VerkkokauppaHome extends EJBHome { public Verkkokauppa create() throws CreateException, RemoteException; } Public Interface Verkkokauppa extends EJBObject { Collection haetuotteet() throws RemoteException; } Public Class VerkkokauppaBean extends SessionBean { Collection haetuotteet() throws RemoteException {... } public void ejbcreate(){} public void ejbactivate(){} public void ejbpassivate(){} public void ejbremove(){} } public void setsessioncontext(sessioncontext context){} Kuvio 9: EJB 2.0 -komponentin koodilistaus. Käytönkuvaimet EJB 2.0 -versiossa ei voida pelkän Java-koodin avulla määritellä kaikkia komponentin ominaisuuksia. Komponentin toteuttajan tulee luoda erillisiä käytönkuvaimia (deployment descriptor) määrittääkseen komponentille kaiken EJB-säiliön tarvitseman informaation. Käytönkuvaimet ovat XML-tiedostoja, joiden syntaksi noudattaa EJBspesifikaation määrittelemiä sääntöjä. EJB 2.0 pohjautuu vahvasti XML-pohjaisten kuvaimien käyttöön, joten XML-tiedostojen määrä voi pienessäkin sovelluksessa kasvaa suureksi.
22 22 (40) Käytönkuvaimilla määritetään kahdenlaista informaatiota: komponenttien rakenteeseen sekä sovelluksen koostamiseen liittyvää tietoa. Rakenteellinen tieto käsittää komponentin nimen, Java-luokan, koti- ja etärajapinnat, komponentin tyypin, ympäristömuuttujat, viittaukset muihin komponentteihin sekä tietoturvarooliviittaukset. Rakenteellinen informaatio on pakollista komponentin toiminnan kannalta. Sovelluksen koostamiseen liittyvää tietoa ovat esimerkiksi sovellukseen kuuluvien komponenttien määrittäminen, tietoturvaroolien esittely sekä säiliön transaktio-asetukset. Toisin kuin rakenteellista tietoa sisältävät kuvaimet, koostamiseen liittyvät kuvaimet eivät ole pakollisia. EJBGen työmäärän vähentäjänä EJBGen on Cedric Ceustin BEA WebLogic -sovelluspalvelimille kehittämä koodigeneraattori EJB 2.0 -spesifikaatiota noudattavaa ohjelmakoodia varten. Sen sijaan että sovelluskehittäjä joutuisi muokkaamaan useaa tiedostoa (komponenttiluokka, etä-, lähi- ja kotirajapinnat, käytönkuvain) samanaikaisesti, EJBGenin avulla ohjelmakoodin muokkaus voidaan keskittää pelkästään komponenttiluokkaan. Luokka, muuttujat ja metodit annotoidaan JavaDoc -tageilla, joiden perusteella EJBGen parseroi koodin ja tuottaa tarvittavat tiedostot (EJBGen, 2004). ParLetin kehitystyössä hyödynnetään kyseistä työkalua lähes jokaisessa komponentissa. EJBGen helpottaa huomattavasti EJB 2.0 -komponenttien kehitystyötä, sillä se vapauttaa ohjelmoijan täysin käytönkuvaimien ja komponenttirajapintojen käsittelystä. EJB 3.0 -spesifikaatiossa työkalua ei kuitenkaan enää ohjelmointimallin yksinkertaistumisen vuoksi tueta. (Programming WebLogic Enterprise JavaBeans: Version 3.0: ). 5.3 EJB 3.0 tekniikan uudistajana Vaikka EJB oli tehokas ja käytännöllinen tekniikka jo ennen 3.0 -versiota, ohjelmointitapa vanhemmissa versioissa on monimutkainen ja hämmentävä, sillä yksinkertaisimmankin EJB-komponentin luominen edellyttää useiden Java-luokkien ja käytönkuvaimien luomista. Tämä haittasi EJB -tekniikan laajempaa omaksumista kehittäjäpiireissä. (Programming WebLogic Enterprise JavaBeans, 2007: 2-1.) EJB 3.0 -spesifikaation päätavoite on helpottaa ohjelmointia, tehdä tekniikasta vähemmän alustariippuva, korvata ulkopuoliset käytönkuvaimet ohjelmakoodiin
23 23 (40) upotettavilla metatieto-annotaatioilla ja vähentää komponenttirajapintojen määrää. Täten sovelluskehittäjien työ nopeutuisi sovelluksen samalla keventyessä fyysisesti. Yksi EJB 3.0 -version päätavoitteista on Persistence API-sovelluskehyksen standardointi sekä entiteettikomponentin ohjelmointitavan ja olio-relaatio (O/R) - kartoitusmallin yksinkertaistaminen (Programming WebLogic Enterprise JavaBeans, 2007: 2-1). Persistence-sovelluskehys huolehtii tietojen säilytyksestä tietokannassa olioparadigman mukaisten riippuvuussuhteiden mukaisesti. Muutoksia ohjelmointitavassa EJB 3.0 -version komponenttityyppejä on uudistettu joiltakin osin. Sessiokomponentteja ja sanomaohjattuja komponentteja käytetään edelleen, mutta entiteettikomponentit on korvattu täysin Java Persistence API:n entiteeteillä. Näin ollen varsinaisia EJBkomponenttityyppejä on vain kolme: tilaton sessiokomponentti, tilallinen sessiokomponentti sekä sanomaohjattu komponentti. Näiden toimintaperiaate on ennallaan, mutta rakenne on yksinkertaistunut huomattavasti arkkitehtuuriuudistuksen myötä. Kuvio 10 esittelee EJB 3.0 -listauksena kuviossa 9 esitellyn komponentin. EJB versiossa komponenttiin luotiin viittaus kotirajapinnan (home interface) avulla. Nyt kotirajapintaa ei enää tarvita, vaan viittaus komponenttiin syntyy perinteisen olion tapaan. Kuviota tarkastelemalla voimmekin havaita, että rajapinnat ja luokat eivät enää periydy EJB-sidonnaisista yläluokista, vaan ovat tavallisia Java-olioita, POJO:ja (Plain Old Java Object). Tämä mahdollistaa komponenttien testaamisen EJB-säiliön ulkopuolella. EJB 2.x -versioiden käytönkuvaimien runsaus aiheutti päänvaivaa ohjelmoijalle. EJB 3.0:n myötä käytönkuvainten käyttö siirtyy suurilta osin historiaan. Aiemmin käytönkuvaimissa määritellyt ominaisuudet määritellään tästä lähtien suoraan Javakoodiin annotaatioiden avulla. Annotaatiot toimivat eräänlaisina leimoina, joilla luokkiin, rajapintoihin ja metodeihin voidaan määritellä lisäominaisuuksia. Esimerkiksi kuviossa 10 luokka VerkkokauppaBean on annotoitu tilattomaksi -annotaatiolla. Annotaatioita tuetaan Javan 5.0 -versioista lähtien.
24 24 Public Interface VerkkokauppaLocal { Collection haetuotteet(); Public Interface Verkkokauppa { Collection haetuotteet(); Public Class VerkkokauppaBean { Collection haetuotteet() {... } } Kuvio 10: EJB 3.0 komponentin koodilistaus. Aivan täysin käytönkuvaimista ei kuitenkaan voida luopua. Sovelluksen koostamiseen liittyvän tiedon määrittelyyn käytetään yhä suurilta osin XML-tiedostoja. Sovellustasolla ajatellen tarvittavien XML-tiedostojen määrä laskee silti murto-osaan aiemmasta. Ohjelmoija voi edelleen halutessaan käyttää annotaatioiden sijaan käytönkuvaimia. Jos komponentin määrittelyssä on käytetty yhtäaikaisesti sekä annotaatioita että käytönkuvaimia, viimeksi mainittu jää voimaan. 5.4 Java Persistence API EJB 3.0:n myötä entiteettikomponentit korvataan Java Persistence API -komponenteilla. Kyseisen tekniikan avulla voidaan konvertoida olioparadigman mukaisia rakenteita suoraan tietokantaan pysyväissäilytystä varten. Täten liiketoimintalogiikan ohjelmoija välttyy tietokantakohtaisten kyselykielten käytöltä ja siirtää vastuun datan noutamisesta ja tallentamisesta EJB-säiliölle. JPA-komponentit käyttävät EJB-komponenttien tavoin annotaatioita, joten komponentteja voidaan ajaa myös EJB-säiliön ulkopuolella. Useimmiten yksittäinen JPA-komponentti vastaa yksittäistä tietokannan taulua, ja edelleen yksittäinen JPA-olio yksittäistä tietokantataulun riviä. Komponentti on tavallinen Java-luokka, joka on annotoitu -komponentilla. Luokan tietojäsenet vastaavat tietokantataulun sarakkeita. Luokalle voidaan annotaatioiden avulla määrittää perusavaimena toimiva tietojäsen sekä yksittäisten tietojäsenten relaatiot tietokannan muihin tauluihin. Hakujen suorittamisessa käytetään EJB 2.0:n tapaan EJB QL-kieltä, mutta kieltä on päivitetty uusilla ominaisuuksilla. Uusi on versio on silti taaksepäin yhteensopiva vanhan version kanssa.
25 25 (40) 5.5 Komponenttien muuttaminen EJB 2.0 -versiosta EJB 3.0 -versioon Komponenttien muuttaminen EJB 2.0 -syntaksista EJB 3.0 -syntaksiin vaihtelee komponenttityypeittäin. Sessiokomponenttien ja sanomaohjattujen komponenttien muuttaminen on melko suoraviivaista, mutta entiteettikomponenttien siirto JPAkomponenteiksi on huomattavasti työläämpi operaatio. Panda, Rahman & Lane (2007:506) määrittelevät sessiokomponentin muuttamisen muuttamiseen tarvittavat askeleet seuraavasti: 1. EJB-komponentista tehdään POJO:ja karsimalla natiivien EJB-rajapintojen toteutukset 2. Määritellään komponentille ainakin yksi liiketoimintarajapinta 3. Käytönkuvaimien XML-koodi korvataan annotaatioilla Natiivien EJB-rajapintojen implementoinnit poistetaan sekä liiketoimintarajapinnasta että varsinaisista komponenttiluokista. Komponentin liiketoimintarajapinta määritellään annotoimalla -annotaatiolla. Olemassa olevien käytönkuvainten koodi tulee käydä läpi ja siirtää määritykset Java-koodiin annotaatioiden avulla. Komponenttien elinkaareen liittyvät metodit voidaan korvata tavallisilla, elinkaariannotaatioilla varustuteilla metodeilla. Sanomaohjattujen komponenttien muuttaminen on myös hyvin suoraviivaista. Natiivien EJB-rajapintojen implementoinnit poistetaan ja komponenttiluokat -annotaatiolla. EJB 2.0 entiteettikomponenttien muuttaminen Java Persistence API:n mukaiseksi on sen sijaan vaikeampi tehtävä. Panda, Rahman & Lane (2007:514) varoittavat, että arkkitehtuuriltaan huonosti suunnitellun entiteettikerroksen muuttaminen voi vaatia koko kerroksen uudelleensuunnittelua. Jos kerros on kuitenkin suunniteltu huolellisesti asianmukaisia suunnittelumalleja käyttäen, prosessi helpottuu huomattavasti. Kirjoittajat mainitsevat tässä yhteydessä erityisesti istuntofasadien ja tiedonsiirtoolioiden suotuisan vaikutuksen. Molempia suunnittelumalleja käytetään ParLetissa.
26 26 (40) 5.6 EJB 2 ja EJB 3 samassa sovelluksessa EJB 3.0 -spesifikaatio vaatii täyttä tukea myös EJB 2.x -pohjaisille komponenteille. Näin ollen 3.0 -versiota noudattavat komponentit voisivat kutsua 2.x -version komponentteja ja päin vastoin. Panda, Rahman & Lane (2007: 500) varoittavat kuitenkin, että vanhempia spesifikaatioita noudattavia sovelluksia ei todennäköisesti voida siirtää täysin ilman muutostoimenpiteitä uudelle EJB 3.0 -sovelluspalvelimelle. Eri versiota edustavien komponenttien toimimista samassa sovelluksessa on pidetty siinä määrin tärkeänä, että komponenttien yhteensopivuudesta on julkaistu oma lukunsa EJB 3.0 -spesifikaatiossa. EJB 2.x- ja EJB 3.0-versioiset komponentit voivat kutsua toisiaan ongelmitta. Käytännössä hyvä yhteensopivuus mahdollistaa sen, että EJB 2.x -spesifikaatiota noudattava sovellus voitaisiin päivittää vain osittain, tiettyjen komponenttien osalta EJB 3.0 -version mukaiseksi. Tällä tavoin voidaan priorisoida päivitystarvetta ja harkita erilaisia etenemistapoja sovelluksen migraatiossa. Osittaisissa päivityksissä on kuitenkin huonot puolensa. Tiwari (2006) toteaa artikkelissaan Migrating EJB 2.x applications to EJB 3.0 seuraavasti: Koska painopiste on tällä hetkellä yhteensopivuudessa ja päivityksen helppoudessa, nyt saattaa olla paras aika päivittää sovellukset kokonaan EJB 3.0 -versioon. Tulevaisuudessa EJB -spesifikaation jatkaessa kehittymistään, vanhempia versioita (2.1. ja aiemmat) noudattavien sovellusten muuttaminen uudempien spesifikaatioiden mukaiseksi saattaa muodostua yhä haasteellisemmaksi. Versioiden keskinäinen yhteensopivuus luo kuitenkin paljon uusia mahdollisuuksia. ParLetin osalta näihin mahdollisuuksiin palataan seuraavan luvun loppupuolella.
27 27 (40) 6 EJB 2.0 version vaihto EJB 3.0 versioon ParLetissa Jotta voitaisiin tarkemmin arvioida komponenttikerroksen migraatiota ParLetin osalta, tarvitaan lisää tietoa päivitysprosessin luonteesta ja mahdollisista etenemistavoista. Aluksi kartoitettiin eri keinoin liiketoimintakerroksen tilaa. Muutostarpeen laajuuden selvittämiseksi ja kohteen rajaamiseksi laadittiin lista päivitystä vaativista EJB - komponenteista. Seuraavaksi käytiin läpi mahdollisen päivitystyön vaiheita, etenemistapoja, vaikutuksia sekä mahdollisia ongelmia. Osana opinnäytetyötä toteutin koeympäristön, jossa muutin erään olemassaolevan ParLetin EJB 2.0 -komponentin EJB 3.0 -versiota ja Java Persistence API:a käyttävään muotoon. Luvun loppupuoliskossa esitellään koeympäristön rakennusprosessin tavoitteet, eteneminen ja tulokset. 6.1 Yleistä ParLetin ajoympäristönä toimii BEA WebLogic Server 8.1 -sovelluspalvelin, joka ei tue EJB 3.0 -versiota. BEA lopettaa kuitenkin kyseisen palvelinversion teknisen tuen vuoden 2009 loppussa, johon mennessä ParLetin kehityksessä ja tuotannossa tulisi ottaa käyttöön uudempi versio. Sovelluspalvelimen uudemmat versiot (9.0:sta ylöspäin) tukevat EJB 3.0 -versiota, mikä mahdollistaisi komponenttitekniikan uusien ominaisuuksien hyödyntämisen. Tätä kirjoittaessa uusin WebLogic Server -versio on 10.2.
28 28 (40) Päivitystä vaativat komponentit ParLetin EJB-komponenttien ja näiden sisältämien Java-luokkien määrä laskettiin Windows XP:n komentokehotteen avulla. Taulukossa 1 komponentit on jaoteltu pakkauksiin ja mahdollisiin alipakkauksiin. Taulukko 1: EJB-komponenttien määrä ParLetissa pakkauksittain (tilanne ) Pakkaus Komponentteja / kpl parlet_ejbs parlet.control 126 parlet.data 75 parlet.message 82 parlet.printing 22 parlet.stat 6 parlet_cleaner parlet.cleaner 13 parlet_common parlet.common 4 Yhteensä 328 Taulukko 2 erittelee pakkauksittain komponenttien sisältämien Java-luokkien määrän. Taulukko 2: EJB-komponentteja sisältävien pakkauksien Java-luokkien määrä (tilanne ) Pakkaus Käsintehtyjä Generoituja parlet_ejbs parlet_cleaner parlet_common Yhteensä Käsintehdyt luokat ovat sovelluskehittäjien luomia, kun taas generoidut luokat luodaan automaattisesti EJBGen -työkalulla sovelluksen kääntövaiheessa.
29 29 (40) 6.2 Mahdollisia migraatiotapoja EJB 3.0-version käyttöönotossa on useita eri mahdollisuuksia. Tässä kappaleessa käsitellään mahdollisia migraatiotapoja hyvien ja huonojen puolten osalta, sekä muutosten vaikutuksia sovelluksen toimintaan ja kehitykseen tulevaisuudessa. Eri versiota edustavien EJB -komponenttien keskinäinen yhteensopivuus mahdollistaa useita erilaisia vaihtoehtoja migraation suhteen. Seuraavassa esitellään neljä mahdollista migraatiotapaa ja eritellään niiden vaikutuksia ParLetin toiminnan kannalta Täysi muutos Täydessä muutoksessa sekä EJB-komponenttiluokat muutetaan EJB 3.0-versiolle ja entiteettikerros Java Persistence API:lle. Tämä olisi tekninen ihannetilanne, jossa kaikki uuden version tuomat edut saataisiin käyttöön. Muutostyön ongelmaksi nousisi kuitenkin todennäköisesti hyvin suuri vaadittavien työresurssien määrä. Hyvät puolet Komponenttikerroksen tekninen yhtenäisyys Mahdollinen suorituskyvyn paraneminen Sovelluksen fyysisen koon pienentyminen Ohjelmakoodin ylläpidon yksinkertaistuminen Mahdollisesti sovelluksen käyttöiän pidentyminen Ongelmakohdat Erittäin suuri työmäärä Tarvitaan paljon asiantuntijaresursseja Mahdollisesti alhainen kustannustehokkuus
30 30 (40) Priorisoitu migraatio Priorisoimalla päivittäminen tarkoittaa vain tärkeimpien komponenttien päivittämistä. Työn määrittelemiseksi komponentit tulisi tulisi asettaa ensijaisuusjärjestykseen tai prioriteettiryhmiin esimerkiksi komponentin toiminnan kriittisyyden, suorituskykyfaktorin, komponenttityypin tai päivityksen helppouden perusteella. Täten päivitettäväksi voitaisiin valita resurssien sallima määrä prioriteetiltaan korkeita komponentteja. Tämän tavan suurin etu täyteen muutokseen verrattuna on kustannustehokkuus. Huomattavasti pienemmällä työmäärällä on mahdollista saada suhteessa verrattain suuri etu. Osittaisten muutosten suurimpana vaarana on mahdollisuus EJB 2.x versioiden tuen loppuminen tulevaisuuden sovelluspalvelimilla. Tämän riskin todennäköisyyttä on kuitenkin vaikea arvioida. Hyvät puolet Hyötysuhde resurssien käytöllä ja saavutetuilla eduilla huomattavasti parempi täyteen muutokseen verrattuna Nykyisellään hyvin toimiviin osa-alueisiin ei tarvitse kajota Ongelmakohdat Komponenttikerros epäyhtenäistyy teknisesti Pirstoutuminen eri versiota edustaviin komponentteihin voi vaikeuttaa ohjelmakoodin ylläpitoa Sovellukseen jätetyt vanhaa versiota edustavat komponentit voivat tuottaa yhteensopivuusongelmia tulevaisuudessa (esimerkiksi sovelluspalvelimen versionnostoissa) Osittaiset migraatiot kerroksittain Erotuksena edellä mainittuun priorisoituun migraatioon osittaisella migraatiomenetelmällä tavoitellaan loogisten kerrosten teknistä yhtenäisyyttä. Tässä tapauksessa esimeriksi pelkkä entiteettikerros muutettaisiin käyttämään Java Persistence API:a, EJB-kerroksen pysyessä 2.0 -version mukaisena. Toisena mahdollisuutena olisi
31 päinvastainen tilanne, eli pelkän EJB-kerroksen muuttaminen entiteettikerroksen pysyessä ennallaan. 31 (40) Hyvät puolet Loogisten kerrosten tekninen yhtenäisyys Ongelmakohdat Mahdollisesti alhainen kustannustehokkuus Jatkokehitys EJB 3.0 -versiolla Tässä vaihtoehdossa pelkästään sovelluksen jatkokehitys tapahtuisi uudella versiolla. Käytännössä vain sovellukseen lisättävät uudet komponentit toteuttaisivat EJB versiota. Tämä edellyttäisi entiteettikerroksen pitämistä ennallaan, joten Java Persistence API:n käyttöönotto ei olisi mahdollista. Hyvät puolet Korkea kustannustehokkuus Vaivaton toteuttaa Huonot puolet Saavutettu hyöty varsin pieni edellämainittuihin migraatiomenetelmiin verrattuna EJB-kerroksen tekninen yhtenäisyys heikkenee
32 32 (40) 6.3 ParLet-koeympäristön toteuttaminen EJB 3.0 -version käyttöönottoon ParLetin kehitystyössä liittyviä toimenpiteitä haluttiin tutkia käytännössä. Osana opinnäytetyötä luotiin kokeellinen palvelinympäristö, johon tuotiin erikseen toimeksiantajan valitsema EJB-komponentti käytössä olevasta ParLetin kehitysympäristöstä. Komponenttiin tehtiin tarvittavia muutoksia, jotta se toimisi uudessa ajoympäristössä. Seuraavassa käydään läpi työn tavoitteet, määrittely, suunnittelu, toteutus ja tulokset Koeympäristön vaatimusmäärittely Migraatiota koskevan tausta-aineiston tuottamisesta neuvoteltiin yhdessä toimeksiantajan kanssa. Toimeksiantaja halusi käytännön esimerkin ParLetin komponenttien muuttamisesta EJB 3.0 -version mukaiseksi. Neuvottelujen pohjalta päädyttiin seuraaviin vaatimuksiin (Palaveri ): 1. Pyritään osoittamaan, kuinka EJB -tekniikan versionvaihto vaikuttaa yksittäisen komponentin ohjelmakoodin syntaksiin ja luokkarakenteeseen 2. Tuotetaan EJB 3.0- koodiesimerkki kehittäjäryhmälle 3. Testataan käytännössä ParLetin EJB 2.0 -entiteettikomponentin muuttaminen Java Persistence API -komponentiksi 4. Listataan toteutuksessa esiintyvät ongelmakohdat ja muut huomionarvoiset seikat 5. Tuotetaan taustatietoa migraation työmäärän arvioimiseksi Vaatimuslistan kohdat 1 4 pyrkivät hyödyttämään etupäässä ParLetin kehitystyössä toimivia ohjelmoijia. Kohdan 5 tuottamia tuloksia pyritään käyttämään tulevaisuudessa mahdollisen migraation työmäärää arvioidessa. Tavoitteiden saavuttamiseksi työn sisältöä määriteltiin yhdessä toimeksiantajan kanssa. Päätettiin, että luodaan EJB 3.0 -versiota tukevalle sovelluspalvelimelle koeympäristö, johon tuodaan yksittäinen komponentti ParLetin nykyisestä kehitysversiosta. Tämä komponentti muutetaan EJB 2.0 -syntaksista EJB 3.0-version sekä Java Persistence
33 33 (40) APIn mukaiseksi. Muutettavaksi komponentiksi toimeksiantaja valitsi Vaihtokurssikomponentin. Todettiin, että koeympäristön pystyttäminen vaatii uuden sovelluspalvelimen asentamisen, sillä ParLetin tämänhetkinen kehityspalvelin ei tue EJB 3.0 -versiota. Sovelluspalvelimeksi valittiin BEA WebLogic Prosessin työvaiheet muotoiltiin seuraavasti: 1. Sovelluksen suunnittelu 2. Koeympäristön asennus ja konfigurointi 3. Komponentin siirto ja muokkaus 4. Testaus ja tulosten poiminta Laadin työvaiheiden pohjalta aikatauluarvion ja toteutussuunnitelman.
Sovellusarkkitehtuurit
HELIA TiKo-05 1 (9) Sovellusarkkitehtuurit ODBC (Open Database Connectivity)... 2 JDBC (Java Database Connectivity)... 5 Middleware... 6 Middleware luokittelu... 7 Tietokanta -middleware... 8 Tapahtumamonitorit
P e d a c o d e ohjelmointikoulutus verkossa
P e d a c o d e ohjelmointikoulutus verkossa J2EE - EJB Session Bean Teoria ja ohjelmointitehtävät J2EE - EJB Session Bean 3 YLEISKATSAUS KURSSIN SISÄLTÖIHIN... 7 YLEISKATSAUS KURSSIN SISÄLTÖIHIN... 7
Case TUHTI. Projektin tunnuslukuja. ! Suuri perusjärjestelmäuudistus! Työt alkoivat kesällä 1999. ! Java luokkia n. 5000
Case TUHTI 17.12.2002 1 TietoEnator 2002 Projektin tunnuslukuja! Suuri perusjärjestelmäuudistus! Työt alkoivat kesällä 1999! Otettu tuotantokäyttöön syksyllä 2001! Proof of Concept (5 henkilöä 4 kk) ->
Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1
3. Komponentit ja rajapinnat 3.1 Komponenttien idea: ohjelmistotuotannon rationalisointi 3.2 Mikä on ohjelmistokomponentti? 3.3 Komponentit ohjelmistoyksikköinä 3.4 Rajapinnat 3.6 Komponenttien räätälöinti
Java Platform, Enterprise Edition (Java EE)
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 /
ELM GROUP 04. Teemu Laakso Henrik Talarmo
ELM GROUP 04 Teemu Laakso Henrik Talarmo 23. marraskuuta 2017 Sisältö 1 Johdanto 1 2 Ominaisuuksia 2 2.1 Muuttujat ja tietorakenteet...................... 2 2.2 Funktiot................................
HOJ J2EE & EJB & SOAP &...
HOJ J2EE & EJB & SOAP &... Ville Leppänen HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/18 Missä mennään... 1. Johdanto (1h) 2. Säikeet (2h) 3. Samanaikaisuudesta (2h) 4. Hajautetuista sovelluksista
EJB-komponenttien tietokantakytkentä
hyväksymispäivä arvosana arvostelija EJB-komponenttien tietokantakytkentä Antti Harkola Helsinki 17. huhtikuuta 2003 Relaatiotietokannat nyt seminaari Helsingin yliopisto Tietojenkäsittelytieteen laitos
Interfacing Product Data Management System
Interfacing Product Data Management System Tekijä: Työn valvoja: Mats Kuivalainen Timo Korhonen Esitelmän sisältö Työn suorituspaikka - Ideal Product Data Oy Käsitteitä Työn tavoitteet Työn tulokset 1/5
HSMT J2EE & EJB & SOAP &...
HSMT J2EE & EJB & SOAP &... Ville Leppänen HSMT, c Ville Leppänen, IT, Turun yliopisto, 2011 p.1/15 Missä mennään... 1. Johdanto (1h) 2. Säikeet (2h) 3. Samanaikaisuudesta (2h) 4. Hajautetuista sovelluksista
Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14
Arkkitehtuurikuvaus Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy Ryhmä 14 Muutoshistoria Versio Pvm Päivittäjä Muutos 0.4 1.11.2007 Matti Eerola 0.3 18.10.2007 Matti Eerola 0.2
Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys
Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys Tällä kurssilla on tutustuttu ohjelmistojen mallintamiseen oliomenetelmiä ja UML:ää käyttäen Samaan aikaan järjestetyllä kurssilla on käsitelty
Osittavat arkkitehtuurityylit. Palveluihin perustuvat arkkitehtuurityylit. Erikoisarkkitehtuurityylit
6. Arkkitehtuurityylit Osittavat arkkitehtuurityylit Kerrosarkkitehtuurit Tietovuoarkkitehtuurit Palveluihin perustuvat arkkitehtuurityylit Asiakas-palvelin arkkitehtuurit Viestinvälitysarkkitehtuurit
Liite 1: KualiKSB skenaariot ja PoC tulokset. 1. Palvelun kehittäjän näkökulma. KualiKSB. Sivu 1. Tilanne Vaatimus Ongelma jos vaatimus ei toteudu
Liite 1: skenaariot ja PoC tulokset 1. Palvelun kehittäjän näkökulma Tilanne Vaatimus Ongelma jos vaatimus ei toteudu Palvelun uusi versio on Palveluiden kehittäminen voitava asentaa tuotantoon vaikeutuu
Uutisjärjestelmä. Vaatimusmäärittely. Web-palvelujen kehittäminen. Versio 1.3
Uutisjärjestelmä Vaatimusmäärittely Versio 1.3 Sisällys 1 Muutoshistoria... 4 2 Viitteet... 4 3 Sanasto... 4 3.1 Lyhenteet... 4 3.2 Määritelmät... 4 4 Johdanto...5 4.1 Järjestelmän yleiskuvaus... 5 4.2
Uutta Remote Support Platform 3.0 -versiossa
Uutta Remote Support Platform for SAP Business One Asiakirjaversio: 1.0 2012-10-08 Kaikki maat Typografiset merkintätavat Kirjasintyyli Esimerkki Näytöstä lainatut sanat tai merkit. Näitä ovat kenttien
FiSMA 1.1 Toiminnallisen laajuuden mittausmenetelmä Ohje monikerrosarkkitehtuurin mittaamiseen
FiSMA 1.1 Monikerrosarkkitehtuuri 1 (6) FiSMA 1.1 Toiminnallisen laajuuden mittausmenetelmä Ohje monikerrosarkkitehtuurin mittaamiseen 1. Yleiset periaatteet FiSMA 1.1 -menetelmässä mitataan sovellusperiaatteen
4.12.2005. SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T
SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T SEPA: REFAKTOROINTI 2 (9) SEPA: REFAKTOROINTI 3 (9) VERSIOHISTORIA Version Date Author Description 0.1 2.12.2005 Erik Hakala Ensimmäinen
XPages käyttö ja edut Jarkko Pietikäinen toimitusjohtaja, Netwell Oy
IBM Collaboration Forum ٨.٣.٢٠١١ XPages käyttö ja edut Jarkko Pietikäinen toimitusjohtaja, Netwell Oy ٢٠١١ IBM Corporation Domino-sovelluskehitys Nopea kehitysympäristö (Rapid application development,
Käyttäjien tunnistaminen ja käyttöoikeuksien hallinta hajautetussa ympäristössä
www.niksula.cs.hut.fi/~jjkankaa// Demosovelluksen tekninen määrittely v. 0.6 Päivitetty 11.12.2000 klo 20:26 Mickey Shroff 2 (12) Dokumentin versiohistoria Versio Päivämäärä Tekijä / muutoksen tekijä Selite
Ohjelmistojen suunnittelu
Ohjelmistojen suunnittelu 581259 Ohjelmistotuotanto 154 Ohjelmistojen suunnittelu Software design is a creative activity in which you identify software components and their relationships, based on a customer
Jussi Klemola 3D- KEITTIÖSUUNNITTELUOHJELMAN KÄYTTÖÖNOTTO
Jussi Klemola 3D- KEITTIÖSUUNNITTELUOHJELMAN KÄYTTÖÖNOTTO Opinnäytetyö KESKI-POHJANMAAN AMMATTIKORKEAKOULU Puutekniikan koulutusohjelma Toukokuu 2009 TIIVISTELMÄ OPINNÄYTETYÖSTÄ Yksikkö Aika Ylivieska
Ohjelmistoteknologioiden koulutus: Web-sovelluskehitys, Java Server. Infotilaisuus 3.12.2014 klo 10:00
Ohjelmistoteknologioiden koulutus: Web-sovelluskehitys, Java Server Infotilaisuus 3.12.2014 klo 10:00 Yleistä Ohjelmistoteknologioiden koulutukset 2014-2015 3: Internet sovellusten ohjelmointi Java Server
13/20: Kierrätys kannattaa koodaamisessakin
Ohjelmointi 1 / syksy 2007 13/20: Kierrätys kannattaa koodaamisessakin Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy
Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo
Concurrency - Rinnakkaisuus Group: 9 Joni Laine Juho Vähätalo Sisällysluettelo 1. Johdanto... 3 2. C++ thread... 4 3. Python multiprocessing... 6 4. Java ExecutorService... 8 5. Yhteenveto... 9 6. Lähteet...
www.solita.fi solita@solita.fi
www.solita.fi solita@solita.fi JAVA-SOVELLUSTEN RAKENTAMINEN INTEGROITUUN YMPÄRISTÖÖN Jarno Peltoniemi Solita Oy 10.5.2005 Aiheet Johdanto Portaalit, portletit Oracle Portal Java-sovelluksen rakentaminen
Julkaisun laji Opinnäytetyö. Sivumäärä 43
OPINNÄYTETYÖN KUVAILULEHTI Tekijä(t) SUKUNIMI, Etunimi ISOVIITA, Ilari LEHTONEN, Joni PELTOKANGAS, Johanna Työn nimi Julkaisun laji Opinnäytetyö Sivumäärä 43 Luottamuksellisuus ( ) saakka Päivämäärä 12.08.2010
SAP. Lasse Metso 14.1.2011
SAP Lasse Metso 14.1.2011 Toiminnanohjausjärjestelmä engl. Enterprise Resource Planning, ERP Integroitu tietojärjestelmä joka palvelee kaikkia yrityksen osastoja. Tuotantoyrityksistä liikkeelle lähtenyt
HOJ Haja-aiheita. Ville Leppänen. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/10
HOJ Haja-aiheita Ville Leppänen HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/10 Missä mennään... 1. Johdanto (1h) 2. Säikeet (2h) 3. Samanaikaisuudesta (2h) 4. Hajautetuista sovelluksista (1h)
Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki
Sisällys JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta Abstrakti luokka ja metodi Rajapintamäärittely (interface) Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto 13.10.2000 E.
Valppaan asennus- ja käyttöohje
Versio Päiväys Muokkaaja Kuvaus 0.9 16.2.2006 Tuukka Laakso Korjattu versio 0.1 Antti Kettunen Alustava versio Sisällysluettelo 1 Johdanto...2 2 Valppaan asennus...3 2.1 Valppaan kääntäminen...3 2.2 Valmiiksi
Ohjelmistojen mallintaminen. Luento 11, 7.12.
Ohjelmistojen mallintaminen Luento 11, 7.12. Viime viikolla... Oliosuunnittelun yleiset periaatteet Single responsibility eli luokilla vain yksi vastuu Program to an interface, not to concrete implementation,
Järjestelmäarkkitehtuuri (TK081702)
Järjestelmäarkkitehtuuri (TK081702) yleistyvät verkkopalveluissa Youtube Google... Avaavat pääsyn verkkopalvelun sisältöön. Rajapintojen tarjoamia tietolähteitä yhdistelemällä luodaan uusia palveluja,
Visma Software Oy
pidättää itsellään oikeuden mahdollisiin parannuksiin ja/tai muutoksiin tässä oppaassa ja/tai ohjelmassa ilman eri ilmoitusta. Oppaan ja siihen liittyvän muun materiaalin kopiointi on kielletty ilman :n
Järjestelmäarkkitehtuuri (TK081702) Järjestelmäarkkitehtuuri. Järjestelmäarkkitehtuuri
Järjestelmäarkkitehtuuri (TK081702) ja Järjestelmäarkkitehtuuri Sovellukset ovat olemassa Järjestelmien uudistaminen vie yleensä arvioitua enemmän resursseja ja kestää arvioitua kauemmin Migration (Migraatio
Helia Ohjelmointitaito 14.3.2005 Tuomas Kaipainen Mermit Business Applications Oy. 2005 Mermit Business Applications
Helia Ohjelmointitaito 14.3.2005 Tuomas Kaipainen Mermit Business Applications Oy Esityksen sisältö Mermit yrityksenä Perustiedot Toimintamalli Mermit työpaikkana ohjelmistoinsinöörille Esimerkkiprojekti
3. Komponentit ja rajapinnat
3. Komponentit ja rajapinnat 3.1 Komponenttien idea: ohjelmistotuotannon rationalisointi 3.2 Mikä on ohjelmistokomponentti? 3.3 Komponentit ohjelmistoyksikköinä 3.4 Rajapinnat 3.6 Komponenttien räätälöinti
Yksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } }
Yksikkötestauksella tarkoitetaan lähdekoodiin kuuluvien yksittäisten osien testaamista. Termi yksikkö viittaa ohjelman pienimpiin mahdollisiin testattaviin toiminnallisuuksiin, kuten olion tarjoamiin metodeihin.
Visma Nova Webservice Versio 1.1 /
Visma Nova Webservice Versio 1.1 / 31.10.2018 pidättää itsellään oikeuden mahdollisiin parannuksiin ja/tai muutoksiin tässä oppaassa ja/tai ohjelmassa ilman eri ilmoitusta. Oppaan ja siihen liittyvän muun
Järjestelmäkehitys EJB komponenttien avulla
Järjestelmäkehitys EJB komponenttien avulla Eeva-Liisa Lehto Helsinki 8.11.2000 Seminaariesitelmä Ohjelmistotuotantovälineet Tietojenkäsittelytieteen laitos Helsingin yliopisto 2 SISÄLTÖ: 1. Johdanto...3
Hintatiedotus ja tietojen välitys. Loppuraportti
Hintatiedotus ja tietojen välitys Loppuraportti Henkilöliikenne 18. marraskuuta 2002 1 Lähtökohdat VR Henkilöliikenteellä on käytössä Journey Planner reitinsuunnittelupalvelu. Palvelua käyttävät matkustajat
Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja
582104 Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja 1 Arkkitehtuurisuunnittelu Ohjelmistoarkkitehtuurin määritelmä & arkkitehtuurisuunnittelun lähtökohta ja tavoitteet Kerrosarkkitehtuuri
Paikkatietorajapinnat IT arkkitehtuurin näkökulmasta 21.12.200 7
Paikkatietorajapinnat IT arkkitehtuurin näkökulmasta 21.12.200 7 Mikä on IT arkkitehtuuri? Liiketoimintamalli määrittelee IT arkkitehtuurin IT arkkitehtuuri ottaa kantaa sovelluksen laadullisiin vaatimuksiin
Tuottavuutta sovelluskehitykseen Oraclen työkaluilla: JDeveloper 10g ja HTML DB OUGF Syysseminaari
Tuottavuutta sovelluskehitykseen Oraclen työkaluilla: JDeveloper 10g ja HTML DB OUGF Syysseminaari 4.11.2004 Jari Kuokka Tuoteasiantuntija Oracle Finland Oracle Developer Suite 10 g JDeveloper Reports
JWT 2016 luento 11. to 21.4.2016 klo 14-15. Aulikki Hyrskykari. PinniB 1097. Aulikki Hyrskykari
JWT 2016 luento 11 to 21.4.2016 klo 14-15 Aulikki Hyrskykari PinniB 1097 1 Viime luennolla o AJAX ja JSON, harjoitustyön tehtävänanto, vierailuluento avoimesta datasta Tänään o APIt rajapinnoista yleisesti
812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VII Suunnittelumallit Adapter ja Composite
2015 syksy 2. vsk VII Suunnittelumallit Adapter ja Composite Sisältö 1. Johdanto rakennemalleihin 2. Adapter (Sovitin) 3. Composite (Rekursiokooste) Suunnittelumallit Adapter ja Composite 2 VII.1 Johdanto
KADA (Drupal 7) migraatio uuteen (versioon) webiin
KADA (Drupal 7) migraatio uuteen (versioon) webiin Hallittu elinkaaren siirto suoran migraation sijaan Mikko Malmgren & Antti Tuppurainen Mikko Malmgren / Kuntaliitto Antti Tuppurainen / Industry62 @mikko_malmgren
Rajapinnasta ei voida muodostaa olioita. Voidaan käyttää tunnuksen tyyppinä. Rajapinta on kuitenkin abstraktia luokkaa selvästi abstraktimpi tyyppi.
11. Rajapinnat 11.1 Sisällys Johdanto. Abstrakti luokka vai rajapinta? Rajapintojen hyötyjä. Kuinka rajapinnat määritellään ja otetaan käyttöön? Eläin, nisäkäs, kissa ja rajapinta. Moniperiytyminen rajapintojen
Järjestelmäarkkitehtuuri (TK081702) Hajautettu tietokanta. Hajautuksen hyötyjä
Järjestelmäarkkitehtuuri (TK081702) Hajautettu tietokanta Hajautettu tietokanta Jokainen hajautettu tietokanta muodostaa oman kokonaisuutensa Loogisesti yhtenäinen data on hajautettu tietokantoihin (eri
Ohjelmistojen mallintaminen, mallintaminen ja UML
582104 Ohjelmistojen mallintaminen, mallintaminen ja UML 1 Mallintaminen ja UML Ohjelmistojen mallintamisesta ja kuvaamisesta Oliomallinnus ja UML Käyttötapauskaaviot Luokkakaaviot Sekvenssikaaviot 2 Yleisesti
Tietokantaohjelmoinnin tekniikkoja Java-kielellä
Tietokantaohjelmoinnin tekniikkoja Java-kielellä Ville Kuokkanen Helsinki 6. helmikuuta 2003 Relaatiotietokannat nyt seminaari HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos i Tietokantaohjelmoinnin
Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä
Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä Matti Luukkainen 10.12.2009 Tässä esitetty esimerkki on mukaelma ja lyhennelmä Robert Martinin kirjasta Agile and Iterative Development löytyvästä
9. Periytyminen Javassa 9.1
9. Periytyminen Javassa 9.1 Sisällys Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Ilmentymämetodien korvaaminen. Luokkametodien peittäminen. Super-attribuutti. Override-annotaatio.
Ohjelmointikielet ja -paradigmat 5op. Markus Norrena
Ohjelmointikielet ja -paradigmat 5op Markus Norrena Ko#tehtävä 4 Viimeistele "alkeellinen kuvagalleria". Käytännössä kaksi sivua Yksi jolla voi ladata kuvia palvelimelle (file upload) Toinen jolla ladattuja
Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas
Tiedonhallinnan perusteet Viikko 1 Jukka Lähetkangas Kurssilla käytävät asiat Tietokantojen toimintafilosofian ja -tekniikan perusteet Tiedonsäilönnän vaihtoehdot Tietokantojen suunnitteleminen internetiä
FiSMA 1.1 Toiminnallisen laajuuden mittausmenetelmä Ohje monikerrosarkkitehtuurin mittaamiseen
FiSMA 1.1 Monikerrosarkkitehtuuri 1 (7) FiSMA 1.1 Toiminnallisen laajuuden mittausmenetelmä Ohje monikerrosarkkitehtuurin mittaamiseen 1. Yleiset periaatteet FiSMA 1.1 -menetelmässä mitataan sovellusperiaatteen
J2EE vs..net Olli Sakari
TEEMA-ARTIKKELI J2EE vs..net Olli Sakari J2EE ja.net ovat tietojärjestelmäteknologioita, joiden varaan suuri osa tulevaisuuden tietojärjestelmistä tulee rakentumaan. Molemmat teknologioista tarjoavat välineitä
ohjelman arkkitehtuurista.
1 Legacy-järjestelmällä tarkoitetaan (mahdollisesti) vanhaa, olemassa olevaa ja käyttökelpoista ohjelmistoa, joka on toteutettu käyttäen vanhoja menetelmiä ja/tai ohjelmointikieliä, joiden tuntemus yrityksessä
JReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä 6.11.2002
JReleaser Yksikkötestaus ja JUnit Mikko Mäkelä 6.11.2002 Sisältö Johdanto yksikkötestaukseen JUnit yleisesti JUnit Framework API (TestCase, TestSuite) Testien suorittaminen eri työkaluilla Teknisiä käytäntöjä
Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset
Tekninen määrittely: Editori Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset Sisällysluettelo 1. Johdanto...4 1.1. Tarkoitus ja kattavuus...4 1.2. Tuote ja ympäristö...4 1.3. Määritelmät,
T SEPA - päiväkirja: Design Patterns. ETL työkalu
T-76.115 SEPA - päiväkirja: Design Patterns ETL työkalu Versio Päivämäärä Tekijä Kuvaus 1.0 25.10.2004 Jani Honkanen PP-vaiheen jälkeinen versio 1,1 26.11.2004 Mika Suvanto I1- vaiheen kokemuksia lisätty
Visual Basic -sovelluskehitin Juha Vitikka
Visual Basic -sovelluskehitin Helsinki 30.10.2000 Seminaari HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Visual Basic sovelluskehitin Seminaari: Ohjelmistotuotantovälineet Tietojenkäsittelytieteen
Sisäänrakennettu tietosuoja ja ohjelmistokehitys
Sisäänrakennettu tietosuoja ja ohjelmistokehitys Petri Strandén 14. kesäkuuta, 2018 Petri Strandén Manager Cyber Security Services Application Technologies Petri.stranden@kpmg.fi Petri vastaa KPMG:n Technology
Tekninen suunnitelma - StatbeatMOBILE
Tekninen suunnitelma - StatbeatMOBILE Versio Päivämäärä Henkilö Kuvaus 1.0 13.12.2013 Pöyry Alustava rakenne ja sisältö 1.1 22.12.2013 Pöyry Lisätty tekstiä ilmoituksiin, turvallisuuteen ja sisäiseen API:in
Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen
Pedacode Pikaopas Java-kehitysympäristön pystyttäminen Pikaoppaan sisältö Pikaoppaassa kuvataan, miten Windowstyöasemalle asennetaan Java-ohjelmoinnissa tarvittavat työkalut, minkälaisia konfigurointeja
AutoCAD-natiiviobjektin toteutus
AutoCAD-natiiviobjektin toteutus Kontiotuote OY Maailman toiseksi suurin hirsitalotoimittaja Aloittanut toimintansa 70-luvulla Liikevaihto vuonna 2003-37,355 Milj. euroa josta vientiä 7,376 Milj. euroa
Miten voin selvittää säästömahdollisuuteni ja pääsen hyötymään niistä?
Se edullisempi tietokanta Miten voin selvittää säästömahdollisuuteni ja pääsen hyötymään niistä? Rasmus Johansson rasmus.johansson@microsoft.com Ratkaisumyyntipäällikkö (Sovellusalusta) Microsoft Oy Miten
Javan asennus ja ohjeita ongelmatilanteisiin
Javan asennus ja ohjeita ongelmatilanteisiin Javaa tarvitaan Fivaldin Sovellusikkunan alaisiin sovelluksiin, jotka käyttävät Oracle Forms -tekniikkaa. Visma Fivaldin osalta suosittelemme aina käyttämään
Helsingin yliopisto/tktl DO Tietokantojen perusteet, s 2000 Johdanto & yleistä Harri Laine 1. Tietokanta. Tiedosto
Tietokanta Tiedosto Tietokanta (database) jotakin käyttötarkoitusta varten laadittu kokoelma toisiinsa liittyviä säilytettäviä tietoja Ohjelmointikielissä apumuistiin tallennettuja tietoja käsitellään
15. Ohjelmoinnin tekniikkaa 15.1
15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Lueteltu tyyppi enum. Override-annotaatio. Geneerinen ohjelmointi. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien
Arkkitehtuuri. Ylätason sovellusarkkitehtuuri
Arkkitehtuuri Termieditorin käyttö vaatii kirjautumisen. Peruskäyttäjälle myönnetään erikseen aineistokohtaisia luku- ja muokkausoikeuksia. Järjestelmän ylläpitäjä (admin) saa ylläpitää kaikkia aineistoja.
Koira testissä vai Racci tuotannossa O10G/IAS10 Linuxilla
Koira testissä vai Racci tuotannossa O10G/IAS10 Linuxilla Petri Tumppila/Bemecon Oy, petri.tumppila@bemecon.fi Tuomas Pystynen/Deepbase Oy, tuomas.pystynen@deepbase.com OUGF 4.11.2004 Agenda Ympäristö
Object Framework - One. OF-1 is a high-productive Multi-UI OpenEdge data driven development framework. Veli-Matti Korhonen
Object Framework - One OF-1 is a high-productive Multi-UI OpenEdge data driven development framework Veli-Matti Korhonen Aiheet OF-1 esittely Mitä ominaisuuksia saa ilman ohjelmointia Miten ohjelmoidaan
HiQ Finland Älypuhelinsovellusten käyttäjälähtöisen kehityksen tukeminen
HiQ Finland Älypuhelinsovellusten käyttäjälähtöisen kehityksen tukeminen HiQ otti käyttöön Lenovon ja Nutanixin hyperkonvergenssiratkaisun tarjotakseen kehittäjille resurssit uusien ja mielenkiintoisten
PAIKALLISJÄRJESTÖKOHTAISTEN NETTISIVUJEN
SAK:N PAIKALLISJÄRJESTÖJEN NETTIPALVELUT s. 1/7 PAIKALLISJÄRJESTÖKOHTAISTEN NETTISIVUJEN RAKENNE Paikallisjärjestöjen omille sivuille pääsee suoralla osoitteella, joka on muotoa www.sak-paikalliset.fi/paikkakunta
Pedacode Pikaopas. Web Service asiakasohjelman luominen
Pedacode Pikaopas Web Service asiakasohjelman luominen Pikaoppaan sisältö Pikaoppaassa kuvataan, Netbeans-työkalulla luodaan valmista olemassa olevaa Web Service palvelua käyttävä asiakasohjelma. Opas
Tekninen suunnitelma - StatbeatMOBILE
Tekninen suunnitelma - StatbeatMOBILE Versio Päivämäärä Henkilö Kuvaus 1.0 13.12.2013 Pöyry Alustava rakenne ja sisältö 1.1 22.12.2013 Pöyry Lisätty tekstiä ilmoituksiin, turvallisuuteen ja sisäiseen API:in
Haaga-Helia/IltaTiko ict2tcd005: Ohjelmiston suunnittelutaito 1/7 Anne Benson. Tällä opintojaksolla käytämme VS:n kolmen kokonaisuuden luomiseen:
Haaga-Helia/IltaTiko ict2tcd005: Ohjelmiston suunnittelutaito 1/7 Microsoft SQL käyttö Yleistä VisualStudiosta Tällä opintojaksolla käytämme VS:n kolmen kokonaisuuden luomiseen: - sovellushallintaan -
Dart. Ryhmä 38. Ville Tahvanainen. Juha Häkli
Dart Ryhmä 38 Ville Tahvanainen Juha Häkli 1.LYHYESTI Dart on luokkapohjainen, yksiperintäinen, puhdas olio-ohjelmointikieli. Dart on dynaamisesti tyypitetty. Sovellukset on organisoitu modulaarisiksi
Visma Liikkuvan työn ratkaisut
Visma Liikkuvan työn ratkaisut Työmaarekisteri Ilmoitin päivitys Tiedotus 19.6.2018 Visma Software Oy pidättää itsellään oikeuden mahdollisiin parannuksiin ja/tai muutoksiin tässä oppaassa ja/tai ohjelmassa
FinFamily PostgreSQL installation ( ) FinFamily PostgreSQL
FinFamily PostgreSQL 1 Sisällys / Contents FinFamily PostgreSQL... 1 1. Asenna PostgreSQL tietokanta / Install PostgreSQL database... 3 1.1. PostgreSQL tietokannasta / About the PostgreSQL database...
Tietojärjestelmä tuotantoympäristössä. Sovellusohjelmat Helsingin ammattikorkeakoulu Stadia / Tekniikka ja liikenne Vesa Ollikainen
Tietojärjestelmä tuotantoympäristössä Tausta ja tavoitteet Tausta Kurssilla on opiskeltu suunnittelemaan ja toteuttamaan tietokanta, joka on pieni perustuu selkeisiin vaatimuksiin on (yleensä) yhden samanaikaisen
Tietokanta (database)
Tietokanta Tietokanta (database) jotakin käyttötarkoitusta varten laadittu kokoelma toisiinsa liittyviä säilytettäviä tietoja 1 Tiedosto Ohjelmointikielissä apumuistiin tallennettuja tietoja käsitellään
Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS Ti Kandidaatintyö ja seminaari
LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS Ti5004000 - Kandidaatintyö ja seminaari Alkuraportti Avoimen lähdekoodin käyttö WWW-sovelluspalvelujen toteutuksessa Lappeenranta, 4.6.2007,
Johdanto Javaan ja tietokantojen käsittelyyn Java Database Connectivity (JDBC)
HAAGA-HELIA ICT1TA006: Ohjelmointi 1 /5 Johdanto Javaan ja tietokantojen käsittelyyn Java Database Connectivity (JDBC) (Lähteet: Oracle java jdbc Tutorial, Arvo Lipitsäinen: Tietokannan käsittely JDBC:n
Android ohjelmointi. Mobiiliohjelmointi 2-3T5245
Android ohjelmointi Mobiiliohjelmointi 2-3T5245 Mikä on Android? Linux kernelin päälle rakennettu, Googlen kehittämä sovelluspino mobiilisovelluksiin Erillinen versio puhelimelle ja taulutietokoneille
Perusarkkitehtuurin ja vuorovaikutuksen mallintamisen perusteita.
Perusarkkitehtuurin ja vuorovaikutuksen mallintamisen perusteita. Arkkitehtuuriin vaikuttavat ympäristötekijät Jo kehittämisen alkuvaiheessa on tarpeellista hahmotella arkkitehtuurin perusratkaisu. Lähtökohdat
Suunnitteluvaihe prosessissa
Suunnittelu Suunnitteluvaihe prosessissa Silta analyysin ja toteutuksen välillä (raja usein hämärä kumpaankin suuntaan) Asteittain tarkentuva Analyysi -Korkea abstraktiotaso -Sovellusläheiset käsitteet
Työasemien hallinta Microsoft System Center Configuration Manager 2007. Jarno Mäki Head of Training Operations M.Eng, MCT, MCSE:Security, MCTS
Työasemien hallinta Microsoft System Center Configuration Jarno Mäki Head of Training Operations M.Eng, MCT, MCSE:Security, MCTS IT Education Center Agenda Yleistä työasemien hallinnasta Työasemien hallinta
Avoimen ja yhteisen rajapinnan hallintasuunnitelma v.1.4
Avoimen ja yhteisen rajapinnan hallintasuunnitelma v.1.4 Tämän esityksen sisältö tausta avoimet toimittajakohtaiset rajapinnat (toimittajan hallitsemat rajapinnat) avoimet yhteiset rajapinnat (tilaajan
Aditro Tikon ostolaskujen käsittely versio 6.2.0
Lokakuu 2012 1 (9) Aditro versio 6.2.0 Päivitysohje Lokakuu 2012 2 (9) Sisällysluettelo 1. Tehtävät ennen versiopäivitystä... 3 1.1. Ohjelmistomuutosten luku... 3 1.2. Aditro Pankkipalvelut yhteensopiva
Sisällys. 11. Rajapinnat. Johdanto. Johdanto
Sisällys 11. ajapinnat. bstrakti luokka vai rajapinta? ajapintojen hyötyjä. Kuinka rajapinnat määritellään ja otetaan käyttöön? Eläin, nisäkäs, kissa ja rajapinta. Moniperiytyminen rajapintojen avulla.
Tikon Ostolaskujenkäsittely/Web-myyntilaskutus versio 6.3.0
Toukokuu 2013 1 (10) Tikon Ostolaskujenkäsittely/Web-myyntilaskutus versio 6.3.0 Päivitysohje Copyright Aditro 2013 Toukokuu 2013 2 (10) Sisällysluettelo 1. Tehtävät ennen versiopäivitystä... 3 1.1. Ohjelmistomuutosten
Katselupalvelujen INSPIRE-yhteensopivuuden testaus
Katselupalvelujen INSPIRE-yhteensopivuuden testaus Infrastruktuuri-ryhmä 19.10.2011 Jani Kylmäaho 1 Miksi? Sisältö Yleisimmät ongelmat rajapintapalvelujen yhteensopivuudessa WMS-standardiin Yleisimmät
Web Service torilla tavataan!
Web Service torilla tavataan! Jari Putula Avarea Oy COPYRIGHT BY AVAREA 2009 1 Google Trends COPYRIGHT BY AVAREA 2009 2 1 1. Mahdollistajat 2. Web service? 3. KISS 4. Miksi? 5. Analogia 6. Ajax 7. Esimerkki
in condition monitoring
Etäteknologioiden automaatiosovellukset Using e-speak e in condition monitoring tutkija professori Hannu Koivisto Sisältö Tausta Globaali kunnonvalvontajärjestelmä E-speak globaalissa kunnonvalvontajärjestelmässä
Avoimen lähdekoodin kehitysmallit
Avoimen lähdekoodin kehitysmallit Arto Teräs Avoimen lähdekoodin ohjelmistot teknisessä laskennassa -työpaja CSC, 25.5.2009 Avoimen lähdekoodin kehitysmallit / Arto Teräs 2009-05-25
Esityksen sisältö Määrittelyjen mukaisuudesta varmistuminen - PlugIT-leima
Esityksen sisältö Johdanto Yleistä leimausmenettelystä ja leimasta Leimausmenettelyn vaiheet Kuinka määrittelyjen mukaisuus testataan: esimerkkejä testitapauksista Olennaisimmat kysymykset leimausmenettelyn
Liiketoimintajärjestelmien integrointi
Liiketoimintajärjestelmien integrointi Vierailuluento 2.3.2015 Esa Heikkinen Mystes Oy Agenda Liiketoimintajärjestelmien integrointi EAI: Enterprise Application Integration EAS: Enterprise Application