Ai ai ai… Java é lento em relação ao quê!!! Sim, Java é mais lento do que Fortran em aplicações matemáticas, mas Fortran faz parte de um outro paradigma, assim como C. Logo não vale comparar ambas tecnologias. Com relação a C++, o desempenho de ambos é bem próximo, devido à otimizações que JITters como Hotspot e JRockit fazem. Mas, ok, vamos dizer que Java seja uma carroça puxada por um burro manco. Qual é a vantagem de se criar códigos interpretados e lentos?? A vantagem que você tem é ter códigos objetos portáveis e possíveis de serem executados sem necessidade de recompilação em inúmeras plataformas. E isso traz outras consequências, como permitir que códigos sejam baixados de outras VMs em tempo de execução e linkados dinamicamente ao seu programa com uma performance pra lá de razoável. Além disso, códigos “interpretados” tendem a ser mais seguros do que os nativos, uma vez que os bytecodes rodam sobre uma camada que protege o SO de acessos indevidos a recursos.
Pois bem, bytecode é mais lento do que nativo? Sim, óbvio que é. Mas, pense no trade-off segurança-portabilidade-flexibilidade X desempenho e você verá que, em 90% dos casos, desempenho é até algo que pode ser relevado em função dos benefícios do bytecode. Além disso, se você achar que o burro manco está lento demais, hoje em dia você pode colocar este burro manco dentro de um vagão de um trem e fazer o trabalho mais rápido, ou seja, você pode comprar uma máquina mais potente, uma vez que recursos como CPU e memória estão muito mais baratos (apesar do dólar insistir em ficar na casa do R$2,96).
Ahhh, e chega por enquanto.