De lezing die Rick van der Lans bijwoonde lijkt sterk op het ‘paper’ van Roger Sessions van ObjectWatch, ‘Java 2 Enterprise Edition (J2EE) versus The .Net Platform – Two visions for eBusiness'[1]. De spreker wil een prestatievergelijking geven tussen J2EE en Microsoft .Net, beide platformen voor ondernemingsapplicaties.
Hoewel een uitspraak als ‘Microsoft .Net is sneller dan J2EE’ op zichzelf betekenisloos is, beide zijn immers platformen, specificaties, en geen implementaties, probeert de spreker de vergelijking toch te maken. Daarvoor kiest hij cijfers van een publieke benchmark, TPC-C. Omdat er noch voor J2EE, noch voor Microsoft .Net cijfers in deze benchmark voorkomen (voor .Net is dat overigens simpel te verklaren: de eerste definitieve versie van .Net is pas zeer recent vrijgegeven) kiest hij er twee uit, eentje voor BEA’s Tuxedo, en eentje voor Microsoft’s COM+. Vervolgens deelt hij het cijfer voor Tuxedo door twee en concludeert dan dat Microsoft .Net zeven maal zo snel is als J2EE. Dat is op zijn minst dubieus te noemen, en wel om verschillende redenen.
Is Microsoft .Net sneller dan J2EE? Columnist Rick van der Lans zwengelde de discussie hierover aan in zijn column van 1 februari: Op verzoek van Computable geven IBM, Microsoft, en een Java-consultant hun visie. |
Verder is de TPC-C benchmark een maat voor het aantal database-transacties. Database-transacties maken weliswaar een belangrijk deel uit van enterprise-applicaties, maar zeker geen 100 procent. In die zin zijn de cijfers van de TPC-C benchmark van beperkte relevantie. Ook is de arbitraire deling door twee bij Tuxedo zeer aanvechtbaar. Zowel J2EE als Microsoft .Net maken gebruik van een ‘runtime’-omgeving. In het geval van J2EE is dat de JVM (Java Virtual Machine); in het geval van Microsoft .Net is dat de CLR (Common Language Runtime). Beide ‘runtime’-omgevingen verwerken een tussentaal, bij J2EE is dat de Java bytecode, bij Microsoft .Net de Intermediate Language. Beide ‘runtime’-omgevingen gebruiken een ‘just-in-time-compiler’ om deze tussentaal om te zetten naar machinecode. De eerlijkheid gebiedt dan, volgens dezelfde redenering als voor J2EE, ook het cijfer voor COM+ door twee te delen.
Tot slot kun je niet ongestraft cijfers nemen voor twee willekeurige platformen, te weten BEA Tuxedo, dat geen J2EE-platform is, en Microsoft COM+, dat geen Microsoft .Net-platform is, en daaruit concluderen dat .Net sneller is dan J2EE!
Eerlijke vergelijking
Om een werkelijk eerlijke vergelijking tussen (implementaties van) J2EE en Microsoft .Net te kunnen maken is een nieuwe benchmark nodig. TPC-C meet niet voldoende, en ook TPC-W (een benchmark voor Web e-commerce) komt voorlopig niet in aanmerking; in het TPC-W whitepaper [2] staat:
"TPC-W does not require that an e-commerce package be used to implement the Web Server application. Most TPC-W solutions are custom coded applications written as close to the Web Server Internet layer as possible. The benchmark provides a great test of web server hardware, operating system and basic internet software capability but does not provide any information on the higher-level e-commerce packages."
Het dichtst in de buurt komt Ecperf [3], maar die benchmark is specifiek voor J2EE/EJB, en dus niet direct overdraagbaar naar Microsoft .Net. Microsoft heeft een poging gedaan om de J2EE-referentieimplementatie, de Java Pet Store, over te zetten naar .Net [4], maar dit heeft slechts geleid tot modder gooien tussen Microsoft en Oracle.
Overigens snijdt de hele discussie weinig hout; prestatie is slechts een van de minder belangrijke aspecten die een rol spelen bij de keuze tussen J2EE en Microsoft .Net. Bij voldoende prestatie zijn zaken als veiligheid, betrouwbaarheid, stabiliteit, onderhoudbaarheid, uitbreidbaarheid en schaalbaarheid voor de gemiddelde zware bedrijfsapplicatie van veel groter belang.
Bouwers van zware bedrijfsapplicaties hebben veel meer belang bij een platform dat hen de mogelijkheid biedt om snel tot zo’n resultaat te komen. Voorlopig hebben de J2EE-bouwers enkele jaren voorsprong op de .Net-bouwers.
G.J. Van Oosten West Consulting
Referenties
- http://www.objectwatch.com/FinalJ2EEandDotNet.doc
Reacties hierop o.a. op
http://www.theserverside.com/home/thread.jsp?thread_id=6197 - http://www.tpc.org/tpcw/TPC-W_Wh.pdf
- http://ecperf.theserverside.com/
- http://www.gotdotnet.com/team/compare/petshop.aspx
Reacties hierop o.a. op
http://www.theserverside.com/discussion/thread.jsp?thread_id=9797