De programmeertaal Java als een zelfstandig ontwikkelplatform beschouwen, dat gaat Laurens van der Tang en Frank Hendriksen echt te ver. Wel is ze ‘krachtig genoeg voor het ontwikkelen van moderne flexibele applicaties’.
De analyse van Margaret van Biene en Marcel Bongers betreffende de geschiktheid van Java als platform voor de ontwikkeling van bedrijfsapplicaties (Computable, 21 november 1997) is degelijk te noemen voor wat betreft de formulering van de te stellen eisen. D�e onderschrijven wij. In de evaluatie van die eisen maken zij echter de fout om Java als een zelfstandig ontwikkelplatform te beschouwen. Dit vinden wij n�et correct.
Java is in de eerste plaats een krachtige en degelijk ontworpen programmeertaal. Hoewel ook wij nog graag verbeteringen zouden zien, voldoet de programmeertaal nu al aan de meeste eisen voor professionele software-ontwikkeling. Deze taal gaat daarbij verder in de standaardisatie dan klassieke talen als C++. Zij definieert tevens een gestandaardiseerde executie-omgeving die platform-onafhankelijkheid toevoegt voor ‘100 procent Java’-applicaties. De standaard Java Runtime Kit (JRK) is nodig om een gecompileerd Java-programma te kunnen draaien en deze bevat onder andere de genoemde virtuele machine. Daarnaast is er de standaard Java Development Kit (JDK). De JDK omvat de JRK en enkele ontwikkelhulpmiddelen. Naar wij aannemen is het de JDK die Van Biene en Bongers geëvalueerd hebben. De JDK bevat inderdaad slechts een zeer beperkte ondersteuning voor serieuze programmatuurontwikkeling. Deze is zo gering dat ook wij hiervoor slechts een klein toepassingsgebied zien.
Wij stellen echter dat het doel van de JDK is: om ontwikkelaars in staat te stellen Java te leren; om de standaardisatie van de programmeertaal en de basis standaardbibliotheken verder te ondersteunen; en om als basis te dienen voor producenten van applicatie-ontwikkelhulpmiddelen.
De JDK evalueren als een zelfstandig ontwikkelplatform is dan ook niet terecht. Inmiddels zijn er diverse leveranciers die geïntegreerde ontwikkelomgevingen voor Java leveren zoals Sun, Microsoft, Symantec en Borland. Ook zijn er vele case-tools die Java ondersteunen: onder andere Rational Rose, Paradigm Plus en Object Team. Bovendien bestaan er betere oplossingen voor database-toegang; (bijna) beschikbaar zijn onder andere: Object Store, O2, Poet, J/SQL, Java Blend (een Javasoft/Baan-product). Sommige leveranciers zijn bezig om implementaties van het Java-executieplatform (JRK) te maken voor ‘non stop’-systemen. Hierdoor kan een zeer hoge uitvoeringsbetrouwbaarheid en beschikbaarheidsgraad worden verkregen. Ook zijn vrijwel alle leveranciers van zogenaamde middleware bezig om de integratie van Java te bewerkstelligen. Onder deze laatsten vallen niet alleen de Corba/ORB-leveranciers maar ook Microsoft met Com/DCom.
Los van deze nogal fundamentele kritiek op de evaluatie blijven er nog enkele punten over die enig commentaar behoeven.
Standaardisatie
Ook bij erkende programmeertalen als C++ duurde het jaren voordat van een officiële standaard sprake was. Vervolgens duurde het nog eens jaren voordat alle producten ook daadwerkelijk aan die standaard voldeden. Hierbij moesten vaak oneigenlijke toevoegingen weer verwijderd worden. Wij zijn vooralsnog al tevreden met de wijze waarop Sun de standaard bewaakt en de conservatieve aanpak die deze leverancier hanteert voor het introduceren van aanpassingen aan de taal. Wij verwachten dan ook dat Java binnen enkele jaren door erkende standaardisatie-instituten bekrachtigd zal worden.
Het is waar dat de aanpassingen aan Java op dit moment niet altijd opwaarts compatibel zijn. Het is ook niet redelijk om dat te verlangen van een nieuw product. Sun is al behoudend in het aanpassen van de syntaxis van de taal, en stelt zich zeer terughoudend op als het gaat om het aanpassen van de executiestandaard.
De conclusie dat getwijfeld moet worden aan de onderhoudbaarheid van Java-applicaties op de lange termijn is ons inziens dan ook ongegrond. Voor het beheer van objecten zijn goede oplossingen beschikbaar van derden. Daarnaast moeten voor een eindoordeel over de onderhoudbaarheid alle relevante aspecten meegenomen worden. In vergelijking met andere programmeertalen of -omgevingen heeft Java op het gebied van onderhoudbaarheid meer positieve dan negatieve eigenschappen.
Integere operationele software
Wij erkennen het probleem van de integriteit. De oorzaak hiervan is te vinden in de krachtige, flexibele mogelijkheden van de taal en de executie-omgeving. Oplossingen zijn nog niet altijd voorhanden, maar de problemen zijn niet onoplosbaar. Voor de executie van Java-programma’s die als ‘data’ over het netwerk worden gehaald, is de integriteit echter veel beter te waarborgen dan met andere producten. Hiermee is in het ontwerp rekening gehouden.
Het is waar dat Java door de introductie van de virtuele machine en door zijn dynamisch gedrag, de prestatie-prognose complexer heeft gemaakt. Het is echter niet zo dat de prestatie hierdoor niet meer prognotiseerbaar wordt. Wel is het waar dat Java hierdoor niet geschikt is voor ‘real time’-applicaties.
De prestatie-concessies die gedaan zijn voor het verkrijgen van de platform-onafhankelijkheid, namelijk de introductie van een virtuele machine, wegen niet op tegen de voordelen. Sterker nog, bedrijven als Baan en Sap zijn er het levend bewijs van dat een dergelijke oplossing heel geschikt is voor het ontwikkelen van bedrijfskritische applicaties. Beide hebben sinds vele jaren hun producten gebaseerd op een architectuur die gebruik maakt van een virtuele machine. Dit bewijst dat deze oplossing werkt en voldoende prestatie oplevert. We zien nu al dat de brede acceptatie concurrentie uitlokt voor de Java-oplossing met de beste prestatie en/of de hoogste betrouwbaarheid. Hiervan zal iedereen kunnen profiteren.
Een conclusie dat minder hardware-onafhankelijke producten tegen lagere kosten met behulp van andere talen gerealiseerd kunnen worden onderschrijven wij niet direct. Ook daarvoor moeten eerst alle relevante aspecten meegenomen worden. Prestatie is er slechts één van.
Twee rollen
Waar Van Biene en Bongers Java lijken te beschouwen als een totaal-oplossing die zonder hulp van buitenaf gebruikt moet kunnen worden voor het ontwikkelen van bedrijfsapplicaties, beschouwt Baan deze programmeertaal in de eerste plaats als een zeer goede basis. Het is echter een basis en niet een volledig platform dat alle eisen afdekt. Baan ziet voor Java in dit verband twee belangrijke rollen.
Ten eerste beschouwen wij Java als een goede door de markt geaccepteerde moderne programmeertaal. Een taal die eenvoudig genoeg is om ontwikkelaars niet te laten omkomen in de mogelijkheden, maar die krachtig genoeg is om goede, moderne en flexibele applicaties te ontwikkelen. Ten tweede zien wij Java niet als een vervanger van de computerhardware en het besturingssysteem, maar als een extra gestandaardiseerde laag boven op het besturingssysteem. Deze taal stelt ontwikkelaars in staat platform-onafhankelijke software te ontwikkelen als dat nodig is. Zij sluit echter niet de mogelijkheid uit om direct toegang te krijgen tot gespecialiseerde hardware, besturingssystemen en middleware. Dat laatste is voor het bouwen van bedrijfskritische applicaties een absolute noodzaak.
De geformuleerde eisen zullen wij dan ook invullen door voort te bouwen op Java. Een voorbeeld hiervan is de ontwikkeling van Java Blend door Baan en Javasoft, en de ontwikkeling van diverse andere standaard componenten die aspecten als autorisatie en integratie regelen. Voor de ondersteuning van de ontwikkeling en het onderhoud van deze applicaties werken wij samen met diverse leveranciers van ontwikkelhulpmiddelen.
Laurens van der Tang
Executive Vice President van Baan R&D,
Frank Hendriksen
Product Manager van Baan Labs