4 ms·
The JVM gives you very good JIT, GC, threading, manageability (profiling, debugging, memory inspection etc), scalability to huge machines, a huge ecosystem of s
by justinsb 13y ago
The JVM gives you very good JIT, GC, threading, manageability (profiling, debugging, memory inspection etc), scalability to huge machines, a huge ecosystem of software and has basically solved every real-world deployment problem. (Maybe apart from memory utilization!) It is definitely possible to beat the JVM on any one of these facets, but to consistently beat it on all of them is a _lot_ of work. (I'm not sure which benchmark you're referring to where Node beats the JVM, but I suspect it's relatively 'focused'.)
To my mind, the idea of porting is that you face a choice: you can recreate the JVM functionality in your own runtime, or you can port to the JVM. Porting to the JVM is certainly non-trivial, but you then get thousands of man-years of work in return. It's certainly worth doing a project to see whether the porting effort pays off; especially if this done concurrently with working on the language's 'native' runtime.
- mmanfrin 13y agoVery thorough answer, thank you :]
- dmpk2k 13y agobut to consistently beat it on all of them is a _lot_ of work. As long as you aren't native, that is. Although that's unrelated to the discussion at large.
- pcwalton 13y agoEven then it's not that easy. A non-optimizing C compiler will have a hard time beating the JVM's slew of optimizations.
- erichocean 13y agoA non-optimizing C compiler Is there a C programmer on the planet that does production builds with a non-optimizing compiler? How is your comparison even remotely relevant to the GP?
- bruceboughton 13y agoI believe the GP is referring to writing a non-optimising compiler in C. Not compiling your C code using a non-optimising compiler.
- dmpk2k 13y agoThat's mostly true, but just like managed languages can leverage JVM, native languages can leverage LLVM. The advantage of going the native route is that it gives you improved observability and post-mortem. The JVM is a VM (Java's) inside a VM (the OS's), and that additional layer doesn't come for free.
- pjmlp 13y agoMost commercial JVMs also have native compilers for Java, and there are a few projects to run JVMs directly on top of hypervisors without OS in the middle. Some of those are actually LLVM frontends.
- dmpk2k 13y agoI'm referring to the open Hotspot which almost everyone uses, not some specialized JVM products which are closed-source. You do bring up an interesting point though. As for the type of hypervisors you're referring to, those things are effectively half-baked operating systems. That's why something like KVM is better -- you're not pretending to be a non-OS while slowly reinventing a wheel that the *nixes have and always will do better. I think we're beginning to wander massively afield though! :)
- pjmlp 13y agoHypervisors are older than UNIX, as the first ones date back to the OS/360.