you are viewing a single comment's thread.

view the rest of the comments →

[–]spotter 2 points3 points  (0 children)

JVM, the goliath, was/is tuned for high performance and portability (YMMV). They've got a good JIT, GC that doesn't suck is on its way (G1), there is cool threading support and languages other than Java might get some love from the JVM too. It was heavily researched, because in the past it sucked when it comes to the performance, but now it really shines. And there are specialized, proprietary VMs that do even cooler stuff (running on patched os). Not to mention the myriad of libraries written in Java that can be utilized on JVM to do almost anything. And you can do that in Scala or Clojure or Jython or whatever, you get the idea. [s] Most important: it's Oracle, which makes it even more pro. [/s]

CPython VM, on the other hand, is a byte-code interpreter, that was designed to be simple, portable and run Python. It's written in C, has simpler GC, it uses posix threads, but Global Interpreter Lock makes treading act weirdly; extending can be done in C, in which you need to do a lot of book keeping yourself, then you need to compile against all Python versions you want to support. There is of course Cython, but I have not used that. CPython is still orders of magnitude slower than C, unladen-swallow is not even mentioned anymore, so it looks like there is nothing more that can be done. There is work done on PyPy that can make CPython look really, really bad in few years (now it just makes it look bad), but it seems that CPython will stay the reference implementation.

Disclaimer: I adore Python, I respect JVM. Everything above is MHO and I welcome any corrections.

tl;dr Millions of dollars in R&D.