Je hebt Java en het Java Framework.
Was het niet voor de gingantische framework en schaalmogelijkheden van Java, dan werd Java niet gebruikt.
Ruby + Rails + Mongrel moet je natuurlijk vergelijken met de setup van TomCat + JSP + JavaFramework.
De programmeertaal zelf is daar maar een klein gedeelte van het totaal plaatje. Alhoewel zaken als first-order-functions, etc. wel beinvloeden hoe programmeur-vriendelijk de liberaries kunnen zijn.
Maar dan hoor ik dit uit je mond komen:
als serieuze overweging voor bedrijfskritische enterprise-software
En als iets voor een framework zou pleiten lijkt het me toch wel dat de enterprises het links laten liggen. Te goedkoop, te voor de hand liggend, te weinig marketing, niet genoeg genoemd in combinatie met hippie afkortingen. Niet dat alle enterprise oplossingen inefficent, dom en duur zijn, er is vast wel een uitzondering die de regel bevestigd. Toch is het zo dat de statistische kans dat een hobbyist een betere site maakt dan een enterprise bedrijf vrij groot. (als je zaken als MySpace niet tot het maken van je eigen site rekent)
Enterprise oplossingen komen als volgt tot stand:
- met neme een it-manager die heel veel afkortingen kent. En dan betalen we hem heel veel, want we verwachten hoge ROI
- de it-manager weet natuurlijk nergens wat van, behalve hoe je zakelijk moet overleven, dus hij neemt een consultant in dienst: gaat het dan mis, dan kan hij aantonen dat hij duur advies ingekocht heeft om succes te garanderen. (shift the blame in advance)
- de consultant heeft al 20 jaar niet geprogrammeerd en de enige programmeerervaring die hij heeft is in Visual Basic op Windows 95 en beetje access.
- de consultant leest domme blaadjes als 'computable' (in plaats van zo slim te zijn Tweakers.net te lezen) om bij te blijven
- daarin heeft hij een keer zien staan dat in de enterprise webserver market Java heel errug hot is. Als iedereen het gebruikt en adviseert, dan kan dat advies geen slecht advies zijn. (spring in die sloot, want al je concurrenten springen ook in die sloot!)
- consultant heeft advies gegeven, zak geld ontvangen, en gaat weer door naar de volgende job
- een zooi programmeurtjes van de hbo/uni wordt erop gegooid die geen werkervaring hebben
- het kan natuurlijk niet mis gaan, java is the bomb en het management heeft duur kwalitatief advies ingewonnen.
- het gaat mis. ze waren niet in staat om de juiste OO design te ontwikkelen, de hebben alle SQL code concreet zonder enige abstractie erin gezet
- een jaar na de geplande datum dat het af zou moeten zijn, en een half miljoen verder, is er eindelijk een werkend prototype
- inmiddels zijn alleen een aantal kleine dingen veranderd aan de bedrijfsvoering. Dit vereist voornamelijk kleine wijzigingen in de data-structuur.
- drie maanden later zijn ze eindelijk klaar overal de sql aan te passen
- de site gaat live
- de site wordt gehackt. De sql code wordt niet overal netjes ge-escaped. Een bijdehande RoR gebruikers opent een link:
http://www.enterprisey.com/search/term%33;DROP TABLE Orders;%33
- de directie begint te panieken en vindt het project een mislukking
- maar de manager laat zien dat hij heel duur advies ingekocht heeft, dus aan hem ligt het niet
- ze besluiten het project te cancellen en gaan een extern bedrijf inhuren voor de site
- patroon herhaalt zich in dat bedrijf, maar project mislukt net wat minder, aangezien ze al wat jaren programmeurs hebben zitten selecteren.
Het probleem is dat het een technisch intelligent persoon vereist om technisch intelligente mensen aan te nemen. Bedrijven waar technisch intelligente mensen werken zijn te herkennen aan het feit dat hun platform/framework/etc. keuzes niet conform de standaard zijn.
Denk bijvoorbeeld aan Google:
- draaien alles op linux servers
- gebruiken Python (notabene!) voor alle data-aggregatie, verwerking en de googlebot enzo. Ookal is Python zo snel is, het is wel zonder compile-stap te bewerken en is redelijk fault-tolerant.
- gebruiken compiled C code, die ze als apache module integreren voor de backend van de search-sites. Omdat meer CPU meer stroom kost is dit kosten-technisch goedkoper met een website die zo vaak geopend wordt.
- gebruiken een zelfontwikkelde java -> javascript compiler (want Javascript is niet te debuggen en java programmeurs zijn er te over) voor hun Ajax sites.
Een typisch enterprise die niet weet wat doet: De overheid die een miljoen neer legt om een flash site (
http://www.watvooreikelbenjij.nl ) te maken.
De enterprise die zo slim is om voor RoR te kiezen, zal dan ook een succesvol project tegemoet gaan. Gedeelte vanwege de guarilla-programming-style en gedeeltelijk omdat het niet een taal is die je op de HBO/Uni krijgt. Mensen die dit soort baantjes opzoeken zijn gewoon veel beter dan de figureren die nooit verder dan Java gekeken hebben. Deze figuren missen de passie, motivatie en daarmee dus ook het inzicht. (alhoewel ze absoluut niet dommer hoeven te zijn, minder motivatie kan er ook voor zorgen dat je ergens slechter in bent dan anderen)
En die factor moet je ook niet onderschatten: het is veel moeilijker om goede Java programmeurs te krijgen, omdat goede programmeurs liever niet met Java werken.
De marketing/mangement buzz is gewoon bezigheidstherapy voor mensen met een goedbetaalde melkert-baan die niet willen toegeven dat eigenlijk niks nuttigs kunnen.