Ervaringen met Oracle ADF en JHeadstart

Al een paar maanden geleden zijn wij (Jurn en Freek) naar een presentatie geweest van compleet andere technologie dan die we normaal gebruiken binnen finalist. We zijn naar een demonstratie/workshop van Oracle ADF in combinatie met JHeadstart geweest bij onze collega’s van AMIS. De demonstraties liepen echter zodanig uit, dat er geen tijd en ruimte was voor de workshop.

Onze bevindingen willen we met jullie delen. Ten eerste wordt er een uitleg gegeven van wat Oracle ADF en JHeadstart zijn, waarna we puntsgewijs alle voor- en nadelen opsommen.

Oracle ADF

De belangrijkste onderdelen van de Oracle product portfolio ten aanzien van de productiviteit van Java/J2EE applicatie ontwikkeling zijn:

  • ADF Business Components – ook wel BC4J (Business Components for Java); dit is een framework dat relationele data en services in object-vorm beschikbaar stelt aan Java applicaties;
  • Oracle Toplink – Toplink biedt een POJO (Plain Old Java Objects) gebaseerd framework dat relationele data en services in object-vorm beschikbaar stelt aan Java applicaties;
  • ADF UIX – UIX staat voor User Interface XML, en biedt een declaratief, XML gebaseerd mechanisme om User Interfaces te definiëren; de UIX rendering engine kan op basis van deze definities HTML pagina’s genereren maar bijvoorbeeld ook WML en cHTML;
  • JDeveloper – JDeveloper biedt naast de standaard ontwikkelomgeving voor Java code ook visuele editors voor ondermeer UIX, JSP, HTML, CSS en Struts en wizards voor BC4J, WebServices en Toplink.
  • JHeadstart –JHeadstart is een op standaard technologieën zoals Struts, Toplink, ADF BC, JSP en UIX gebaseerd framework.

Met bovenstaande componenten heeft Oracle een geïntegreerde ontwikkelomgeving. Sinds April 2004 is het Oracle ADF (Application Development Framework) in productie, als onderdeel van JDeveloper 10g. ADF biedt faciliteiten om data elementen die door het Model beschikbaar worden gesteld – zoals Attributen of Methodes van Objecten, Properties van JavaBeans en Methodes binnen WebServices – te koppelen aan de View pagina’s (meestal JSP of UIX).

JHeadstart voor ADF

Dit is het punt waar JHeadstart zijn intrede doet. Waar Oracle Designer aan de ontwikkeling van Oracle Forms een grote mate van standaardisatie en productiviteit heeft toegevoegd door ondermeer het centraal en declaratief vastleggen van eigenschappen die door generatie op vele plaatsen in de applicatie kunnen worden toegepast, doet JHeadstart datzelfde voor ADF!

In het kort, JHeadstart is:

  • Een generator die op grond van declaratieve applicatiedefinities een ADF applicatie genereert;
  • Een tool dat bestaande Forms Modules uit Oracle Designer migreert naar de ADF Technologie;
  • Een verzameling Best Practices voor het gebruik van ADF Technologie bij de ontwikkeling van web applicaties;
  • Een verzameling van runtime componenten die de applicatie ondersteunen, ondermeer de ‘data binding’ - de koppeling tussen de View en Controller enerzijds en het Model anderzijds.

JHeadstart in de praktijk

Ik zal hieronder proberen overzichtelijk te maken hoe bruikbaar Jheadstart voor bepaalde projecten is. Hiervoor zal ik de grootste voor en nadelen opsommen.

Voordelen

Volledig vanuit generatie
De mooiste feature van Jheadstart is wel dat het een applicatie 100% vanuit Jdeveloper kan genereren. Het is dus niet alleen bruikbaar voor initiële generatie, maar er kan ook incrementeel gegenereerd worden en dus ook na de livegang van de applicatie nog verder vanuit de Jheadstart templates gegenereerd worden. Het enige dat de ontwikkelaar hoeft te doen is het datamodel te bouwen, deze te koppelen met Jheadstart, aan te geven welke schermen er komen aan de hand van de tabellen, layout opmaken voor de klant en eventuele custom frontend templates te maken.

Hoge productiviteit
Doordat alles bij elkaar geklikt kan worden, is het een relatief productieve tool.

Veel werk uit je handen genomen
Veel van het ingewikkelde werk wordt je door de Jheadstart generatie uit handen genomen. Hierdoor wordt de ontwikkelaar minder zwaar belast, zowel qua benodigde kennis op bepaalde vlakken als met redundant werk.

Support van Oracle
Omdat Jheadstart door de Nederlandse vestiging van Oracle in elkaar gezet is, is er via Oracle direct support vanuit de ontwikkelaars van de tool mogelijk. Het voordeel hiervan is dat men met nederlands ontwikkelaars te maken heeft die telefonische direct te bereiken zijn via Oracle zonder tussenkomst van het Oracle callcenter (wat de nodige tijd in beslag kan nemen).

Nadelen

Zoals een bekende coach ooit zei: “Elk voordeel heb zijn nadeel�.

Oracle lock-in
Bij veel lagen in de ADF tool stack is er alleen keuze uit Oracle producten. Oracle is de enige database die goed ondersteund wordt. Jdeveloper is de enige IDE die gebruikt kan worden omdat Jheadstart alleen als Jdeveloper custom plugin beschikbaar is. Daarnaast is ADF Faces het meest bruikbare voor de frontend templates (ook al is dit wel open source).

Licentie kosten
Oracle is een closed source organisatie en voor de Oracle database, Jdeveloper en per developer) Jheadstart zelf zullen (redelijk prijzige) licenties aangeschaft moeten worden.

Leercurve
Omdat we het hier toch over een zeer specifieke tool hebben, heeft deze een redelijk steile leercurve. Er moet veel geconfigureerd worden, wat door de ontwikkellaar zich allemaal meester gemaakt moet worden. Ook zitten er een paar hele rare dingetjes die goed gezet moeten worden in Jdeveloper, wil je Jheadstart helemaal goed krijgen.

Niet 100% naar je hand te zetten
Omdat het helemaal gegenereerd is, is het bijna onmogelijk het helemaal zo te maken als de klant zou willen. Hier moet al in het offerte traject al rekening mee gehouden worden en de klant moet flexibel genoeg zijn om met het gene dat Jheadstart gegenereerd gelukkig te zijn.


5 reacties »

  1. Hoi Jurn,

    Je verhaal is slechts ten delen waar. Ik moet het hier en daar toch nuanceren:

    Jdeveloper is niet gratis. Uit ervaring kan ik vertellen dat je de kosten voor deze licentie (tov een tool als Eclipse) binnen 1 week terug hebt verdiend.
    JHeadstart is wel gratis.

    - vendor Lock-in.–> Er is ook een plugin voor Eclipse. Verder is dit de enige Stack die goed gebruik kan maken van database logica die door Oracle wordt aangeboden zoals triggers, plsql en stored procedures (in beperkte mate ook aanwezig in MySql en Postgress). Hierdoor kan je maximaal gebruik maken van de kracht van de database (iets dat moeilijk gaat in frameworks als Hibernate of EJB3)Developers die nu al met designer aan het werk zijn kunnen moeiteloos overstappen. Dus de vraag is of dit een nadeel is.

    - Met JHeadstart in combinatie met Custom Templates kan je elk mogelijk design tot in detail uit genereren. Kijk maar naar het artikel op http://technology.amis.nl/blog/?p=1338).

    Robbrecht van Amerongen - maart 1, 2007 1:14

  2. Even een correctie. Volgens mijn gegegevens is Jdeveloper gratis en moet je Jheadstart kopen.

    Menk Slot - april 14, 2007 21:22

  3. @Robbrecht:

    Persoonlijk vind ik dat triggers en procedures vooral nuttig zijn voor het bewaken van de dataintegriteit, en eventueel voor het verbeteren van de performance. Zeker vanuit dat standpunt is Hibernate echt geen beperkende factor in het gebruik ervan.

    Verder kun je je afvragen waar de tijd voor het ontwikkelen van een applicatie precies in gaat zitten; mijn persoonlijke mening is dat dit toch vooral zit in de communicatie met de klant (afstemmen, deployment, testen) en in veel gevallen de gebruiksinterface.

    peter - april 24, 2007 8:56

  4. Ik kan er niet direct een oordeel over geven, aangezien ik nog cursus volg, oracle java, maar vindt het wel interessant omdat jullie voor en nadelen tonen. We horen altijd het is het van het, en ik was het aan het vergelijken met apex. Vindt ik wel interessant maar heeft zijn beperkingen, is goed voor excell en acess te vervangen, en andere dat soort zaken. Web applicaties ook vermoed ik; maar vindt dan met het beetje dat ik weet, adf/jheadstart toch geschikter.

    Floris Vermeir - mei 14, 2007 9:02

  5. JHeadstart is inderdaad niet gratis en JDeveloper wel, zoals Menk Slot al heeft aangegeven.

    Met de huidige versie van JHeadstart (10.1.3.1) kan tot een diep niveau aangegeven worden welke componenten, niet opnieuw gegenereerd moeten worden, zodat wijzigingen in gegenereerde code, niet overschreven worden. Je bent dus NIET verplicht om alles voor 100% te genereren, dus kun je het wel voor 100% naar jouw hand zetten.

    meer info op:http://www.oracle.com/technology/products/jheadstart/jhs10131.html

    Helmut Steeman - juni 13, 2007 16:19

Reageer

RSS feed for comments on this post · TrackBack URI