Follow Us on Twitter

Spring Plugin voor JDeveloper

September 2007 - Oracle kwam in de JavaOne conferentie van dit jaar met de introductie van de Oracle JDeveloper Extension for Spring. Eindelijk een JDeveloper plugin voor Spring! Dit lijkt een beetje vreemd omdat Oracle zijn eigen meta-framework heeft: Application Development Framework. Met de introductie van de plugin laat het JDeveloper team zien niet alleen oog te hebben voor zijn eigen framework. Het speelt ook in op nieuwe ontwikkelingen in de Java wereld.

JDeveloper Extension for Spring

De Oracle JDeveloper Extension for Spring bestaat uit een aantal tools die de integratie tussen Spring en JDeveloper vergemakkelijken. Zo worden, op het moment dat je de wizard start, automatisch de Spring libraries aan het project toegevoegd. Om het maken van een Spring configuratie bestand te vereenvoudigen is er een 'Spring bean configuration' wizard. Het configuratie bestand (ApplicationContext / BeanFactory) vormt de spil van een Spring applicatie. Hierin bepaal je hoe de verschillende componenten van een Spring applicatie met elkaar moeten samenwerken. Het Component Palette window bevat een groot aantal componenten die je door te slepen met de muis kunt toevoegen aan het bestand (drag & drop). De plugin biedt ook code completion. Na het typen van een ‘<’ teken verschijnt er een lijst met mogelijke opties om bean properties te zetten. Binnen een <bean>-element krijg je bijvoorbeeld keuzemogelijkheid voor properties en constructor-elementen. De verschillende properties in het configuratie bestand kunnen ook gewijzigd worden met behulp van de Property Inspector. Om een beter overzicht te kunnen krijgen van een configuratie bestand is het mogelijk om via het Structure window er snel doorheen te navigeren. Deze twee laatste toepassingen kunnen van grote waarde zijn als de configuratie bestanden erg groot worden.

Property Inspector

Opgemerkt moet worden dat de plugin in de kinderschoenen staat en geleidelijk aan verbeterd zal worden. Features die nu missen zullen in de toekomst wellicht worden toegevoegd. Het is jammer dat op dit moment de code completion / code verification alleen geldt voor de XML en niet helpt bij het aanvullen van Java class namen. Ook wordt er niet gewaarschuwd of de geconfigureerde Java class daadwerkelijk bestaat en of de interface (constructor, accessor methoden) overeenkomt met de definitie in de ApplicationContext. Dit is een serieuze tekortkoming. Het gebeurt namelijk regelmatig dat er een typfout wordt gemaakt of dat door het herstructureren (‘refactoring’) de package naam of class naam wijzigt. Tijdens het compileren wordt dit niet ontdekt; pas runtime zullen deze fouten naar boven komen.

Frameworks

Wanneer zou je de plugin toepassen? Dat hangt af van welke frameworks je kiest. Bij het ontwikkelen van software wordt gepoogd een oplossing te vinden voor een bepaald probleem. Aangezien problemen vaak op elkaar lijken, lijken de oplossingen ook op elkaar. Om het wiel niet steeds opnieuw uit te vinden bestaan er frameworks (raamwerken). Deze frameworks moeten het leven van de programmeur eenvoudiger maken. Een framework bestaat uit een groep Java-componenten die tezamen de interne technische werking van een applicatie bepalen. Een framework is meer dan een library (bibliotheek). Frameworks zijn gericht op het oplossen van een bepaald probleem. Voorbeelden hiervan zijn Toplink, Hibernate, Struts, JSF en EJB. Goede frameworks zijn flexibel genoeg om toepasbaar te zijn in meerdere situaties.

ADF en Spring zijn zogenaamde meta-frameworks. Een meta-framework combineert allerlei frameworks tot een totaaloplossing. De integratie is zodanig dat deze frameworks op een goede en consistente manier samenwerken. Een programmeur hoeft zich hierdoor niet meer te bekommeren om de onderliggende frameworks. Op dit moment bestaat er een aantal van dergelijke meta-frameworks, o.a. Spring, ADF, JBoss Seam en Apache Beehive.

Het meta-framework van Oracle heet Application Development Framework. Oracle JDeveloper biedt een groot aantal hulpmiddelen (wizards) om ADF componenten te ontwikkelen. ADF heeft een consistente lagenarchitectuur gebaseerd op het ‘model-view-controller’ patroon. Deze architectuur deelt een applicatie op in drie eenheden met verschillende verantwoordelijkheden: model (de te tonen gegevens), view (de user-interface) en controller (verwerkt de aanvragen). Vanwege de wizards is met ADF een hoge productiviteit mogelijk.

Spring is een meta-framework met andere uitgangspunten. Het Spring framework werd geïntroduceerd als alternatief voor Enterprise Java Beans. Volgens de bedenker van Spring zijn EJBs namelijk vaak niet nodig, te zwaar, onnodig complex, slecht testbaar en onvoldoende productief. Spring kan dezelfde functionaliteit leveren zonder EJBs toe te passen. In plaats daarvan wordt gebruik gemaakt van een zogenaamde Inversion of Control container. Deze container is geconfigureerd in een of meerdere XML documenten. Doordat afhankelijkheden worden geïnjecteerd is er geen afhankelijkheid tussen componenten. Daardoor is een component eenvoudiger te vervangen door een ander (sub-) systeem. Verder zijn de componenten eenvoudiger testbaar. Daarnaast biedt de container andere functionaliteit, waaronder declaratieve transactie management en ondersteuning voor aspect georiënteerd programmeren.
De keuze voor het toe te passen meta-framework is niet eenvoudig. Deze moet uiteraard aansluiten op de gevraagde functionaliteit. Verder is productiviteit van het framework van belang. Hiervoor wordt gekeken naar ervaring van de beschikbare programmeurs. Naast deze objectieve afwegingen speelt in de praktijk persoonlijke voorkeur een belangrijke rol.

Toepassingsmogelijkheden

Hoe kun je Spring onderdelen als Aspect Oriented Programming (AOP) en Inversion of Control (IoC) nu het best inzetten in een Oracle Java EE omgeving?

Eén manier is door Spring als business laag in te zetten waarbij de DAO implementatie wordt gerealiseerd met Oracle Toplink. De Toplink wizard van JDeveloper maakt Java objecten voor database tabellen. Vanuit ADF Faces als presentatie laag kan de Spring service laag middels ADF Data Controls worden aangesproken. Door optimaal gebruik te maken van de geavanceerde ontwikkelmogelijkheden van JDeveloper is het mogelijk om de sterke punten van JDeveloper met die van Spring te combineren. Op deze manier ontstaat een ‘best of both worlds’.

Conclusie

Voor iedere JDeveloper gebruiker die Spring wil toepassen is er nu de plugin. De functionaliteit van deze plugin is nog niet op het niveau van de Spring plugin voor Eclipse. Te verwachten is dat ontbrekende features nog zullen worden toegevoegd. De ware kracht van de plugin ligt in het feit dat hiermee JDeveloper geschikt is gemaakt om op een eenvoudige wijze applicaties te bouwen op basis van het volledige Spring meta-framework.

Over de auteur
Jos Nieuwenhuis is een Java / SOA consultant. Hij combineert ruime ervaring op het gebied van enterprise Java met uitgebreide kennis van integratie en SOA architecturen en oplossingen.

Waardering:
 

Reacties

Nieuwe reactie inzenden

De inhoud van dit veld is privé en zal niet openbaar worden gemaakt.

Meer informatie over formaatmogelijkheden

CAPTCHA
Deze vraag is om te testen of u een persoon bent en om spam te voorkomen
Image CAPTCHA
Enter the characters shown in the image.