5 ms·
IMO pretty much no other language run-time is directly comparable to the JVM simply due to the VM part. Building an entire VM into your run-time comes at a huge
by eikenberry 8y ago
IMO pretty much no other language run-time is directly comparable to the JVM simply due to the VM part. Building an entire VM into your run-time comes at a huge complexity cost but is necessary for its goal of running on different hardware seamlessly. It is simply not worth it for most run-times to try for that level of binary compatibility when simpler solutions like cross compiling work most of the time.
- 0x0 8y agoArguably .NET and the CLR is "an entire VM in the runtime", too.
- jfoutz 8y agoSmalltalk probably. Which iirc, was a pretty big influence on the JVM.
- PeCaN 8y agoSun literally bought the StrongTalk team to make StrongTalk into the JVM, so "pretty big influence" is something of an understatement.
- dfox 8y agoFrom my very shallow understanding of CLR/CIL it seems to me that CLR's object model is significantly closer to Smalltalk than JVM's, at least because IIRC CLR has send-like opcode since the beginning, while JVM for a long time had only bunch of specialized invokefoo, with "call n-th method of something" semantics.
- pjmlp 8y agoBesides Smalltalk, Lisp and SELF come to mind.
- jcrites 8y agoMany other language runtimes (besides the Java JVM) are implemented as virtual machines: Python's most widely used CPython implementation uses a VM: https://leanpub.com/insidethepythonvirtualmachine/read https://leanpub.com/insidethepythonvirtualmachine/read Ruby "compiles the abstract syntax tree into lower-level byte code. This byte code is then run by the Ruby virtual machine.": http://blog.honeybadger.io/how-ruby-interprets-and-runs-your-programs/ http://blog.honeybadger.io/how-ruby-interprets-and-runs-your... Perl 6 runs on the Parrot VM: https://perl6.org/archive/architecture.html https://perl6.org/archive/architecture.html (and I believe Perl 5 had a different stack-based VM) These days, more interpreted languages use VMs than not. One notable language runtime that does not use a virtual machine is the Chrome V8 JavaScript engine, which I believe compiles JavaScript directly into machine code and then executes it.
- b2gills 8y agoRakudo Perl 6 no longer supports Parrot, and hasn't since before the first official release of the Perl 6 specification tests on 2015-12-25. Most people run Rakudo Perl 6 on MoarVM, but it also runs on the JVM (with some caveats) and there is a JS based runtime that is being worked on.
- jashmatthews 8y agoV8 switched to an interpreter last year. It's a really interesting project: https://v8project.blogspot.com/2017/05/launching-ignition-and-turbofan.html https://v8project.blogspot.com/2017/05/launching-ignition-an...