Specifikacija Jave obuhvata dve relativno nezavisne celine: specifikaciju Java programskog jezika i specifikaciju Java Virtuelne Mašine (JVM). Speficikacija Java programskog jezika se značajnije ne razlikuje od specifikacija drugih objektno orijentisanih jezika, dok specifikacija JVM predstavlja novinu u odnosu na druge objektno orijentisane jezike opšte namene. Specifikacija Java Virtuelne Mašine predstavlja platformu za izvršavanje programa u čijoj osnovi se nalazi programski model imaginarnog – Java procesora. Programi napisani programskim jezikom Java se prevode za izvršavanje na Java platformi. Tačnije, izlaz iz procesa prevođenja Java progama predstavlja odgovarajuća sekvenca bytecode instrukcija – asemblerskih direktiva Java procesora. Za izvršavanje na konkretnoj računarskoj platformi, neophodno je postojanje odgovarajućeg interpetera, koji ostvaruje funkcionalnost zamišljenog procesora tako što preslikava skup bytecode instrukcija, u skup instrukcija karakterističnih za ciljnu platformu.
Posledica ovakve politike je smanjena efikasnost Java programa, uz obezbeđenu prenosivost na sve računarske platforme za koje postoji realizovana JVM. Za povećanje efikasnosti Java programa koriste se takozvani JIT (Just-In-Time) kompajleri, koji pod izvesnim okolnostima mogu da ubrzaju izvršavanje programa 10 do 50 puta. Osnovna ideja upotrebe JIT tehnika je da se prilikom prvog poziva neke metode, izvrši prevođenje Java bytecode instrukcija koje je čine, u sekvencu instrukcija koje se neposredno izvršavaju na konkretnoj platformi (native code). Svaki sledeći poziv ove metode se direktno preslikava u sekvencu instrukcija koje se neposredno izvršavaju.
C++ ipak poseduje malo veću efikasnost, mada to dosta zavisi od tehnike programiranja. Primera radi, kada programer pravi
for klauzulu, Microsoft tvrdi da je operacija dekrementiranja skoro duplo brža od operacije inkrementiranja. U knjizi IT Project+, od William Heldman-a, na strani 444, ima interesantno poglavlje, koje se zove nešto tipa, zašto je Microsoft bolji, ili tako već nekako. Interesantna stvar jeste vezana za poslednje verzije operativnih sistema koji se duplo brže izvršavaju od prethodnih. Kako? Microsoft svaki put kada pravi novi operativni sistem vrši optimizaciju koda, otvarajući i zatvarajući zagrade u for, switch,... klauzulama, zatim prevodi operacije inkrementiranja u dekrementiranje, i sl.
Dakle, C++ jeste optimalniji za neke stvari, ali ipak je to dosta vezano za stil programiranja. Takođe, normalno je da C++ bude efikasniji kada on nije platformski nezavisan, za razliku od Jave.
Nadam se da te nisam mnogo udavio...
And thus I clothe my naked villainy / With old odd ends stolen forth from holy writ/And seem a saint when most I play the devil.