Hergebruik en het ontwikkelen van software op basis van bestaande componenten is een van de aspecten van software ontwikkeling die steeds belangrijker wordt. In een tijd waarin producten van steeds sneller naar de markt moeten en de complexiteit van software toeneemt, kun je het je niet meer veroorloven om alles zelf te doen en telkens van scratch te beginnen.

Het ontwerpen van applicaties op basis van herbruikbare componenten heeft zichzelf in de Java wereld al lang bewezen. Het meest gebruikte framework hiervoor is OSGi, wat je in staat stelt om componenten (zogenaamde “bundles”) te maken die een duidelijk gedefinieerde interface hebben en waarvan je de interne code niet van buiten kunt benaderen. Zo gebouwde applicaties zijn bovendien dynamisch, in de zin dat componenten, zonder de applicatie te moeten stoppen, toegevoegd, geupdate en verwijderd kunnen worden.

Omdat het OSGi framework zelf zeer licht van gewicht is — het is immers ooit ontworpen om in embedded omgevingen gebruikt te worden — is het prima geschikt om Android applicaties modulair te maken. Hierdoor wordt het hergebruik van componenten sterk vereenvoudigd. Al toen de eerste Android SDK door Google werd vrijgegeven, hebben we binnen Luminis uitgezocht hoe je Apache Felix (een implementatie van de OSGi standaard) op de Dalvik VM kon draaien. In het begin hadden we daar nog ongedocumenteerde APIs voor nodig, maar inmiddels heeft Google die allemaal netjes gepubliceerd en als je momenteel een release van Apache Felix downloadt, werkt die zonder verdere wijzigingen op Android.

Het gebruik van OSGi op Android wordt extra interessant als je gaat kijken naar de software distributie mogelijkheden die je daardoor krijgt. Zo kun je met Apache ACE, een software distributie (of provisioning) framework — componenten van afstand updaten, zonder tussenkomst van een gebruiker. Hierdoor ontstaat flexibiliteit die je in staat stelt om je applicaties bijvoorbeeld adaptief te maken (ze kunnen zich aanpassen aan hun omgeving).

Al een tijdje geleden hebben Luminis en Akquinet de koppen bij elkaar gestoken om een omgeving te maken waarin Android en OSGi op elkaar afgestemd zijn op basis van eerdergenoemde open source projecten: Apache Felix en Apache ACE. Dat initiatief heet EZDroid en op die website kun je daar meer over te weten komen.

Samengevat is er geen enkele reden meer om Android applicaties nog langer als monolieten te ontwikkelen. De komende tijd zal ik in verdere artikelen ingaan op het gebruik van OSGi op Android. Als er in de tussentijd al vragen zijn, hoor ik ze hier graag!