Java -- een kwestie van vraag en aanbod


Anton Eliëns
VU/CWI
eliens@cs.vu.nl

De Java golf komt met donderend geweld op ons af. Een leger van technologie evangelisten bestookt ons met de boodschap dat Java het antwoord is. Een enkeling verweert zich door zich af te vragen waar Java het antwoord op is (Lewis, 1997). En IT managers zitten met de vraag: Java?

Het moge duidelijk zijn, het aanbod (Java) is er. En de vraag naar technologie is er ook. Technologie die het ons mogelijk maakt op de nieuwe mogelijkheden van het Internet in te spelen. Maar, sluit het aanbod (Java) ook aan bij de uiteindelijke vraag, de economisch verantwoorde realizering van de bedrijfsdoelen van de belanghebbenden, de automatiseerders en hun opdrachtgevers.

In dit stukje wordt geen antwoord gegeven op deze vragen. Gepoogd wordt om Java in perspectief te zetten. Het is geen tutorial Java. De vraag, wat is Java, komt slechts zijdelings aan de orde. De vraag die centraal staat is: sluit Java aan bij onze behoefte aan technologie? En in het verlengde daarvan, moeten we over op Java, en zo ja, wanneer?

Java is een moderne programmeertaal, met een syntax die lijkt op die van C++, maar zonder de zo gevreesde pointers. Java biedt ondersteuning aan applets en het dynamisch downloaden van classes. Verder biedt Java een keur aan bibliotheken en uitbreidingen, voor ondermeer netwerk communicatie, grafische gebruikersinterfaces en multimedia. Ook ondersteunt Java multi-threading.

Of Java ons wat te bieden heeft is natuurlijk een kwestie van perspectief. Kort en bondig op een rijtje: Internet applicaties, Software Engineering, taal ontwerp, systeem ontwikkeling, Informatica (als wetenschap), IT (in) Business en, ten slotte, de Global Village. Met opzet heb ik een aantal gezichtspunten onvertaald gelaten. Waar het om gaat, uiteindelijk, is bij elk van de gezichtspunten tot de juiste vraagstelling te komen ...

Internet applicaties

Java is in 1995 op de WWW3 Conferentie in Darmstadt gepresenteerd als 'the dial-tone of the Internet'. Enige jaren later weten we dat dat in de praktijk maar al te vaak de wacht-toon betekent, maar dat is hopelijk tijdelijk. De 'dial-tone', omdat Java platform-neutraal is, en 'network-aware'. Daarbij gevoegd de Beans component-technologie, lijkt het Java platform ideaal. En inderdaad, meer dan een miljoen ontwikkelaars, zo lezen we op de Javasoft web-site, hebben het Java platform omarmd. Maar, wordt op dezelfde plek toegegeven, de meeste ontwikkelaars weten nog niet hoe te profiteren van het Java platform zonder de bestaande investering in 'legacy' applicaties (het hart van de bedrijfsvoering, nietwaar) op te geven. De nieuwe technologie is er, maar een migratie traject ontbreekt vooralsnog.

Software Engineering

In het artikel van Lewis wordt uitgebreid ingegaan op de mogelijke onderhoudsproblematiek waarvoor Java ons stelt. Als we Java adopteren zitten we tegen 2010 met de onderhoudsbrokken. Maar dat geldt natuurlijk voor elke technologie die we nu gebruiken.

Ontwikkelen in Java, dat lukt wel. Aan het aanbod van Javasoft/Sun Microsystems ligt het in ieder geval niet. Naast de Java Developer Kit is er ook een (browser) plugin, om onafhankelijk van de Netscape en Microsoft Internet Explorer browsers te blijven, een varieteit aan tools en hulpmiddelen, 'early access packages', en een overweldigende hoeveelheid documentatie van goede kwaliteit.

Maar onderhoud, op langere termijn, is natuurlijk een heel andere vraag. Het antwoord daarop is wellicht eenvoudiger dan gedacht. In termen van standaardizatie, taal- en platform-onafhankelijkheid, en migratie mogelijkheden loopt OMG CORBA jaren vooruit op Java!

Taalontwerp

Java is te beschouwen als een tweede generatie derde generatie programmeertaal. Toegegeven, dat klinkt wat ingewikkeld. Wat ik bedoel te zeggen is dat het taalontwerp van Java duidelijk laat zien dat er goed naar eerdere talen gekeken is. Het elegante minimalisme van Pascal, threads, de smaak van C++. Wat dat laatste aangaat, Lewis karakteriseert Java als een slap aftreksel van C++. Wat mij persoonlijk het meest stoort is dat Java vol semantische compromissen zit. Zoals, bijvoorbeeld, de gelijkheids-operator voor Strings, die tegen de verwachting in niet op string-gelijkheid maar op referentie-gelijkheid test. Ook op de thread ondersteuning is het nodige af te dingen. Waarom slechts een keyword als synchronized als bescherming en niet een Ada-achtig select statement. Aan allerlei dingen is te merken dat Java in grote haast is ontstaan. Zo gaf Gosling (1997) toe dat asserties (zoals in de taal Eiffel) op het allerlaatste moment uit de taal-definitie zijn verwijderd, omdat bij de opleverings-deadline nog fouten in de implementatie daarvan zaten.

Systeem ontwikkeling

Het idee achter Java is aansprekelijk. Een virtuele machine die op elk platform te realizeren is. Een keer het programma schrijven, vertalen naar bytecode, en het werkt overal. Overal, dat wil zeggen op elk gadget dat je maar kunt bedenken, computer, telefoon, TV, welk operating system er ook op draait. Natuurlijk, in de praktijk valt dat wat tegen, maar het idee is er niet minder om.

De tools om Java applicaties te ontwikkelen zijn er. Dat wil zeggen, ze zijn er bijna. Een onderzoek onder de titel "Are Java Tools ready for Prime Time" wijst uit dat alle tools nog wel verbeterd moeten worden. Het onderzoek gaf echter ook aan dat alle tools zo snel verbeterd worden dat de gebruikers het nauwelijks kunnen bijhouden.

Even terug naar de werkelijkheid. Is het niet zo dat 90% van de Internet applicaties in een script-taal geschreven is? Perl, aan de server kant, en Javascript aan de client kant. In de praktijk zou Java wel eens te zwaar kunnen blijken voor lichtgewicht clients en te licht voor zware servers. Wat dat betreft valt Java wellicht een beetje tussen de wal en het schip. En verder moeten we bedenken dat de strijd tussen de verschillende comnponent-technologieen nog maar net begonnen is (Szyperski, 1998).

Informatica (als wetenschap)

Java blijkt op grote schaal ingevoerd te zijn als eerste programmeertaal, voor vakken als Inleiding Programmeren en Data structuren. En de studenten vinden het leuk! Dat is een verheugend feit als we bedenken dat daarmee talen als Modula en Pascal definitief van het programma afgevoerd worden. Enigszins bedenkelijk vind ik het als daardoor C++ voor de gevorderde student overbodig geacht wordt. Persoonlijk ben ik geneigd Java te zien als C++ voor dummies, maar ik vermoed dat velen dat als een aanbeveling voor Java zullen opvatten.

Wetenschappelijk is Java niet bijster interessant. Alles wat Java biedt is elders al aan de orde geweest, en vaak beter. Het is eigenlijk teleurstellend dat we nu onze aandacht richten op de zoveelste derde generatie taal, terwijl eigenlijk een meer declaratieve taal op onze agenda zou moeten staan, een taal of omgeving die de ontwikkeling van betrouwbare, verifieerbare software daadwerkelijk ondersteunt (Eliëns, 1999).

IT (in) Business

Op de Javasoft paginas wordt uitgebreid melding gemaakt van het wedervaren van Java in de echte wereld. Zo stond er een verhaal over het gebruik van Java technologie voor het verzamelen en bewerken van gegevens over de weersgesteldheid. Ook stond er een stukje over de toepassing van Java voor de ontwikkeling van een Web-gebaseerd informatie systeem voor de gezondheidszorg. Bij het lezen van deze voorbeelden kon ik me overigens niet aan de indruk onttrekken dat hier om pilot projecten ging. Strategische projecten doe je tenslotte niet met 'cutting edge' technologie. (Althans niet in Nederland.)

Een ander voorbeeld van een voor de IT Business interessante Java toepassing is het San Francisco raamwerk dat door IBM wordt ontwikkeld. Het San Francisco raamwerk beoogt een verzameling van generieke oplossingen te geven voor het realizeren en beheersen van bedrijfsprocessen, zoals leveranties, inkoop en kwaliteitscontroles.

Het moge duidelijk zijn dat Java in dit opzicht geen antwoord biedt. De cruciale issues die hier spelen betreffen de standaardisering van bedrijfsobjecten, bedrijfsprocessen, en de logica achter de bedrijfsvoering. Ook daar is de OMG trouwens al geruime tijd mee bezig. En verder weet u ongetwijfeld meer van bedrijfsvoering dan ik. Toch?

Global Village

De laatste tijd raak ik meer en meer geinteresseerd in het fenomeen virtual communities. Temeer omdat in toenemende mate 3D technologie wordt gebruikt voor het weergeven van de virtuele wereld en haar bewoners. Stelt u zich eens voor hoe een virtuele aandelenhandel eruit zou kunnen zien. Beslissingen moeten snel genomen worden. Er is een overvloed aan informatie, vanuit allerlei bronnen. Koers-fluctuaties, politieke spanningen en markt bewegingen moeten voortdurend in de gaten gehouden worden. Bij kritieke situaties moet direct tot handelen overgegaan kunnen worden. Een mooi speelterrein voor virtuele werelden technologie. En een zeer kennis-intensieve applicatie. Is het Java platform daar al rijp voor?

Samenvattend

Laat ik niet proberen het gezegde nog eens samen te vatten, maar laat ik eindigen met te stellen dat Java een oplossing biedt voor het probleem van de platform afhankelijkheid, het ontbreken van standaard APIs, en de onwil van programmeurs om ingewikkelde programmeertalen te leren, De vragen die Java oproept betreffen de efficiency, het onderhoud, de taalafhankelijkheid en ook de instabiliteit van het platform zelf. Of Java een antwoord op uw vragen biedt zult u verder zelf moeten uitmaken.

Referenties

Naschrift

In juni 98 vroeg Peter de Weerdt van Object+ me voor een voordracht voor Object+ Exchange. Na een aarzelend "iets over Java ..." besloot ik tot de aan het artikel van Lewis ontleende titel "If Java is the Answer ...". De uitdaging was om een ontwikkeld publiek uit de praktijk van IT iets over Java te vertellen wat ze niet al lang wisten. Ik heb toen gekozen voor het op een rijtje zetten van de verschillende gezichtspunten van waaruit deze vraag te stellen is. Toen Hans Dekker me vroeg iets voor de Informatie special over Java te schrijven heb ik voorgesteld deze gezichtspunten nog eens langs te lopen. Het bovenstaande is daarvan het resultaat. Niet bedoeld als uiteindelijke opinie, maar ter bevordering van de discussie over de voors en tegens van de inzet van Java voor bedrijfskritische projecten.

Auteur

Anton Eliëns is docent aan de Vrije Universiteit van Amsterdam. Hij geeft de colleges Object-georienteerde Software Ontwikkeling en Formele Methoden. Hij is als onderzoeker tevens verbonden aan het Centrum voor Wiskunde en Informatica. Zijn onderzoeksinteresses omvatten gedistribueerd logisch programmeren, hypermedia systemen, en multimedia information retrieval.