A kérdést kissé árnyalni kell szerintem.
1. A betöltéskor valóban fordítani kell a Java byte kódot, azonban hacsak nem minden műveletre indítaasz új processzt, akkor ez nem gond (pár tizedmásodperc plusz az induláskor)
2. A futtatáskor valóban van némi overhead-je a C-hez képest. Azonban ha nem használsz, csak csupa statikus metódust, és statikus memóriafoglalást, illetve pont annyi dinamikust, mint c-ben (nem véletlenül nem csinál ilyet senki, de lehet), akkor nem lassabb, mint a c. Azaz: ugyanaz kb ugyanúgy fut, csak az ember használja az eszközöket, ha már elétették.
3. Sok múlik a virtuális gépen. Egy ismerősöm épp mostanság tesztelt ilyesmit. Valami iterálós-számolós (szerintem) algoritmust írt meg c-ben, és Javában. A Sun-os VM (akkor még 1.5) sokkal lassabb volt, de a Bea JVM tizedszázalékra azonos volt egy optimalizáló c fordító termékével!
4. 99%, hogy nem a programozási nyelv, hanem az algoritmusod sebessége lesz a fő kérdés, amikor beüt a bottleneck. Gondold el, a programozási nyelv maximum párszoros lassulást idézhet elő, míg egy rossz algoritmus é-ad-ennest :-). Jó algoritmusok írásához hatalmas segítség a Java jól átgondold könyvtárrendszere.
5. Ráfordított idő. Egy kis projektben valószínűleg PHP-val érsz előbb célba, nagyobb projektben pedig zsákutcába (Persze PHP-t is lehet szépen csinálni, de akkor már ugyanott tartasz, hogy nem lesz olyan húdegyors). Komolyabb problémánál a típusosság, ojjektumosság szerintem óriási segítség, nem beszélve a modern IDE-k által nyújtott navigációs, refactoring és egyéb funkciókról(ha kamillázni akarsz, tölts le egy Eclipse-t :-)). Ha előbb vagy kész, több időd marad kifaragni a lassú dolgokat, és végül gyorsabb lesz.
6. Garbage kollektor. Ez a másik fő pont, amiben lassú a Java. Itt nem is az átlagteljesítmény a baj, hanem a kiszámíthatatlan időpillanatban jövő várakozás. Ez felhasználói felületnél nem para (se Web, se desktop alkalmazásnál(vagy az ugyanaz:-))), real-time feldolgozásra viszont alkalmatlanná teszi a nyelvet (illetve inkább a JVM-t, ha pontosan akarunk fogalmazni). Erre megoldás lesz a jövőben(vagy már ma?) a párhuzamosan működő garbage collection.
Azt hiszem világos, hogy Javára voksolok :-). Én pár éve kezdtem, előtte c fan voltam(mutató és segmentation fault ruleZ:-)), de teljesen beleszerettem a Javába. Szerintem még pár évig simán lehet a Java a jövő (meg a .NET, ami technológiailag lényegében ekvivalens, és Java után gyorstalpalón tanulható).