In Seattle is men bezig met de grote schoonmaak. Microsoft is de bezem aan het halen door het woud van api’s (application programming interfaces) dat het de afgelopen jaren binnen Windows gecreëerd heeft. De nieuwe editie, met projectnaam Longhorn, zal het resultaat zijn van deze opruimwoede.
Door de jaren heen zijn er voor Windows tientallen api’s voor allerlei soorten taken ontwikkeld, uiteenlopend van api’s voor het benaderen van databases tot het aansturen van grafische kaarten. Voor de ontwikkelaar is de consolidatie van veel van deze api’s een van de interessante aspecten aan Longhorn. Ze worden momenteel serieus door hun leger programmeurs onder handen genomen. Voor api’s met vergelijkbare taken wordt gekeken of ze vervangen kunnen worden door één meer universele api. Enkele voorbeelden.
Allereerst zal voor de bouwers van administratieve applicaties het belangrijkste aspect van Longhorn zijn dat langzaam het onderscheid tussen een webapplicatie en een klassieke Windows-applicatie zal verdwijnen. Men kan één gebruikersinterface ontwikkelen voor beide omgevingen. Momenteel moet hierover aan het begin van een ontwikkeltraject een beslissing genomen worden. Een eenvoudige weg terug is er dan niet meer.
Avalon is de codenaam voor alle technologie die ontwikkeld wordt voor gebruikersinterfaces. Xaml (eXtensible Application Markup Language) wordt de declaratieve taal om die interfaces te specificeren. De api’s van Avalon en de taal Xaml zullen het mogelijk maken één interface voor beide omgevingen te ontwikkelen. Dus hoelang zullen we nog praten over webapplicaties?
Ten tweede moet bijna elke hedendaagse applicatie kunnen communiceren met een applicatie of component op een andere machine. Hiervoor kent Windows veel verschillende transportprotocollen, waaronder COM+, Msmq en http. Voordat we de code beginnen in te tikken, moeten we ook hier een beslissing nemen: welke api gaan we gebruiken? Elk protocol heeft momenteel zijn eigen api en die is later niet eenvoudig te vervangen.
Indigo, een andere pilaar van Longhorn, zal hiervoor in de plaats komen. Indigo is de communicatiesoftware die gebruikt zal worden om applicaties en componenten onderling te laten communiceren. Onder de motorkap zal Indigo dan bepalen welk transportprotocol gehanteerd dient te worden. Veranderen van de een naar de ander zal niet veel tijd kosten. Dus één universele api voor het ontwikkelen van gedistribueerde applicaties.
Middels .Net was Microsoft al enigszins begonnen met de grote schoonmaak. Ado.net verving alle bestaande api’s om databases te benaderen. Een en dezelfde api voor alle programmeertalen. Deze weg zet het bedrijf nu verder in. En dit is een prima ontwikkeling. Minder api’s is goed voor de productiviteit en de onderhoudbaarheid van code. Het verlaagt de opleidingskosten en maakt migratie naar een andere technologie eenvoudiger. Conclusie: minder is meer.
Let wel, de oude api’s zullen niet verdwijnen, want dat zou rampzalig zijn voor bestaande, legacy Microsoft-applicaties. De nieuwe api’s worden er ‘naast’ geplaatst, met de bedoeling dat meer en meer applicaties ze zullen gaan gebruiken.
Maar hoe zal aartsrivaal J2EE hierop reageren? De beweging om api’s te consolideren, is nog niet zichtbaar. In tegenstelling zelfs. Met de adoptie van webservices bijvoorbeeld, kwamen er weer minimaal twee api’s bij. Eén om webservices synchroon en één om ze asynchroon aan te roepen. Terwijl er al api’s voor synchrone en asynchrone aanroepen bestonden, respectievelijk RMI en JMS. De proliferatie van api’s binnen J2EE neemt nog steeds schrikbarend toe. De trend om J2EE-api’s te consolideren, om het platform te vereenvoudigen, moet dus nog ingezet worden.
Is het te laat voor J2EE? Uiteraard niet, de bètaversie van Longhorn wordt pas over een half jaar verwacht, en dan moeten we nog geduld tonen voor de officiële versie. J2EE heeft nog tijd, maar ze moeten wel opschieten.< BR>
Rick F. van der Lans is onafhankelijk adviseur, een internationaal bekend spreker en auteur van diverse boeken, tevens gespecialiseerd in softwareontwikkeling, datawarehousing en internet.