Sovelluskehitys JDeveloper 10g ja Oracle ADF -välineillä OUGF Kevätseminaari 12.5.2004 Jarkko Happonen, Eventizer Oy
Eventizer Oy Tietojärjestelmien kehittäminen ja ohjelmistoalan konsultointi Pitkäaikainen kokemus erilaisista ohjelmistoprojekteista Vankka Oracle- ja Java-osaaminen Eventizer -ohjelmistotuote kongressien ja muiden tapahtumien tiedonhallintaan Perustettu 1999, kotipaikka Jyväskylä www.eventizer.com
Sisältö Esitellään uuden Oracle JDeveloper 10g:n mahdollisuuksia rich client -tyyppisten tietokantasovellusten kehittämisessä Työkaluina JDeveloper sekä Oracle Application Development Framework (ADF) Teknologia-alusta: Java 2 Standard Edition v1.4, Swing, JDBC, SQL
Miksi rich client? Interaktiivisempi käyttöliittymä Välitön tietokenttien validointi Monipuolisemmat tiedon esitystavat Lokaali ja client-server-asennustapa Off-line-toiminta
Vaatimukset työvälineeltä Tuottavuuden, ryhmätyön sujumisen ja sovelluksen ylläpidettävyyden varmistamiseksi: Visuaaliset suunnittelu- ja kehitysvälineet Deklaratiivinen ohjemointityyli End-to-end: työväline tarjoaa toimivat ja yhtenäiset ratkaisut sovelluksen kaikille tasoille tietokannasta käyttöliittymään
Esityksestä Oracle JDeveloper 10g Oracle ADF -sovelluskehys ADF Business Components sovelluslogiikka ja tietokantakäsittely ADF JClient käyttöliittymän komponenttien sidokset Käyttöliittymien kehitys JDeveloperilla
I. JDeveloper 10g ja Oracle ADF
JDeveloper 10g Integroitu kehitysympäristö Java- ja tietokantasovellusten kehittämiseen Mallinnus-, kehitys-, debuggaus-, optimointi- ja asennustyökalut, versionhallintajärjestelmien tuki Suurimpana uutuutena 9i-versiosta: Application Development Framework (ADF) Laajennuksilla lisäominaisuuksia Tuotantoversio 9.0.5.1 julkaistu 4/2004
Teknologiapaletti Java 2 Standard Edition v1.4 Mallinnus: UML-kaaviot Tietokannat: SQL, PL/SQL, Java stored procedures, off-line-tietokannat Business-palvelut: EJB, Web Services, ADF Business Components, TopLink Käyttöliittymät: AWT, Swing, ADF JClient Web: Servlets, JSP, Struts, ADF UIX, HTML, XML, Applets Asennus: J2EE-palvelimet, Java Web Start
Oracle ADF Oracle Application Development Framework tarjoaa sovelluskehittäjille visuaalisen, deklaratiivisen ja ohjaavia työkaluja hyödyntävän lähestymistavan J2EE-ohjelmointiin Toteuttaa MVC-mallin mukaisen abstraktion erilaisten tietolähteiden/palveluiden ja käyttöliittymien välille Perustuu standardeihin tekniikoihin, yhteensopiva eri toimittajien sovellus- ja tietokantapalvelimien kanssa
ADF arkkitehtuuri
ADF business services Tietojen tallennus ja haut, O/R-kuvaus, transaktion hallinta ja liiketoimintalogiikan suorittaminen Toteutustavat: ADF Business Components EJB TopLink Web Services Java Beans
ADF view Tuottaa sovelluksen käyttöliittymän käyttäen Swing komponentteja (rich client) tai HTML/XML-sivuja (web/wireless) Toteutustavat: Swing + ADF JClient JSP ADF UIX
ADF controller Hallitsee sovelluksen suorituksen kulkua ja sivujen välistä navigointia websovelluksissa Toteutustavat: Apache Jakarta Struts
ADF model Yhdistää käyttöliittymän view- ja controller-kerrokset tietolähteisiin ja palveluihin Tarjoaa sovelluksille ja käyttöliittymätyökaluille yhtenäisen tavan käsitellä tietolähteitä Model-kerroksen muodostavat ADF data control ja ADF binding -objektit
II. ADF Business Components
ADF Business Components = BC4J (Business Components for Java) Sovelluskehys tietokantapohjaisten sovellusten sovelluslogiikan toteuttamiseksi Toteuttaa sovellusten peruspalvelut, mm.: O/R-kuvaus validointi autorisointi datan puskurointi transaktioiden hallinta sovellusmodulien poolaus
ADF Business Components Huomioi eri sovellusarkkitehtuurien (clientserver vs. 3-tier) ja käyttöliittymätyyppien (rich client vs. thin client) erityisvaatimukset Hyödyntää tietokannan ja SQL-kielen vahvuuksia tiedon haussa ja käsittelyssä Tukee eri toimittajien tietokantoja: Oracle, DB2, SQL Server, SQL92-tietokannat
Liiketoimintakomponentit Liiketoimintakomponentit toimivat sovelluksen tietolähteen rakenteen mallina Entiteettiobjektit esittävät tietolähteeseen tallennettavia objekteja (vrt. taulun rivi) validointi, lukitukset, lisäykset, päivitykset ja poistot Assosiaatiot kuvaavat entiteettien välisiä suhteita (vrt. tietokannan viiteavain) validointi, cascade-delete Domainit ovat erikoistuneita tietotyyppejä, joihin voi liittyä omaa validointilogiikkaa
Tietomallikomponentit Tietomallikomponentit toimivat sovelluksen käyttöliittymän tietomallina Näkymäobjektit hakevat ja puskuroivat tietolähteen dataa käyttöliittymää varten (vrt. SQL-kysely ja sen tulosjoukko) Näkymälinkit vastaavat näkymien tulosjoukkojen välisiä master-detail-suhteita Sovellusmodulit kokoavat sovelluksen käyttämät tietomallikomponentit yhteen ja tarjoavat rajapinnan sovelluskehyksen palveluihin
Komponenttien määrittely Komponenttien määrittelyt luodaan JDeveloperin työkaluilla XML-tiedosto määrittelee komponentin rakenteen ja perusominaisuudet Java-tiedostot (jos tarvitaan) sisältävät sovelluskohtaista logiikkaa ja kustomoivat sovelluskehyksen perustoimintoja Ajon aikana sovelluskehys instantioi määrittelyn mukaisia komponenttiobjekteja
Käyttöliittymä Yleiskuva Näyttö 1 Näyttö 2 Application Module View 1 View Link View 2 Association Entity 1 Entity 2 Tietokanta
III. ADF JClient
ADF JClient JClient-sovelluskehyksen sidosobjektit (binding) yhdistävät Swing-käyttöliittymäkomponentit ADF data control -rajapintaan Kirjastosta löytyy sidokset erilaisille komponenteille ja muutamia erikoiskomponentteja, esim.: tekstikenttä => näkymän valitun rivin attribuutti komboboksi => LOV-näkymä taulukko => näkymän tulosjoukko vierityspalkki => näkymän tulosjoukon vieritys graafit
JClient-näyttöjen luominen JClient-näyttöjä luodaan ja muokataan JDeveloperin työkaluilla: wizardin avulla luodaan näytön runko valitulle näkymäobjektille näyttöä muokataan UI-editorissa raahaamalla uusia kenttiä ja toimintoja kontrollipaletista ja muokkaamalla komponenttien ominaisuuksia Näytön komponentit ja tapahtumankäsittelijät luodaan Java-tiedostoon, komponenttien sidokset määritellään XML-tiedostossa
JClient-näyttöjen muokkaaminen Näyttöjen Java-koodia voi muokata käsinkin, tiettyjä sääntöjä noudattaen JClient-näytöt tukevat uudelleenkäyttöä tietyn näkymän päälle rakennetut näytöt voidaan hyödyntää toisessa sovelluksessa tai saman sovelluksen toisessa näkymäinstanssissa ajon aikana ADF sitoo UI-komponentit metadatan mukaan määräytyvään näkymäinstanssiin ja sovellusmoduliin
IV. Kokemuksia
Kokemuksia JDeveloper 10g: ADF-konsepti uusi, toistaiseksi vähän käyttökokemusta kokemusten perusteella erityisesti käyttöliittymien kehitysvälineet parantuneet konsepti tuntuu toimivalta JDeveloper 9i: Business Components: sovelluskehys on jo kypsää tekniikkaa, todettu toimivaksi oikeissa sovelluksissa JClient: lapsentauteja, mutta toimiva konsepti; puutteena generoidun koodin monimutkaisuus ja työkalujen kehittymättömyys
Puutteita Sovellusten lokalisointiin ei ole työkalua näkymien attribuuttien nimet, formaatit ja tooltipit sekä sovelluslogiikan virheilmoitukset voi lokalisoida helpohkosti, mutta lokalisoidut resurssit hajallaan Isompien sovellusten tekoon tarvitaan käytännössä vielä jonkinlainen oma sovelluskehys: pääikkuna, menut, yhteiset dialogit, sovellusten käynnistys, konfigurointikäytännöt, lokitoiminnot yleiset suunnitteluohjeet (ulkoasu, perustoiminnot) Ei vielä 4GL
Vinkkejä Hyödynnä välineitä aina kun mahdollista tuottavuus paranee, kun työvälineiden käyttö on hallinnassa sovellusten ylläpito helpottuu uuden tekniikan käyttöönotto helpottuu Kouluttaudu tekemällä koeprojekti tai osaprojekti Suunnittele sovellusten ulkoasu etukäteen Älä riko kehitysvälineiden tekemää koodia Suunnittele tietokanta ja liiketoimintakomponentit yhdessä, käyttöliittymä ja tietomallikomponentit yhdessä
Kysymyksiä? jarkko.happonen@eventizer.com www.eventizer.com