There are three reasons we use Java:
One, security. Can't have untrusted C++ programs barfing on people's computers or
otherwise stealing or breaking things.
Two, platform independence. Send the
bytecode anywhere, it runs.
Three, speed. Believe it or not, the
benchmarks I have done with some integer
algorithms are FASTER with the IBM 1.3 JVM
than the equivalent C code.
By like a factor of 3:2. Really. No, REALLY.
The reason for this is quite simple. The JIT compilers have become sophisticated enough that they can do dynamic runtime compilation that
takes profiling information into account.
No statically-compiled code can hope to match
this performance. This sort of thing is only
going to get better and better in the very near future, especially where heavy-duty scientific floating-point computation is concerned.
Less than a year ago, I would have choked up
a lung if you told me I would utter (uh, type)
these words. But here I am.
We have been running jobs on *many* machines
over a few hours which would have taken several
CPU-years with the equivalent C program on a
single box.
FWIW.
There are three reasons we use Java: One, security. Can't have untrusted C++ programs barfing on people's computers or otherwise stealing or breaking things. Two, platform independence. Send the bytecode anywhere, it runs. Three, speed. Believe it or not, the benchmarks I have done with some integer algorithms are FASTER with the IBM 1.3 JVM than the equivalent C code. By like a factor of 3:2. Really. No, REALLY. The reason for this is quite simple. The JIT compilers have become sophisticated enough that they can do dynamic runtime compilation that takes profiling information into account. No statically-compiled code can hope to match this performance. This sort of thing is only going to get better and better in the very near future, especially where heavy-duty scientific floating-point computation is concerned. Less than a year ago, I would have choked up a lung if you told me I would utter (uh, type) these words. But here I am. We have been running jobs on *many* machines over a few hours which would have taken several CPU-years with the equivalent C program on a single box. FWIW.