Java zal in de nabije toekomst ongetwijfeld een uitermate geschikte taal zijn voor het ontwikkelen van software; bovendien zal de geschiktheid afhangen van het probleem. Is bijvoorbeeld geen overdraagbaarheid vereist, dan kan een belangrijke drijfveer wegvallen om Java te kiezen. Joost van Dijk van Software Engineering Research Centre zet de discussie rond Java voort.
In de zeer korte periode van twee jaar is Java uitgegroeid tot een uitermate populaire programmeertaal. Aanvankelijk sprak Java vooral tot de verbeelding doordat het mogelijk was hiermee applets te schrijven: platform-onafhankelijke programma’s op een server die via een web-browser worden uitgevoerd op een client. Met de komst van nieuwe versies van Java wordt het steeds interessanter om Java ook als serieuze ontwikkelomgeving te beschouwen voor grootschalige applicaties.
Wat maakt Java toch zo interessant? Om deze vraag te beantwoorden eerst ter verduidelijking wat met het fenomeen ‘Java’ bedoeld wordt. Het gaat niet alleen om de programmeertaal Java, maar veel meer om de gestandaardiseerde Java-omgeving, inclusief de virtuele machine en de uitgebreide ‘libraries’ die een platform-onafhankelijke interface vormen.
Als programmeertaal heeft Java de programmeur weinig nieuws te bieden. Alle taalelementen waren op één of andere manier al te vinden in oudere programmeertalen. De kracht van Java is meer de combinatie van al deze elementen in één programmeertaal, zonder de taal te ingewikkeld te maken. De eenvoud van het programmeren in Java is te danken aan onder andere het ontbreken van veelal slecht begrepen constructies als multiple inheritance (dat is vervangen door een veel eenvoudiger en effectiever model van interfaces), het verbieden van bewerkingen op pointers, een redelijk geavanceerd type systeem, en vooral het automatische geheugenbeheer. Deze eigenschappen leiden ertoe dat veel fouten in software worden voorkomen of in een vroeg stadium worden ontdekt.
Geschikt als doel-platform
Wat Java veel interessanter maakt voor het ontwikkelen van software is de standaardisatie van de Virtuele Machine en de Java Api, waardoor Java-programma’s platform-onafhankelijk gemaakt kunnen worden. In Java geschreven programma’s zijn in principe op elke machine en met elk besturingssysteem te gebruiken. Dit wordt mede mogelijk gemaakt door de zorgvuldig ontworpen programma-bibliotheken die eveneens overdraagbaar zijn, inclusief een Window-toolkit. Hierdoor wordt vaak gesproken over het ‘Java platform’, en dit maakt Java zeer geschikt als doel-platform voor generaties vanuit een hoger niveau vierde-generatietalen.
Helaas kent Java ook een aantal zwakke kanten. Omdat de naar Java-programma’s gecompileerde bytecodes tijdens executie worden geïnterpreteerd, zal de prestatie van Java-programma’s onherroepelijk afnemen in vergelijking met bijvoorbeeld in C++ geschreven programma’s. Met technieken als ‘just in time’-compilatie is meestal weer een acceptabele snelheid te behalen, maar deze techniek is niet op elk platform beschikbaar.
Ondanks de stormachtige ontwikkeling die Java in de afgelopen twee jaar heeft doorgemaakt, staat deze taal nog steeds enigszins in de kinderschoenen. Dit kan de nodige implicaties hebben voor software-ontwikkelaars. Allereerst wordt de ‘standaard’-implementatie, de Java Development Kit, geplaagd door een aanhoudende stroom bugs die tot uitdrukking komt in frequente bug-fix releases. Hoewel de meeste van deze fouten van geringe omvang zijn, kunnen ze tot ongewenste resultaten leiden, zoals een fout in het ‘security’-mechanisme die eerder dit jaar is ontdekt.
De uiteindelijke vorm
Een nadeel van de snelle ontwikkeling van de Java-omgeving is dat andere partijen dit tempo moeilijk kunnen bijhouden. Zo duurt het over het algemeen enige tijd voordat Microsoft en Netscape wijzigingen hebben doorgevoerd in hun browsers. Daarnaast blijken er subtiele verschillen te zijn in de manier waarop beide browsers Java hebben geïmplementeerd, waardoor applets er in verschillende browsers anders uitzien of zich anders gedragen, en datzelfde geldt voor de diverse ontwikkelomgevingen voor Java. Java is bovendien nog lang niet uitontwikkeld en het is moeilijk om op deze ontwikkelingen te anticiperen. Wat zal de uiteindelijke vorm zijn van de Java-periferie, zoals persistentie, gedistribueerde objecten (Corba, RMI) en welke toolkits zullen overleven (Swing, AFC)?
Java zal in de nabije toekomst ongetwijfeld een uitermate geschikte taal zijn voor het ontwikkelen van software. Of dit moment al is aangebroken, is de vraag. Bovendien zal de geschiktheid van Java afhangen van het probleem dat deze geacht wordt op te lossen. Sommige talen zijn nu eenmaal geschikter voor bepaalde toepassingen dan andere, en de keuze van een ontwikkelomgeving zal altijd gebaseerd moeten zijn op de eisen die het probleemdomein aan zo’n omgeving oplegt. Is voor een applicatie bijvoorbeeld geen overdraagbaarheid vereist, dan kan een belangrijke drijfveer wegvallen om Java te kiezen. Dit lijkt meer op de filosofie van Microsoft: door applicaties alleen voor het Windows-platform te ontwikkelen kan veel effectiever gebruik gemaakt worden van de specifieke eigenschappen van het besturingssysteem.
Aan de wilgen
Verder spelen enkele praktische zaken een niet te onderschatten rol bij de keuze van een ontwikkelomgeving. Zo moet onder andere rekening gehouden worden met de beschikbaarheid van interfaces naar bestaande software. Ook is het omschakelen naar Java al lang niet meer zo gemakkelijk: met de in hoog tempo expanderende programma-bibliotheken is de complexiteit van de Java-omgeving drastisch toegenomen, en zal scholing in veel gevallen noodzakelijk blijken. Software-ontwikkelaars dienen zich van al deze problemen op de hoogte te stellen alvorens hun beproefde ontwikkelomgevingen aan de wilgen te hangen.
Joost van Dijk
Software Engineering Research Centre
moderator van het discussieforum software-ontwikkeling (zie kader)
Eerste online discussieforum van start
Heeft Java echt de toekomst of is het slechts één van de vele programmeertalen die de afgelopen decennia het licht hebben gezien. Met de hiernaast weergegeven prikkelende stellingen over Java neemt Joost van Dijk van het Software Engineering Research Centre te Utrecht de aftrap voor het eerste van een reeks discussieforums voor professionele IT’ers op Computable Online.
Ondersteund door enkele collega’s zal Van Dijk het discussie-gebied Software-ontwikkeling gaan voorzitten en modereren. Binnen dit forum kunnen abonnees van Computable discussiëren over zaken die betrekking hebben op het ontwerpen, ontwikkelen, bouwen, testen en opleveren van programma’s en informatiesystemen.
Mogelijke onderwerpen die hier aan bod kunnen komen zijn: informatie-analyse, ontwerp- en ontwikkel-methoden, systems engineering, computer aided software engineering, functiepunt analyse, object-georiënteerd ontwerpen en programmeren, reverse engineering, legacy-problemen (Jaar 2000), programmeertalen (Java, Cobol, C++ etcetera) prototyping, testen, rapid application development en case-tools.
Software-ontwikkeling is de eerste van een reeks, op interesse-gebied ingedeelde, vaste discussie-forums op Computable Online. Forums op andere IT-gebieden zullen de komende tijd gefaseerd geïntroduceerd worden.
Schroom dus niet, maar discussieer mee over het belang van Java voor professionele automatisering of start zelf een discussie op het gebied van software-ontwikkeling. Het forum is te vinden op https://www.computable.nl/discussie/.