3 ms·
Comparing the CLR and JVMs in terms of anything other than features is bizarre. This is because the CLR/VES and JVMs are both examples of the actual important
by noblethrasher 11y ago
Comparing the CLR and JVMs in terms of anything other than features is bizarre.
This is because the CLR/VES and JVMs are both examples of the actual important thing about general purpose computing: Computers can simulate anything, including “better” computers (that’s what Universal Turing Machine means).
But, when using one computer to simulate a “better” one, you’re always going to be giving up some raw performance that you don’t care about in order to get some features that you desperately want (after all, you are going through the enormous trouble of designing/implementing/running a simulation of another freaking general purpose computer).
Now, “better” can mean lots of things:
• The simulated computer has unbounded memory
• The simulated computer doesn’t (under|over)flow on arithmetic
• There are more people on the market that know how to program the simulated computer
• The simulated computer is more widely deployed
• The simulated computer is more secure/reliable
• The simulated computer is not controlled by a single faction
• The simulated computer readily runs programs encoded in your favorite language
• The simulated computer can easily simulate a computer that runs programs encoded in your favorite language (the subject of the article)
So, simulated computer A is strictly better than simulated computer B only in the following cases:
• A has the features that you want and B does not
• A and B both have the features that you want, but the former traded away significantly less raw performance than did the latter.
Since the CLR and JVMs are so similar with respect to performance, you should only compare them in terms of the features that you want. Personally, I think that MS was wise to go for more features at the expense of some performance since that’s really the whole point of a VM. But, unfortunately for them (and fans of CLR/VES/C#/VB/F#) they (historically) could not compete on features that quite a few people really care about (e.g. not perceived to be controlled by a single company, runs well on Linux, marketable in the Valley, etc.)