Apache Felix op Google Android
Marcel Offermans | 03-05-2008Toen in november 2007 de eerste Android SDK gepresenteerd werd, waren we bij luminis natuurlijk direct geïnteresseerd in het draaien van OSGi op dit platform. De op de Java Virtual Machine lijkende Dalvik VM bevatte op het eerste gezicht echter geen mogelijkheid om dynamisch klassen te laden. Na enig speurwerk lukte het Karl Pauls om een niet gedocumenteerde klasse en methode te vinden om dit toch voor elkaar te krijgen. De ervaringen deelden we met de community in een blog op de luminis website en al snel volgden anderen met soortgelijke implementaties op andere frameworks.
Half april, op het J-Spring event van de NL-JUG, presenteerden we deze combinatie van technologieen voor het eerst op vaderlandse bodem. De zaal zat behoorlijk vol, wat erg leuk was om te zien, en het bevestigde wederom de interesse voor Android, OSGi en de combinatie ervan.
Simpel gezegd, door OSGi te combineren met Android bereik je een aantal dingen:
- Het wordt mogelijk om dynamisch delen van je applicatie te installeren, updaten en verwijderen, waardoor applicaties context-sensitive kunnen worden gemaakt. Denk bijvoorbeeld aan een applicatie die alleen op je telefoon gezet wordt als je op kantoor bent, of een applicatie die in een winkelcentrum telkens die features biedt die horen bij de winkel waar je op dat moment in de buurt bent.
- Je kunt veel eenvoudiger bestaande componenten, die al beschikbaar zijn als OSGi bundle, gebruiken om op het Android platform applicaties te maken. Ook hier maakt OSGi hergebruik veel eenvoudiger.
- De normale voordelen van OSGi zijn ook hier geldig, dus applicaties kunnen component-gebaseerd worden opgezet, en service-georienteerd communiceren waarbij ze gebruik maken van een open standaard die breder inzetbaar is dan alleen het Android platform.
De toekomst zal leren of er voor deze combinatie van technologieen voldoende animo is. Momenteel is de grootste vraag aan Google of ze deze klassen die we nu “gevonden” hebben uiteindelijk onderdeel willen maken van de standaard aanwezige API.





