Toekomst van Java staat ter discussie
Die laatste veronderstelling wordt bevestigd door een recent onderzoek van Info-Tech. Het researchbureau heeft 1850 bedrijven van uiteenlopende omvang ondervraagd. Bijna de helft van die bedrijven gebruikt primair .NET als programmeerplatform en 12 procent zelfs uitsluitend .NET. Voor Java komen die percentages uit op respectievelijk slechts 20 en 3. Java verdwijnt niet, menen de onderzoekers, maar de grote hoeveelheid Java-code is volgens hen hetzelfde lot beschoren als de Cobol-applicaties die nog steeds draaien: een droef bestaan als ‘legacy’.
Klaasjan Tukker, voorzitter van NLJUG, de 2800 leden tellende Nederlandse Java-gebruikersclub, kent het onderzoek en is niet onder de indruk. “Dat onderzoek staat erg ter discussie. Het type bedrijven dat is geraadpleegd is vooral MKB geweest en daar is vanouds de penetratie van .NET uiteraard een stuk hoger.” Tukker herkent zich ook niet in de malaiseverhalen en denkt dat vaak vergeten wordt hoe belangrijk Java is voor de grotere bedrijven. “Ik denk dat 80 procent daarvan een Java-infrastructuur heeft staan.”
Java begon in 1995 als programmeertaal die bytecode opleverde die vervolgens via virtual machines op elk besturingssysteem kon draaien. Maar Java werd J2EE en ontwikkelde zich tot een compleet programmeerplatform. Het onderscheid tussen Java als taal en Java als platform wordt steeds groter, stelt Tukker.
“Java was de taal voor die virtuele machine, maar dat is lang niet meer altijd het geval. Sun heeft veel effort gestoken in het ontwikkelen van een hele goede IDE (integrated development environment) voor Ruby als taal, met Rails als het bekende webframework. Dat kun je popularistisch noemen, maar ik programeer zelf ook wel eens hobbymatig in Ruby en het uitrollen van applicaties is dan echt geen leuk werk; je moet allerlei oude trucs uithalen. Sinds dat op het Java-platform te deployen is, is dat een aantal eenvoudige commando’s en het gedraagt zich net zo als de Java enterprise-applicaties die ik vroeger ook al maakte. Dus grote organisaties die een vrij strakke beheers- en onderhoudssystematiek hebben, hoeven niets nieuw aan te leren; het draait binnen je beproefde omgeving.”
Er zijn met implementaties van Ruby, PHP en meer recent Scala dus steeds meer talen waarmee Java-bytecode is te ontwikkelen. De taal mag ter discussie staan, maar het platform staat dat niet, stelt Tukker, die een van de 120 leden van Suns ‘Java Champions’-genootschap is.
Dat programmeren in Java steeds complexer is geworden, komt mede door de voortdurende toevoeging van nieuwe features, terwijl de nadruk is blijven liggen op achterwaartse compatibiliteit van Java-code. Java-code van tien jaar geleden moet nog steeds kunnen draaien op de nieuwste versies van de Java virtual machine (JVM) en in de J2EE-omgeving gebruikt kunnen worden. Dat is bij de verschillende .NET-versies niet het geval.
Bruce Eckel, schrijver van Java-boeken en spreker op het Javapolis-congres dat in december in Antwerpen werd gehouden, bedacht achteraf in zijn blog dat het misschien tijd wordt Java te stabiliseren. Nieuwe programmeerbegrippen als ‘generics’ en ‘closures’ (die eerder al in de .NET-tegenhanger C# zijn ingevoerd) maken Java er niet makkelijker op omdat ze niet op een elegante manier kunnen worden toegevoegd zonder de achterwaartse compatibiliteit in gevaar te brengen. “Fundamenteel nieuwe features moeten in nieuwe talen tot uitdrukking komen, met zorg ontworpen als deel van het ecosysteem van een taal, in plaats van als aanhangsel achteraf te worden toegevoegd.” De taal Scala zou een goede exitstrategie voor Java zijn, meent Eckel.
Tukker ziet in de Java-gelederen overigens niet het idee postvatten dat Java in de toekomst enkel nog als een backend-platform gebruikt wordt. De aanvankelijk talrijke ‘Java-applets’ zijn niet echt in zwang, maar, zegt Tukker, “je ziet dat Sun toch erg graag ziet dat Java op de desktop weer begint te leven. Op conferenties ging het drie jaar geleden vooral over het Spring-framework, en langzamerhand hoor je steeds meer over Java op de desktop.” Tukker doelt op de aankondiging van JavaFX, waarmee op Java gebaseerde ‘rich internet applications’ zijn te bouwen. Daarmee gaat Sun hernieuwd de concurrentie met Flex/AIR (Adobe) en Silverlight (Microsoft) aan. JavaFX zal zich in eerste instantie richten op mobiele apparaten zoals telefoons. Dat daarin terrein te bevechten valt, blijkt wel uit de aankondiging van Google met zijn eigen telefonieplatform te komen: Android. “Telefoonproducenten willen de nieuwste zaken ondersteunen en als dat een proces als Java Community Process door moet, duurt het ze te lang.”
De twee Amerikaanse professoren die onlangs klaagden dat IT-studenten aan het begin van hun studie te veel Java krijgen voorgeschoteld en dat zo fundamentelere ontwikkelvaardigheden naar de achtergrond verdwijnen, krijgen van Tukker wel een beetje gelijk. “Mensen die je van de opleiding krijgt, kunnen goed knuffelen en mediaten, maar een probleem aanpakken is lastiger en de harde vaardigheden verdwijnen. Als je echt functioneel kunt programmeren, maakt ’t niet uit in welke taal je schrijft. Als ik hier een sollicitant krijg en ik vraag ‘Heb je ervaring met Java?’ en hij zegt ja, dan gaat het restant van de vragen over andere dingen: design patterns, objectoriëntatie, developmentprocessen, analysemethoden.”
/f.blankena@sdu.nl