Eclipse RCP

October 23rd, 2009 by Kim Hoogenberg Leave a reply »

De meeste ontwikkelaars kennen Eclipse als een open source en gratis Java IDE (Integrated Development Environment). Simpelweg een softwareproduct, waarmee (web)applicaties geschreven kunnen worden met behulp van de programmeertaal Java. Eclipse biedt echter meer dan alleen dat. Er zijn Eclipse projecten die zich richten op de meest populaire overige programmeertalen, zoals PHP, C++, C# en COBOL.

Geschreven in Java en gedreven door een grote Java-community, is het niet verrassend dat de Eclipse Java IDE de meest gebruikte IDE uit de Eclipse-lijn is. Naast de mogelijkheid om met behulp van Eclipse code te schrijven, is er nog een aantal redenen, waaraan Eclipse haar populariteit ontleent.

Eclipse is een open source platform, uitgebracht onder de Eclipse Public License. Deze licentie wordt erkend door het Open Source Initiative. De naam schijnt terug te voeren te zijn op de wens om Netbeans, de Java IDE van Sun, in de schaduw te zetten (en vandaar een zonsverduistering). Eclipse is geschreven in Java en met behulp van de Standard Widget Toolkit (SWT), welke initieel is ontwikkeld door IBM. De Eclipse-community onderhoudt tegenwoordig het SWT-framework. Dat betekent echter niet dat IBM niet meer betrokken is bij het project. De Eclipse Foundation wordt nog altijd, en al vanaf de oprichting in 2001, actief ondersteund door IBM. De bekendste ontwikkelplatformen ten behoeve van IBM software, zoals Lotus Notes en WebSphere Portal, zijn gebaseerd op Eclipse. Deze zijn inderdaad gebaseerd op Eclipse en dus niet slechts geschreven met behulp van de IDE. Zo is IBM Rational Application Developer volledig gebouwd bovenop de Eclipse IDE.

Eclipse biedt een standaard voor het maken van een (desktop)applicatie én uitbreidingen op die applicatie. Dit wordt het Rich Client Platform of Eclipse RCP genoemd. Juist die uitbreidingen (extensions, extension points en plugins) maken RCP tot een bruikbaar en veelzijdig concept. Zogenaamde Eclipse plugins zijn herbruikbaar en potentieel te gebruiken binnen iedere Eclipse IDE of Eclipse RCP applicatie. Een applicatie welke ontwikkeld is met behulp van Eclipse RCP start altijd een nieuwe eclipse-instantie, oftewel de basiscode, waarmee de plugin-architectuur wordt aangeboden.

Aan deze modulaire architectuur van Eclipse ligt OSGi ten grondslag, een dynamisch modulesysteem voor Java. Om precies te zijn is dit de OSGi R4 core framework specification. Eclipse Equinox is de gebruikte reference implementation en deze vormt de basis van onder andere Eclipse IDE en Eclipse RCP.

Hier wordt de overduidelijke commitment van IBM aan Eclipse op strategisch niveau meteen duidelijk. Stel je bijvoorbeeld Lotus Sametime, het chat-programma van IBM, voor als een Eclipse plugin. Lotus Notes is inmiddels een Eclipse RCP programma en kan om die reden, met een paar muisklikken in de Eclipse omgeving, Lotus Sametime bevatten op iedere willekeurige plaats. Die flexibiliteit kan worden doorgetrokken voor de vele componenten, al dan niet commercieel, die inmiddels beschikbaar zijn voor het Eclipse platform.

Prettig is ook dat de makers van een Eclipse RCP programma kunnen bepalen op welke plaats een programma uitgebreid kan worden. Zo kan een progamma als Lotus Sametime met enkele eenvoudige bewerkingen voorzien worden van nieuwe functionaliteiten of een eigen huisstijl.

OSGi biedt tegelijkertijd de mogelijkheid om bepaalde programma-onderdelen niet zichtbaar te maken voor ontwikkelaars die een programma willen uitbreiden. Cruciale onderdelen die Lotus Sametime haar identiteit geven, kunnen hierdoor niet beïnvloed worden door een extensie van het product. Dit voorkomt dat het product als van een andere leverancier door het leven kan gaan of zelfs als zodanig verkocht wordt. Tegelijkertijd is er de flexibiliteit van uitbreiding op een gecontroleerde wijze. De architectuur voorziet dus in een gestandaardiseerde manier als het gaat om het aanbieden van een Application Programming Interface (API).

Nu draait Eclipse RCP, zoals de naam al suggereert, om desktop applicaties. Eclipse RAP is het project dat deze modulaire en open standaard voor applicaties doortrekt naar het web. RAP staat voor Rich AJAX Platform en biedt ontwikkelaars de mogelijkheid om met behulp van de bekende Eclipse technieken een AJAX-enabled webapplicatie te bouwen. Voor de presentatie in de browser wordt gebruik gemaakt van het open source project qooxdoo, specifiek de Qooxdoo Web Tookit (QWT). Deze toolkit is analoog aan bijvoorbeeld de Google Web Toolkit (GWT), maar biedt hiernaast de qooxdoo widgets.

Daar waar Eclipse RCP gebruikmaakt van de Standard Widget Toolkit, maakt Eclipse RAP gebruik van een eigen implementatie van de SWT API, te weten de RAP Widget Toolkit (RWT). Doordat het modulaire systeem en de component hiërarchie ook hier is doorgevoerd, wordt het mogelijk om eenmaal broncode te schrijven (Single Sourcing), voor zowel een desktop applicatie als een variant die voor het web geschikt is. Natuurlijk gaat zo’n positief voorgesteld ontwikkelfeest niet altijd op.

Zo is het veelal vanuit de ontwerpgedachte niet gewenst dat een webapplicatie hetzelfde moet doen, of er zelfs hetzelfde uit dient te zien als een desktop applicatie. Daar komt bij dat de RWT slechts een subset van de SWT bevat. Nog immer beschikt een desktop, of eigenlijk het besturingssysteem dat de applicatie faciliteert, over rijkere mogelijkheden als het gaat om de opbouw van gebruikersinterfaces.

Het feit is wel dat de verschillen tussen beide applicaties zo minimaal kunnen zijn dat dit samengevat zou kunnen worden in een verschil in configuratie. Ook is het denkbaar dat de definitie van de gebruikersinterface het enige verschil vormt tussen de twee varianten. Slechts die definitie zou dan separaat moeten worden onderhouden. Eclipse biedt voorts uitstekende mogelijkheden om alle aan te bieden functionaliteiten samen te vatten in plugins. Die plugins kunnen in beide projecten worden gebruikt.

Het Eclipse RAP project heeft verder een aantal widgets als voorbeeld beschikbaar welke gebruikt kunnen worden in eigen code, maar die ook naar hartelust kunnen worden aangepast. Zo is er bijvoorbeeld een Google Maps component te downloaden van de website van Eclipse.

De Google Web Toolkit (GWT) is een andere veel gebruikte manier om widgets te maken, uit te wisselen en de presentatie op het web te ondersteunen. Ook hierbij kan de broncode van een programma geheel in Java worden geschreven, waarna de GWT compiler zorgdraagt voor de transformatie naar HTML en JavaScript. Gebruik van deze toolkit heeft echter niet dezelfde kracht als Eclipse om componenten eenvoudig, en Rijk, te ontsluiten als offline systemen. Zo kan er slechts gebruik worden gemaakt van Google Gears om lokale (offline) data aan te spreken.

Andersom valt er te zeggen dat Eclipse’ koppeling tussen RCP en RAP in beginsel stateless is. Dat houdt in dat enige koppeling tussen beide altijd expliciet moet worden gedefinieerd.

We kunnen in ieder geval concluderen dat Eclipse inmiddels een volwassen IDE is en een volwaardig alternatief biedt voor concurrenten als IntelliJ IDEA van Jetbrains en Netbeans van Sun. Door de toevoegingen van RCP en RAP, biedt Eclipse op dit moment een van de meest geavanceerde tools om rijke desktop applicaties te ontwikkelen in Java, waarbij de transitie naar een web-enabled variant van die applicaties weinig tijdintensief en dus relatief goedkoop is. De populariteit, die overigens enorm wordt gestuwd door IBM en haar commitment aan Eclipse, draagt verder bij aan de adoptie en de voortbrenging van nieuwe versies en ontwikkelingen door de Eclipse community.

Nu is het alleen nog te hopen dat de Java Development Kit niet nog meer packages (zoals bijvoorbeeld Swing) gaat bevatten die, in dit geval door Eclipse RCP, overbodig worden gemaakt. Enige afstemming in deze wedloop lijkt geen overbodige luxe. Alleen de tijd zal het leren welke frameworks het meest gewenst zijn en hoe de open java cultuur zich zal ontwikkelen of zelfs zal aanpassen.

Advertisement

Leave a Reply