Hacker News new | past | comments | ask | show | jobs | submit login

I don't think that terminology is "overwhelmingly common", and I'd argue that it isn't even entirely correct. The JVM is widely deployed, the Ethereum VM is called the "EVM", https://www.linuxfoundation.org/hubfs/LF%20Research/The_Stat... describes BPF and eBPF repeatedly as "virtual machines", https://webassembly.org/ begins by saying, "WebAssembly (abbreviated Wasm) is a binary instruction format for a stack-based virtual machine," etc. "Virtual machine" is still the most common term for fictional machines. (Myself, I think I'd prefer "fictive machine", "fictious machine", "imaginary computer", or "fantastic automaton", but I doubt these terms will gain adoption.)

You can't always use the term "emulator" instead of "virtual machine", because while you could say wasmtime was an "emulator", you can't correctly say that WebAssembly itself is an "emulator". Rather, WebAssembly is the virtual machine which wasmtime emulates. It's also common to call emulators "virtual machines". (The Wasmtime web site mostly calls wasmtime a "runtime" and WebAssembly an "instruction format", FWIW.) And of course a running instance of an emulator is also a "virtual machine" in a different sense.

I think it's also reasonable to use "virtual machine" in the way you are describing, and it has some overlap with this last sense of "virtual machine". Perhaps in your current environment that is the overwhelmingly most common usage, but that is definitely not true elsewhere.




Disagree with both of you. JVM was always a misnomer, it just stuck because that's just the name they stuck with. Putting "virtual machine" in its name in defiance of the meaning doesn't suddenly make it a virtual machine any more than calling your dog "my son" makes your dog your son. And virtual machines have used software virtialization for the longest time, they aren't always hardware based.

Really, a virtual machine is literally what it says on the tin: something that isn't a physical computer (machine), but presents itself as one. You know, with a virtual CPU or a virtual disk or a virtual keyboard etc., whatever a computer would have. If it doesn't present itself as a machine, it's not a virtual machine.

Calling JVM a virtual machine just because it interprets some bytecode the same way a machine does is like calling me a virtual doctor just because I read text the same way a doctor does.


The JVM is a VM in that sense. It isn't a physical computer, but presents itself as one. It's true that that computer doesn't have a disk or a keyboard, but neither do the vast majority of physical computers, including, specifically, the set-top boxes the JVM was originally designed to run on.


> The JVM is a VM in that sense. It isn't a physical computer, but presents itself as one.

No, it isn't and doesn't. What in the world does it have that makes you think it pretends to be a computer? A bunch of pretend registers and a memory limit?


It doesn't have registers, pretend or otherwise, or a memory limit. It sounds like you aren't very familiar with the JVM or computers in general. On the JVM in particular, I suggest reading https://docs.oracle.com/javase/specs/jvms/se23/html/index.ht....


What are you talking about? It literally has a program counter register, it's right there in you own link?

https://docs.oracle.com/javase/specs/jvms/se23/html/jvms-2.h...

I just mixed it up with Dalvik having multiple registers, but that makes it even worse. At least normal machines have more registers.

And literally here:

The following section provides general guidelines for tuning VM heap sizes: The heap sizes should be set to values such that the maximum amount of memory used by the VM does not exceed the amount of available physical RAM.

https://docs.oracle.com/cd/E21764_01/web.1111/e13814/jvm_tun...

Maybe instead of telling me I'm clueless, tell me how you're right? What do you see in it that is actually virtializing a computer in your mind? Because I'm pretty sure that if someone sold you a VM service and it turned out to be just them running your programs under the JVM, you'd be kind of mad.


The JVM is what is called a "Process Virtual Machine" - https://en.wikipedia.org/wiki/Virtual_machine#Process_virtua...




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: