Tags: Applicatieontwikkeling | Java | Oracle | Oracle JHeadstart

Oracle JHeadstart – Veel meer dan een applicatie generator!

Door Steven Davelaar van Oracle Nederland

Dat een innovatie van Nederlandse bodem binnen Oracle kan gedijen blijkt wel uit Oracle JHeadstart. JHeadstart bestaat inmiddels meer dan 6 jaar. In deze periode heeft het product een grote ontwikkeling doorgemaakt, zowel inhoudelijk als op het gebied van het aantal wereldwijde klanten dat er gebruik van maakt. Binnenkort komt versie 10.1.3.3 op de markt, met wederom een aantal krachtige nieuwe functionaliteiten. Binnen de J2EE wereld maakt JHeadstart steeds meer naam, toch merken we in contacten met klanten en partners dat de kennis rondom JHeadstart wel eens te wensen overlaat. In dit artikel geven we nog eens een korte uitleg van wat JHeadstart is en wat de voordelen zijn en gaan we in op enkele hardnekkige misverstanden die bestaan over de toepasbaarheid van JHeadstart.

Wat is JHeadstart?

JHeadstart is een extensie op en in JDeveloper die boven op Oracle’s Application Development Framework (ADF) werkt. Oracle JHeadstart - ontwikkelproces ADF is een J2EE ontwikkel raamwerk waarmee op een visuele en declaratieve manier J2EE applicaties en services kunnen worden gebouwd die in een service georiënteerde architectuur kunnen worden opgenomen. JHeadstart automatiseert een aantal ontwikkeltaken in ADF waardoor een productiviteit bereikt kan worden die minimaal gelijk is aan wat ontwikkelaars van 4GL gereedschappen gewend zijn. JHeadstart bevat de JHeadstart Application Generator (JAG) die je in staat stelt om complexe schermen te genereren in plaats van ze met de hand een voor een te bouwen. Voor mensen die bekend zijn met Oracle Designer: JHeadstart genereert ADF applicaties zoals de Designer Forms Generator Forms applicaties genereert, maar dan aanzienlijk krachtiger en flexibeler!

Figuur 1 laat het globale ontwikkelproces met JHeadstart zien. In de eerste stap worden de ADF Business Components (ADF BC) gecreëerd met de standaard wizards in JDeveloper. ADF BC is de laag waarin onder andere de interactie met de database wordt geregeld en bedrijfsregels kunnen worden toegevoegd.

In stap 2 wordt een “default” Application Definition file aangemaakt, op basis van de data collecties die in ADF Business Components zijn gedefinieerd. De Application Definition file bevat de metadata waarin wordt vastgelegd hoe de te genereren schermen er uit moeten zien. JHeadstart biedt een mooie visuele editor bevat om deze Application Definition file te onderhouden.

JHeadstart Application Definition Editor

Voor een willekeurige data collectie kan worden aangegeven hoe de data op een of meer pagina’s getoond moet worden (bijvoorbeeld een summary en detail view, de zogenaamde “table-form” layout stijl), en welke operaties in welke pagina zijn toegestaan (insert, update, delete, advanced search, quick search). Per item binnen de data collectie kan worden aangegeven hoe en op welke pagina het moet worden getoond. Ook “unbound items” kunnen worden gedefinieerd om, in Forms termen, “control block” functionaliteit te realiseren. De manier van werken met deze editor is intuïtief en heeft veel weg van het ontwikkelen met Oracle Designer en Oracle Forms. Groot voordeel is dat diepgaande Java kennis niet nodig is om snel productief te zijn, dit maakt een overstap van een 4GL omgeving naar een op Java gebaseerde omgeving gemakkelijker.

Stap 3 bestaat uit een iteratief proces van genereren, aanpassen van de metadata, aanpassen van de generator templates en opnieuw genereren totdat het gewenste eindresultaat is bereikt. Het gebruikvan de generator zorgt ervoor dat layout stijlen van de pagina’s consistent blijven, iets wat bij het ontwikkelen van pagina’s middels drag en drop door verschillende ontwikkelaars nog wel eens een probleem vormt.

Wat voor functionaliteit levert JHeadstart?

JHeadstart levert een breed scala aan functionaliteiten. De generator automatiseert de implementatie van simpele tot hele complexe user interface patronen. Simpele CRUD (Create, Retieve, Update, Delete) schermen, maar ook complexe multi-page wizard schermen. Table en form layouts, maar ook table overflow styles, stacked item groups, tree layouts, shuttles en grafieken. Tekst en datum invoer velden, maar ook file upload en download, images en geavanceerde list of values (met validatie a la Oracle Forms).

Tree en stacked overflow right

Daarnaast biedt JHeadstart uitgebreide ondersteuning voor meertaligheid en voor fijnmazige role-based of permission-based security op basis van JAAS (Java Authentication and Authorization Services) en/of met gebruik maken van “eigen” applicatie tabellen die de beveiligingsinformatie bevatten.

Al deze functionaliteiten kunnen binnen enkele minuten worden gegenereerd door de JHeadstart Application Generator. Toch wordt geen enkele regel Java code gegenereerd, alleen maar XML. Het geheim hiervan zit in de JHeadstart runtime library. De JHeadstart runtime library is eigenlijk één grote verzameling van “best practice” technieken voor het werken met ADF. De meeste technieken zoals beschreven op populaire ADF blogs zitten standaard al in JHeadstart. De runtime library bevat onder andere een uitgebreide set van generieke user interface componenten, die door de JHeadstart Application Generator aan elkaar worden geknoopt en geconfigureerd in JSF configuratie bestanden (JSF managed beans). Deze architectuur leidt ertoe dat standaard JHeadstart functionaliteit heel gemakkelijk aangepast of uitgebreid kan worden, door eigen subclasses van de JHeadstart runtime classes te maken en de generator te configureren deze subclasses te gebruiken.

100% Generatie?!

De hoeveelheid functionaliteit die JHeadstart levert is indrukwekkend, maar misschien wel de mooiste feature is de volledige aanpasbaarheid van de generator output. Alles wat JHeadstart genereert wordt bepaald door de Velocity generator templates waarin “tokens” staan die vervangen worden door dynamische content op basis van de Application Definition metadata. Voor elk standaard JHeadstart template kan de ontwikkelaar een eigen “custom template” in de plaats laten komen. Dit geeft totale controle over wat er precies wordt gegenereerd en betekent ook dat er geen grenzen zijn aan wat je kunt genereren. Althans, alles wat je met de hand kan bouwen, kun je ook genereren door het gebruik van deze custom templates.

Inderdaad, 100% generatie is dus heel goed mogelijk, ook voor zeer complexe applicaties met een afwijkende look and feel. Alle JHeadstart projecten die door Oracle Consulting worden uitgevoerd bewijzen dat 100% generatie mogelijk is, en ook veel van onze klanten en partners krijgen dit voor elkaar, terwijl 100% generatie vaak helemaal niet het uitgangspunt was. In de praktijk blijkt het werken met custom templates zo simpel en krachtig dat 100% generatie vrij makkelijk gehaald wordt. Nu is dat zeker geen doel op zich, het is ook heel goed mogelijk om gegenereerde pagina’s met de hand af te bouwen in JDeveloper en dan een vlaggetje te zetten dat de pagina niet meer opnieuw wordt gegenereerd. Dan gaan echter belangrijke lange termijn voordelen deels verloren en wordt agile ontwikkelen lastiger, zoals in de twee volgende paragrafen wordt besproken.

Lange termijn voordelen

Een veel gehoorde klacht van klanten is dat in de J2EE wereld de ontwikkelingen zo snel gaan dat een systeem dat net klaar is, alweer verouderd is wat betreft de technologie. Daar zit zeker een kern van waarheid in. In de 6 jaar dat JHeadstart nu bestaat, zijn drie technologieën voor de controller-laag gebruikt (MVC Framework, Struts en nu JSF) en eveneens drie technologieën voor de view laag (UIX, Struts JSP’s, en nu ADF Faces). Zonder gebruik van JHeadstartis een overgang naar een nieuwe technologie meestal een tijdrovende aangelegenheid, al probeert Oracle hierbij te helpen met bijvoorbeeld het leveren UIX naar ADF Faces upgrade scripts. Als JHeadstart is gebruikt voor het ontwikkelen van de applicatie, dan zijn dergelijke technologie migraties aanzienlijk sneller, eenvoudiger en dus goedkoper. Doordat het uiterlijk en gedrag van de applicatie technologie onafhankelijk is vastgelegd in de Application Definition file, kunnen klanten een Struts/UIX applicatie vrij eenvoudig migreren door opnieuw te genereren met JHeadstart release 10.1.3.

En hoewel de JSF standaard voor meer rust gaat zorgen in de J2EE wereld, gaan de ontwikkelingen binnen JSF gewoon door. Oracle komt straks met een nieuwe release 11 van ADF Faces (preview releases hiervan zijn al beschikbaar), waarin echt rijke user interface componenten zitten, waarmee de user interface mogelijkheden van bijvoorbeeld Oracle Forms zelfs overtroffen worden (bv. de kolom volgorde in een tabel wijzigen met drag en drop). Met JHeadstart 10.1.3.x gegenereerde applicaties kunnen straks direct profiteren van deze nieuwe user interface elementen door het opnieuw genereren van de applicatie met JHeadstart release 11. Alleen de eigen gemaakte “custom” templates dienen handmatig te worden aangepast voor de nieuwe release. Met andere woorden: nu starten met JHeadstart 10.1.3.3 is de beste manier om je voor te bereiden op de lang verwachte komst van JDeveloper release 11.

Agile ontwikkelen

Agile, iteratief, incrementeel, timeboxing, rapid application development, extreme programming, hoe we het ook noemen, het stelt allemaal hoge eisen aan de ontwikkelomgeving. De tijden dat een analyse fase resulteerde in 2 meter papier en de gebruikers vervolgens (meestal blind) hun handtekening zetten om vervolgens een maand of 6 te moeten wachten op iets (niet goed) werkends, liggen grotendeels achter ons. Maar voor een moderne aanpak van systeemontwikkeling zijn wel gereedschappen nodig waarmee snel prototypes gemaakt kunnen worden die kunnen evolueren naar een werkend systeem. Wijzigende systeemeisen zijn nu regel in plaats van uitzondering (“embrace change”), dus de aanpasbaarheid en flexibiliteit van een systeem zijn belangrijker dan ooit. Zonder te overdrijven kunnen we stellen dat Oracle ver vooroploopt in de J2EE wereld met het ondersteunen van deze manier van ontwikkelen met de combinatie JDeveloper, ADF en JHeadstart. En ook bij meer traditionele klanten waar nog erg “waterval” wordt gewerkt, hebben we ervaren dat het hele systeem regelmatig opnieuw gegenereerd wordt als gevolg van (toch nog) wijzigende requirements.

Overgang van Designer/Forms naar ADF

Oracle publiceert heel veel materiaal op OTN om de concepten achter J2EE en ADF uit te leggen aan Forms/4GL ontwikkelaars en zodoende deze groep te verleiden de overgang naar ADF te maken. Het JHeadstart team binnen Oracle Consulting heeft de ADF-JHeadstart workshop ontwikkeld waar veel mensen uit deze groep op afkomen. We hebben deze workshop al vaak gegeven en het is iedere keer weer leerzaam om te zien hoe groot de stap voor deze mensen naar ADF toch nog is. Als ze dan na 3 dagen ploeteren eindelijk met JHeadstart mogen beginnen, slaat de scepsis razendsnel om in ongebreideld enthousiasme. JHeadstart generereert in een mum van tijd wat ze daarvoor met bloed, zweet en tranen zelf probeerden te bouwen. Toch zijn die eerste 3 dagen van de workshop erg belangrijk: een goed begrip van hoe ADF werkt, is essentieel om de kracht van JHeadstart ten volle te benutten. Vergelijk het met het genereren van Oracle Forms vanuit Designer, ook daar geldt: hoe beter de kennis van Oracle Forms en PL/SQL, hoe meer er door middel van custom templates en libraries uit de Forms Generator gehaald kan worden.

Oracle adviseert om Forms applicaties stap voor stap te integreren in een SOA-omgeving in plaats van ze in het geheel over te bouwen in ADF. De laatste tijd zien we dat veel klanten bij deze stapsgewijze integratie ook delen van de originele Forms applicatie willen overbouwen in ADF. De vraag naar hulpmiddelen die deze Forms (deels) geautomatiseerd kunnen migreren naar ADF is sterk toegenomen. Dit is de reden van de belangrijkste nieuwe feature in de aankomende JHeadstart 10.1.3.3 release: de JHeadstart Forms Migrator (JFM). Met de JFM kunnen rechtstreeks Oracle Forms .fmb files (al dan niet gegenereerd met Oracle Designer) worden ingelezen en die worden dan gemigreerd naar ADF. De JFM creëert de ADF Business Components en de JHeadstart metadata (Application Definition) op basis van de Forms definities. Vervolgens kan de JAG worden gedraaid om de web applicatie te genereren. De PL/SQL code in de Forms wordt als documentatie toegevoegd aan de Application Definition zodat snel een overzicht kan worden verkregen van de custom logica die handmatig moet worden gegenereerd. Planning is dat toekomstige versies van JHeadstart verdere ondersteuning zullen gaan bieden voor de migratie van PL/SQL logica, bijvoorbeeld door het verplaatsen van de code naar de database, of door het parsen naar Java en verplaatsen naar de juiste ADF BC methode of JSF managed bean.

JHeadstart in een SOA wereld

JHeadstart gebruikt ADF Business Components; een framework dat bij uitstek geschikt is voor communicatie met tabellen in een relationele database. Een hardnekkig misverstand is dat JHeadstart hierdoor ongeschikt zou zijn om binnen een SOA architectuur te gebruiken. Zo hebben we recent een project met JHeadstart afgerond waarbij web transacties moesten leiden tot het verzenden van een XML bericht. Deze web schermen zijn volledig gegenereerd met JHeadstart, de onderliggende ADF Business Components waren met wat generieke code zo aangepast dat ze XML berichten verstuurden in plaats van DML statements naar de database. Het geheim zit in dit geval dus in het vaak onderschatte ADF BC framework. Dit framework biedt naast communicatie met relationele databases uitgebreide ondersteuning voor het lezen en aanmaken van XML bestanden. JHeadstart release 11 zal in het teken staan van verdere integratie binnen een SOA. Denk hierbij aan meer rechtstreekse ondersteuning van Web Services. Naast groepen en domeinen gebaseerd op ADF BC View Objecten kunnen deze ook op web services gebaseerd worden. Daarnaast staat integratie met de Human Workflow component van BPEL op de planning. Met JHeadstart kunnen specifieke takenlijsten “op maat” gegenereerd kunnen worden in de look en feel van de betreffende applicatie.

Samenvatting

Met JHeadstart kunnen uitermate krachtige best-practice web applicaties gebouwd worden die moeiteloos in een SOA omgeving integreren. De belangrijkste voordelen van JHeadstart op een rijtje:
  • Verhoogt de developer productiviteit. Vergemakkelijkt de overstap van 4GL naar een op Java gebaseerde omgeving.
  • Ondersteunt een moderne manier van ontwikkelen.
  • Generatie zorgt voor een consistente applicatie.
  • Applicaties ontwikkeld met JHeadstart zijn makkelijk te onderhouden, snel aan te passen en upgrades naar nieuwe versies of zelfs nieuwe technologieën is met JHeadstart snel en eenvoudig.
  • De JHeadstart Forms Migrator maakt het mogelijk om Oracle Forms geautomatiseerd te migreren naar ADF.

Zelf JHeadstart uitproberen?

Ben je door dit artikel enthousiast geworden en wil je zelf wel eens ervaren hoe krachtig JHeadstart is? Dat kan gemakkelijk. Steve Muench heeft een uitgebreid tutorial geschreven dat begint met het installeren van JHeadstart en eindigt met het genereren van de meest geavanceerde features. Voorkennis van Java of ADF is niet vereist. Je kunt de tutorial vinden met Google zoekterm: “JHeadstart Tutorial”. Algemene informatie over JHeadstart is te vinden via Google zoekterm “JHeadstart Product Center”.

Lees meer over Oracle Nederland B.V.
Ga terug naar We Love IT uitgave #3 - 2008
Advertentie