Oracle producten kennen soms releases die echte mijlpalen zijn. Release 7.0 van de database was er zo een, net als 9iR2. JDeveloper 11g is ook zo’n mijlpaal release.

JDeveloper 11g - mijlpaal release biedt Web 2.0 én productiviteit

Door Luc Bors en Lucas Jellema

Oracle producten kennen soms releases die echte mijlpalen zijn. Release 7.0 van de database was er zo een, net als 9iR2. En ook Designer 6i en Forms 4.5. Een release waarmee een nieuw plateau in functionaliteit wordt bereikt, die als het ware een nieuwe wereld ontsluit. Een release die al een flinke tijd in de lucht hangt, waar met spanning en hoge verwachtingen naar uitgekeken wordt en die altijd net iets later komt dan je had gedacht.

JDeveloper 11g is ook zo’n mijlpaal release. Deze release is uitgekomen in oktober 2008, maar heeft in verschillende Technical Previews al bijna een jaar rondgezongen. Nog langer is deze release onderwerp van vaak opgewonden gesprekken geweest. En met JDeveloper 11g moet ook ADF 11g genoemd worden: JDeveloper 11g is de design time ontwikkelomgeving waarbinnen applicaties worden gebouwd, mogelijk met en op basis van het Application Development Framework. JDeveloper 11g is een uitstekende IDE maar het echt bijzondere van deze 11g release is ADF 11g, het framework dat productief en gestructureerd ontwikkelen van rijke web applicaties naar een nieuw niveau tilt.
Dit artikel beschrijft JDeveloper en ADF 11g en legt uit waarom en voor wie deze release een mijlpaal kan blijken.

Wat maakt deze release tot een mijlpaal?

Dit is de eerste release van JDeveloper (en ADF) die op echt grote schaal - duizenden ontwikkelaars - door de Oracle Applications ontwikkelgroepen wordt gebruikt. Fusion Applications wordt gebouwd met JDeveloper 11g, en dat geldt ook voor onderdelen van diverse andere producten zoals Enterprise Manager, WebCenter, BAM en de overige Oracle Applications producten.

In deze release zien we de invloed van die interne ontwikkelgroepen duidelijk terug. In de afgelopen twee jaar heeft het JDeveloper team nauw samengewerkt met de Fusion Apps teams die stevige eisen stelden aan onder meer de aantrekkelijkheid en rijkheid van de applicaties die ADF 11g produceerde en uiteraard de functionaliteit van die applicatie. Minstens zo belangrijk - begrijpelijk gezien de enorme aantallen ontwikkelaars - zijn de leercurve om ontwikkelaars op gang te krijgen en de productiviteit die ontwikkelaars en ook teams in hun onderlinge samenwerking kunnen bereiken. Een paar procent productiviteitsverbetering voor enkele duizenden ontwikkelaars betekent heel veel kostenbesparing!

Oracle JDeveloper 11g

Veel van de nieuwe functies in JDeveloper en vooral ADF zijn te herleiden tot de wensen en eisen van de Fusion Applications development teams. Sommige daarvan zijn heel specifiek en voor gewone applicaties niet of nauwelijks relevant, maar heel veel van die functies kunnen ook wij zinvol inzetten.

JDeveloper 11g en ADF 11g zijn in enkele kernthema’s te karakteriseren:

  • Web 2.0, rijke en aantrekkelijke user interfaces
  • Herbruikbaarheid, structuur en beheerbaarheid van het ontwikkelproces
  • Declaratief, productief ontwikkelen veelal vanuit het Model
  • Data visualisatie en grafische representatie

We zullen kort elk van deze thema’s onder de loep nemen.

Rijk en Aantrekkelijk

Met ADF Rich Client Components (ADF-RC) wordt het ontwikkelen van een RIA (Rich Internet Application) een stuk eenvoudiger dan met de vorige versie van ADF. Out of the box zien de componenten er al een stuk mooier uit dan in 10.1.3, het zijn er meer dan in 10.1.3 en ze kunnen ook meer. Zo is er bijvoorbeeld de verbeterde table component die default de mogelijkheid bevat om te sorteren, filteren en kolommen te verplaatsen of de breedte ervan te wijzigen. Ook het selecteren van een rij is verbeterd. In 10.1.3 moest nog veel moeite gedaan worden om met een muisklik, of met de pijltjestoetsen door een tabel te bladeren, maar in 11g is dit standaard functionaliteit geworden.

Met de nieuwe ADF 11g componenten kan bijvoorbeeld een file-explorer (verkenner) worden gemaakt. Deze maakt het verschil tussen web 1.x en ADF 10.1.3x user interface aan de ene kant en Web 2.0 en ADF 11 aan de andere kant goed duidelijk.

ADF 11g

De ADF 11g file explorer bestaat eigenlijk uit twee gekoppelde componenten. Aan de linkerkant een treecomponent voor de ‘folder view’, en aan de rechterkant een daaraan gekoppelde tabel, voor de inhoud van de folders. In een oogopslag ziet de eindgebruiker de inhoud van de folder. Omdat er ook gebruik gemaakt kan worden van drag-and-drop is het eenvoudig om bestanden te verplaatsen van de ene naar de andere folder. Het werkt eigenlijk hetzelfde als de verkenner van bijvoorbeeld Windows XP. En dat is nou precies een van de kenmerken van Web 2.0: applicaties in de browser, die werken zoals men dat gewend is op de desktop.

Componenten zoals sliders, spinners, panel splitters, de nieuwe rijkere panelbox en functionaliteit zoals client side messaging geven een applicatie niet alleen een mooier en een professioneler uiterlijk, maar ze voegen ook degelijk iets toe aan het gebruikersgemak.

Bij het gebruik van nieuwe componenten moet wel goed worden nagedacht over de noodzaak ervan. Soms is het beter om een andere oplossing te kiezen. Eentje die misschien niet mooier is, maar voor de eindgebruiker wel een stuk prettiger. Neem nou het gebruik van drag-and-drop, één van de nieuwe mogelijkheden die ADF 11g biedt. Drag-and-drop maakt het leven van de eindgebruiker aangenaam. Maar het kan voor de gebruiker tamelijk bewerkelijk worden om bijvoorbeeld uit een lijst een aantal elementen via drag-and-drop te verplaatsen naar een andere component. Dubbel klikken is dan misschien wel een veel betere optie.

De Query component is ook een voorbeeld van een krachtige nieuwe feature. Hiermee kan eenvoudig geavanceerde zoekfunctionaliteit worden toegevoegd aan de applicatie. Met JHeadstart was deze functionaliteit in 10.1.3x al te realiseren, maar zonder JHeadstart was dit behoorlijk complex en bewerkelijk. Nu is dit een standaard component die simpel aan de applicatie kan worden toegevoegd.

Search for Employees

De gebruiker kan zelf instellen hoe gezocht moet worden. Hij kan velden toevoegen aan de zoekcriteria, mits deze velden daarvoor zijn geconfigureerd. Vervolgens kunnen deze aangepaste zoekvragen ook bewaard worden.

Browser pop-up windows zijn irritant. Ze zijn lelijk, botsen met pop-up-blockers in je browser en bieden bepaald geen Web 2.0 ervaring. Met ADF 11g RichFaces zijn ze ook niet meer nodig. Voor datumselectie of List of Values - typisch situaties waarin een pop-up window wordt gebruikt - is in 11g een nieuw type pop-up beschikbaar; deze opent niet een apart venster maar gebruikt een ‘floating DIV’ die onderdeel vormt van de pagina.

Floating Div

Deze pop-up component kan gekoppeld worden aan acties zoals rechter-muisklik en op die manier op diverse plekken in de pagina ondersteunende informatie beschikbaar stellen. Gebruik van pop-ups in ADF applicaties kan veel meer informatie ‘aan de vingertoppen van de gebruiker’ brengen dan er eigenlijk op een pagina past.

Voor een ontwikkelaar is het bijna kinderspel om pop-ups in de applicatie op te nemen. De stappen zijn: sleep een pop-up component naar de pagina, definieer de inhoud van het element (net als het definiëren van alle andere pagina-elementen) en tenslotte bepaal bij welke actie op welk ander element de pop-up moet worden getoond.

Een belangrijk aspect van een aantrekkelijke applicatie is de look & feel. In eerdere releases van ADF was het moeilijk om een consistent en vooral aantrekkelijk en op de situatie afgestemd uiterlijk van de applicatie te realiseren. Er was het ‘skinning’ mechanisme maar dat was lastig te gebruiken. In de 11g versie is skinning als mechanisme vanaf het begin in de visuele componenten ingebouwd in plaats van er later aan toegevoegd zoals voor de 10g componenten gold. Met 11g skinning is er veel meer controle over vrijwel alle visuele eigenschappen van individuele componenten en is het bovendien eenvoudiger geworden om die controle toe te passen.

Skins helpen met kenmerken van individuele componenten en containers, zoals kleur, font, decoratie en alignment. Ze doen niets voor de structuur van pagina’s: waar staan zaken als menu, titel, sidebar, header, footer, logo en de pagina-inhoud. In ADF 11g zijn de Page Templates ingevoerd om die uitdaging aan te kunnen. In een page template wordt de structuur van de applicatie-pagina’s bepaald - alsmede de generieke inhoud - logo, copyright boodschap, globaal menu etc. Individuele pagina’s (kunnen) worden gebaseerd op zo’n template; pagina’s geven aan welke inhoud ze in de facetten van het template willen inbrengen. Op run-time worden template en deze facet-inhoud van de pagina gecombineerd om een resultaat op te leveren aan de browser. Page templates kunnen op ieder gewenst moment aangepast worden; met zo’n aanpassing kunnen alle pagina’s van uiterlijk veranderen, zonder dat de ontwikkelaar zelfs maar één pagina hoeft te wijzigen.

Rijke beperkingen

Internet Explorer 6 wordt niet ondersteund met de RichFaces (wel met de gewone Trinidad ADF Faces componenten). Er zijn nog veel bedrijven en gebruikers die gebruikmaken van Internet Explorer 6; dit is voor de korte termijn - IE 6 gebruik loopt wel fors terug - een serieuze beperking.

Helaas is het nog steeds lastig, zo niet onmogelijk, om verschillende frameworks met elkaar te combineren. Oracle lijkt niet van plan om op korte termijn ondersteuning te bieden voor FLEX, Silverlight of JavaFX in JDeveloper. Een naadloze integratie met andere JavaServer Faces libraries zoals JBoss RichFaces moeten we op de korte termijn ook niet verwachten - maar dat geldt andersom precies zo.

Hergebruik en Structuur

Productiviteit kan niet meer verhoogd worden dan door hergebruik: iets niet opnieuw hoeven ontwikkelen is altijd efficiënter dan - hoe snel dan ook - iets meermaals moeten bouwen. Hergebruik en ontwikkeling van applicaties via herbruikbare componenten is een belangrijke doelstelling van ADF 11g. De page templates die we eerder besproken hebben zijn daarvan een voorbeeld: de structuur wordt centraal bepaald en beheerd en in individuele pagina’s toegepast. De skins doen hetzelfde voor de look & feel.

Het meest belangrijke mechanisme voor hergebruik is de Task Flow. Een Task Flow is een bundeling van een of meerdere pagina’s, de navigatie tussen die pagina’s en de operaties die tussen de pagina-overgangen moeten worden ondernomen. Een wizard - train in ADF jargon - is een specifiek voorbeeld van een task flow, maar iedere combinatie van samenhangende pagina’s kan je als Task Flow beschouwen. Op het niveau van een Task Flow kan ook transactie management, exceptie afhandeling, bookmarking en savepoint management worden gedaan. Een Task Flow kan een of meerdere input parameters definiëren die de koppeling tussen de aanroepende partij en de Task Flow bepalen. Task Flows kunnen als regio in andere pagina’s worden ingepast. Eén Task Flow kan zo op vele pagina’s worden hergebruikt.

Met PanelSplitters, Tabs en Pop-ups wordt binnen één pagina enorm veel functionaliteit aangeboden. Het ontwikkelen van een enkele pagina kan een nogal ingewikkelde taak zijn die door meerdere ontwikkelaars moet worden uitgevoerd. Task Flows zijn een uitstekend mechanisme om zo’n taak op te splitsen.

Declaratief en Model-gestuurd

Ontwikkelaars die ervaring hebben met Oracle Designer zullen in ADF 11g veel bekende elementen tegenkomen. Op verzoek van de Fusion Application development teams is de mate van declaratief, model-gestuurd ontwikkelen enorm toegenomen. Dat stelt ontwikkelaars zonder programmeerkennis in staat door middel van wizards en property palets vergaand de functionaliteit van de applicatie te bepalen. Validaties, AJAX-gedrag, selectie-lijsten, berekeningen, display eigenschappen, default waarden, database queries etc. kunnen op declaratieve wijze gespecificeerd worden.

Een tweede aspect van het model-gestuurd ontwikkelen is de doorwerking van de instellingen in alle pagina’s van de applicatie die de betreffende model-componenten gebruiken. Zoals in Oracle Designer de display instellingen bij een Table Definition doorwerken in alle Module Components die op de tabel gebaseerd zijn, zo hebben de instellingen bij een Entity of View Object effect op iedere pagina die de objecten ‘data binden’.

Data visualisatie en grafische representatie

De ADF 11g Data Visualization Tools zijn uitermate geschikt om data op een visuele manier te presenteren. DVT bevat onder andere grafieken, metertjes (gauges), Gantt charts en Geographical maps. Deze dragen sterk bij aan het Web 2.0 gevoel bij het tonen van data aan de eindgebruiker. DVT componenten zijn waardevol als een gebruiker snel een beeld moet krijgen van gegevens. Een grafische weergave van gegevens zegt vaak meer dan alleen een tabel met kale cijfertjes.

Grafieken kunnen gemaakt worden met data afkomstig uit een relationele database via ADF BC, en vanuit bijvoorbeeld een BAM server of BI server. Omdat het databound componenten zijn, kunnen ze met drag-and-drop vanaf het datacontrol palet worden gemaakt. De componenten zien er mooi uit (Flash of SVG) en ondersteunen interactie zoals drilldown, inzoomen en animatie.

Grafische representatie

Ook kunnen webservices gebruikt worden om grafieken van data te voorzien. In combinatie met de Geographical Map component kan zo een typische Web 2.0 Mashup worden gemaakt.

GeoMap

Overige kenmerken

JDeveloper 11g heeft WebLogic 10.3 (voorheen BEA) als geïntegreerde Application Server - en dus niet meer OC4J zoals we in eerdere versies van JDeveloper gewend waren. Voor de ontwikkelaar maakt dit overigens weinig uit.

In 1994 startte het Canadese bedrijf The Object People met een product dat TopLink heette en dat de brug vormde tussen relationele database en object model. In eerste instantie was dat een Smalltalk object model, later ook een Java model. In JDeveloper 11g levert Oracle de 11g release van TopLink, identiek aan EclipseLink 1.0.1. Dat laatste is de open source variant van TopLink. TopLink 11g is een alternatief - volledig volgens de EJB 3.0/JPA standaarden van het JEE platform - voor ADF Business Component bij het ontwikkelen van database gebaseerde ADF applicaties.

ADF Faces 11g is gebaseerd op de meest recente release van de JavaServer Faces standaard: 1.2.

Het Nederlandse complement op ADF - JHeadstart - zal op korte termijn ook voor 11g beschikbaar komen. Een belangrijke nieuwe component - al beschikbaar voor 10g maar wellicht nog waardevoller met 11g is de Forms2ADF converter die helpt om bestaande Forms programmatuur naar ADF 11g technologie over te brengen. Daarnaast maakt JHeadstart 11g volop gebruik van de RichFaces componenten en mechanismen als page templates en bounded task flows. Verder voegt JHeadstart een extra declaratieve, nog abstractere – technologie-onafhankelijke - laag toe in het applicatie ontwikkelproces. Deze laag zorgt er onder andere voor dat migraties van JHeadstart 10g naar 11g (betrekkelijk) eenvoudig kunnen verlopen en direct al volop 11g functionaliteit benutten. Dat laatste in tegenstelling tot de in JDeveloper ingebouwde ADF 10g naar 11g conversie die weliswaar een werkende applicatie oplevert, echter niet op basis van RichFaces maar nog met de Trinidad componenten.

Voor wie is JDeveloper 11g interessant?

JDeveloper en ADF 11g zijn natuurlijk van belang voor ontwikkelaars die nu al met ADF aan de slag zijn. Met de 11g release kunnen zij, grotendeels op basis van hun huidige kennis en ervaring, nog plezieriger en productiever aan de slag met aanzienlijk aantrekkelijker resultaten. Het is de logische volgende stap.

Ook Java ontwikkelaars buiten het Oracle technologie domein hebben met ADF 11g een goede reden ook eens de Oracle stack in overweging te nemen. De resultaten die met deze stack geboekt kunnen worden zijn zeer concurrerend vergeleken met alternatieve Java web ontwikkeltechnologieën. Daarnaast is de productiviteit en het gemak van ontwikkelen van de eerste 90% van de functionaliteit plezierig, omdat daarmee de bulk van de tijd kan worden besteed aan de meest geavanceerde features van een applicatie die vaak de leukste uitdaging vormen voor een programmeur. Het declaratieve ontwikkelen zal overigens de echte Java programmeur veelal niet enorm aanspreken - het kan handig zijn teams te vormen die elkaar onderling aanvullen in declaratief ontwikkelen en code schrijven.

Met ADF 11g kunnen applicaties worden ontwikkeld die alles kunnen wat Forms applicaties kunnen -dat kon met ADF 10g trouwens ook al. Daar bovenop is het ontwikkelen van een applicatie die exact hetzelfde kan als een bestaande Forms applicatie nu vrijwel even productief en declaratief (code vrij). De overstap voor Forms ontwikkelaars is een stuk eenvoudiger geworden: veel gebeurt vanuit het Model (sterk SQL georiënteerd) of op zeer 4GL, declaratieve wijze.

Daar bovenop kan met ADF 11g een aantal zaken veel makkelijker dan in Forms. Met minstens zo aantrekkelijke en zeker veel meer aan internet conventies aangepaste resultaten.

Ontwikkelaars die flirten met of al actief zijn in APEX zouden ADF 11g nog eens kunnen overwegen: de applicaties gebouwd met ADF 11g zijn toch weer een stapje geavanceerder en aantrekkelijker dan APEX applicaties en de wijze van ontwikkelen is minstens zo declaratief en productief. Zonder te programmeren bereik je in ADF 11g vergelijkbaar snel hetzelfde functionele resultaat als in APEX. (Natuurlijk is de deployment infrastructuur - je hebt een aparte applicatie server nodig - voor ADF applicaties wel complexer dan voor APEX applicaties!) En kan je er in ADF nog het nodige aan toevoegen.

JDeveloper 11g kan gratis gebruikt worden. Voor ADF is een run-time licentie nodig als de applicatie niet op een Oracle Application Server wordt gedeployed. Overigens overweegt Oracle om ook die run-time licentie los te laten (het echte geld wordt door Oracle toch niet met ADF verdiend).

Daarnaast zal de ADF RichFaces componenten-set aan het open source project Apache MyFaces Trinidad worden overgedragen, net als eerder met de ADF 10g Faces set gebeurd is. Daarnaast wordt mogelijk ook de ADF Controller aan Trinidad gedoneerd. ADF Model (de data binding laag) lijkt overigens niet op die manier vrijgegeven te zullen worden.

Aan de horizon

Ook een mijlpaal-release wordt kent een opvolger. De zojuist - oktober 2008 - verschenen 11g release wordt door het ontwikkelteam van JDeveloper aangeduid als de Boxer-release. Tegelijk met Fusion Middleware 11g - de release van ondermeer SOA Suite 11g - komt de Bulldog-release van JDeveloper. Deze release voegt functionaliteit toe die tijdens de Oracle Open World 2008 conferentie al werd gedemonstreerd:

JDeveloper 11g Bulldog is de design time omgeving voor ondermeer SOA Suite 11g - Composite Applications met BPEL, Rules, Mediator (voorheen ESB) en Human Workflow - en WebCenter 11g. Ook Oracle Data Integrator zal JDeveloper 11g als IDE gaan gebruiken.

Een van de thema’s van deze volgende release is Application Life Cycle Management - functionaliteit om het samenwerken in teams te ondersteunen en het beheren van meerdere releases binnen een OTAP-omgeving te faciliteren. Ingebouwde chat, koppelingen met MS Project, Subversion en Jira zijn voorbeelden van wat Bulldog zal bieden.

De integratie van ADF met SOA - bijvoorbeeld de uitwisseling van Business Events via het Event Delivery Network en de interactie met de Human Workflow Service voor het implementeren van een User Interface voor de taken in workflows.

Een belangrijk aspect - zeker voor Oracle Applications - is Customization & Personalization: faciliteiten om een applicatie aan te passen aan een organisatie, rollen en individuele gebruikers. Oracle zal in Fusion Middleware 11g de Meta-Data Services bieden - een generiek mechanisme om op run-time aanpassingen door te voeren op de ADF applicatie.

Ondersteuning van Mobiele devices voor ADF applicaties bestaat al maar zal in de volgende major release sterk worden uitgebreid. Ook de ‘desktop’ - rich client in plaats van Web Browser - wordt in deze release opgenomen. Concreet betekent dit dat een Excel-sheet een ADF client kan zijn, compleet met querien van data via ADF Data Controls en het off-line wijzigen van data in Excel die op een later moment weer gesynchroniseerd wordt met ADF en de achterliggende data service.

Voor gebruikers van Hyperion is de EssBase Data Control interessant. De ondersteuning van Active Data Sources - ook bekend als Server Push - bestaat nu in beperkte mate en wordt in Bulldog verder vervolmaakt. Daarnaast kunnen we uitbreidingen van de set Data Visualization components tegemoet zien, met ondermeer de Hierarchy Viewer voor de grafische weergave van hiërarchische data.

De huidige verwachting is dat deze release rond juni 2009 beschikbaar zal komen.

Conclusie

Organisaties die op een productieve, gestructureerde en model-gebaseerde wijze aantrekkelijke webapplicaties willen ontwikkelen zouden een serieuze blik moeten werpen op JDeveloper en ADF 11g. Deze release brengt ADF qua user interface - Web 2.0 gehalte - vooraan ten opzichte van andere Java webapplicatie ontwikkeltechnologie. Het ontwikkelen met ADF is inmiddels vergelijkbaar declaratief als Oracle Forms en - daarmee - ook vergelijkbaar productief. Het feit dat deze ADF 11g release ook het fundament vormt van onder meer Fusion Applications bevestigt de strategische betekenis ervan voor Oracle.

In andere woorden: ADF 11g laat ons mooie, aantrekkelijke webapplicaties ontwikkelen op een plezierige en gestructureerde manier zonder dat vanaf het eerste moment veel priegelig en weinig productief Java programmeerwerk nodig is. Het is leuk om tamelijk geavanceerde features – pop-up, drag & drop, grafieken, AJAX gebaseerde interactiviteit - in te bouwen. We kunnen alleen maar aanraden het ook eens te proberen.

Luc Bors en Lucas Jellema zijn ADF ontwikkelaars bij AMIS in Nieuwegein. Zie ook de ADF 11g artikelen op hun blog: technology.amis.nl/blog.