Java's Kaft

April 2001

Dit essay is ontstaan uit gesprekken die ik heb gehad met verschillende andere programmeurs over waarom Java verdacht rook. Het is geen kritiek op Java! Het is een casestudy van hacker-radar.

Na verloop van tijd ontwikkelen hackers een neus voor goede (en slechte) technologie. Ik dacht dat het interessant zou zijn om te proberen op te schrijven wat Java voor mij verdacht deed lijken.

Sommige mensen die dit hebben gelezen, vinden het een interessante poging om te schrijven over iets waar nog niet eerder over is geschreven. Anderen zeggen dat ik in de problemen zal komen omdat ik schijnbaar schrijf over dingen die ik niet begrijp. Dus, voor het geval het enig nut heeft, laat me verduidelijken dat ik hier niet over Java schrijf (dat ik nooit heb gebruikt), maar over hacker-radar (waar ik veel over heb nagedacht).

Het aforisme "je kunt een boek niet aan zijn kaft herkennen" ontstond in de tijd dat boeken in eenvoudige kartonnen kaften werden verkocht, om door elke koper naar eigen smaak te worden gebonden. In die tijd kon je een boek niet aan zijn kaft herkennen. Maar de uitgeverij is sindsdien gevorderd: hedendaagse uitgevers werken er hard aan om de kaft iets te maken waar je een boek wel aan kunt herkennen.

Ik breng veel tijd door in boekwinkels en ik heb het gevoel dat ik inmiddels heb leren begrijpen wat uitgevers me over een boek willen vertellen, en misschien nog iets meer. De tijd die ik niet in boekwinkels heb doorgebracht, heb ik voornamelijk voor computers doorgebracht, en ik heb het gevoel dat ik, tot op zekere hoogte, ook technologie aan zijn kaft heb leren beoordelen. Het kan puur geluk zijn, maar ik heb mezelf van een paar technologieën gered die echte stinkers bleken te zijn.

Tot nu toe lijkt Java me een stinker. Ik heb nog nooit een Java-programma geschreven, nooit meer dan een paar naslagwerken erover bekeken, maar ik heb een voorgevoel dat het geen erg succesvolle taal zal zijn. Ik kan het mis hebben; voorspellingen doen over technologie is een gevaarlijke zaak. Maar voor wat het waard is, als een soort tijdcapsule, hier is waarom ik de uitstraling van Java niet goed vind:

  1. Het is zo energiek gehypet. Echte standaarden hoeven niet gepromoot te worden. Niemand hoefde C, of Unix, of HTML te promoten. Een echte standaard is meestal al gevestigd tegen de tijd dat de meeste mensen erover horen. Op het hacker-radarscherm is Perl net zo groot als Java, of groter, puur op basis van zijn eigen verdiensten.

  2. Het mikt laag. In het oorspronkelijke Java white paper zegt Gosling expliciet dat Java niet te moeilijk moest zijn voor programmeurs die gewend waren aan C. Het was ontworpen als een andere C++: C plus een paar ideeën uit meer geavanceerde talen. Net als de makers van sitcoms of junkfood of pakketreizen, ontwierpen de Java-ontwerpers bewust een product voor mensen die niet zo slim waren als zij. Historisch gezien zijn talen die zijn ontworpen voor anderen om te gebruiken slecht geweest: Cobol, PL/I, Pascal, Ada, C++. De goede talen zijn degene geweest die voor hun eigen makers zijn ontworpen: C, Perl, Smalltalk, Lisp.

  3. Het heeft verborgen motieven. Iemand zei ooit dat de wereld een betere plek zou zijn als mensen alleen boeken zouden schrijven omdat ze iets te zeggen hadden, in plaats van omdat ze een boek wilden schrijven. Evenzo is de reden dat we constant over Java horen, niet omdat het iets te zeggen heeft over programmeertalen. We horen over Java als onderdeel van een plan van Sun om Microsoft te ondermijnen.

  4. Niemand houdt ervan. C, Perl, Python, Smalltalk en Lisp programmeurs houden van hun talen. Ik heb nog nooit iemand horen zeggen dat ze van Java hielden.

  5. Mensen worden gedwongen het te gebruiken. Veel mensen die ik ken en die Java gebruiken, doen dat omdat ze het gevoel hebben dat ze het moeten. Ofwel was het iets dat ze moesten doen om financiering te krijgen, ofwel iets waarvan ze dachten dat klanten het wilden, ofwel iets dat hen door het management werd opgedragen. Dit zijn slimme mensen; als de technologie goed was, zouden ze het vrijwillig hebben gebruikt.

  6. Er zijn te veel koks. De beste programmeertalen zijn ontwikkeld door kleine groepen. Java lijkt te worden beheerd door een commissie. Als het een goede taal blijkt te zijn, zal het de eerste keer in de geschiedenis zijn dat een commissie een goede taal heeft ontworpen.

  7. Het is bureaucratisch. Van wat ik weinig weet over Java, lijken er veel protocollen te zijn om dingen te doen. Echt goede talen zijn niet zo. Ze laten je doen wat je wilt en komen uit de weg.

  8. Het is pseudo-hip. Sun doet nu alsof Java een grassroots, open-source taalinitiatief is zoals Perl of Python. Dit gebeurt toevallig onder controle van een gigantisch bedrijf. Dus de taal zal waarschijnlijk dezelfde saaie onhandigheid hebben als al het andere dat uit een groot bedrijf komt.

  9. Het is ontworpen voor grote organisaties. Grote organisaties hebben andere doelen dan hackers. Ze willen talen die (geloofd wordt) geschikt zijn voor gebruik door grote teams van middelmatige programmeurs - talen met functies die, zoals de snelheidsbegrenzers in U-Haul trucks, voorkomen dat dwazen te veel schade aanrichten. Hackers houden niet van een taal die op hen neerkijkt. Hackers willen gewoon kracht. Historisch gezien hebben talen die voor grote organisaties zijn ontworpen (PL/I, Ada) verloren, terwijl hacker-talen (C, Perl) hebben gewonnen. De reden: de tiener-hacker van vandaag is de CTO van morgen.

  10. De verkeerde mensen vinden het leuk. De programmeurs die ik het meest bewonder, zijn over het algemeen niet geboeid door Java. Wie houdt er wel van Java? Suits, die geen taal van elkaar kunnen onderscheiden, maar weten dat ze constant over Java horen in de pers; programmeurs bij grote bedrijven, die verbaasd zijn te ontdekken dat er iets is dat nog beter is dan C++; en plug-and-chug studenten, die klaar zijn om alles leuk te vinden wat hen een baan kan opleveren (komt dit op het examen?). De meningen van deze mensen veranderen met elke wind.

  11. Zijn vader zit in de problemen. Sun's businessmodel wordt aan twee fronten ondermijnd. Goedkope Intel-processors, van hetzelfde type als gebruikt in desktopmachines, zijn nu meer dan snel genoeg voor servers. En FreeBSD lijkt minstens zo'n goed besturingssysteem voor servers als Solaris. Sun's reclame impliceert dat je Sun-servers nodig hebt voor industriële toepassingen. Als dit waar was, zou Yahoo als eerste Suns kopen; maar toen ik daar werkte, waren de servers allemaal Intel-boxen die FreeBSD draaiden. Dit voorspelt weinig goeds voor de toekomst van Sun. Als Sun in de problemen komt, kunnen ze Java met zich meeslepen.

  12. Het DoD houdt ervan. Het Ministerie van Defensie moedigt ontwikkelaars aan om Java te gebruiken. Dit lijkt me het meest damning teken van allemaal. Het Ministerie van Defensie doet een prima (zij het dure) job in het verdedigen van het land, maar ze houden van plannen en procedures en protocollen. Hun cultuur is het tegenovergestelde van hacker-cultuur; op het gebied van software zullen ze waarschijnlijk verkeerd wedden. De laatste keer dat het DoD echt van een programmeertaal hield, was het Ada.

Houd in gedachten, dit is geen kritiek op Java, maar een kritiek op zijn kaft. Ik ken Java niet goed genoeg om het leuk te vinden of niet. Dit is slechts een uitleg waarom ik niet de drang voel om het te leren.

Het lijkt misschien achteloos om een taal af te wijzen voordat je er zelfs maar programma's in hebt geschreven. Maar dit is iets wat alle programmeurs moeten doen. Er zijn te veel technologieën om ze allemaal te leren. Je moet leren beoordelen aan de hand van uiterlijke kenmerken welke je tijd waard zullen zijn. Ik heb op dezelfde achteloze manier Cobol, Ada, Visual Basic, de IBM AS400, VRML, ISO 9000, het SET-protocol, VMS, Novell Netware en CORBA, onder andere, afgewezen. Ze roken gewoon verkeerd.

Het zou kunnen dat ik het in het geval van Java mis. Het zou kunnen dat een taal die door één groot bedrijf wordt gepromoot om een ander te ondermijnen, ontworpen door een commissie voor een "mainstream" publiek, tot in de hemel geprezen, en geliefd bij het DoD, niettemin een schone, mooie, krachtige taal is waar ik graag in zou programmeren. Het zou kunnen, maar het lijkt zeer onwaarschijnlijk.