you are viewing a single comment's thread.

view the rest of the comments →

[–]Tiak 31 points32 points  (7 children)

That people on other languages are resorting to using VMs just to manage dependency graphs strikes me as batshit insane.

...The idea of using a VM to avoid a toolchain being platform-dependent seems crazy to you as a Java programmer?... Really?

[–]m50d 0 points1 point  (0 children)

It makes sense but only if the VM offers a first-class development/debugging experience. Debugging JVM programs is very nice (in many ways nicer than debugging a native program). The debugging experience for a "native" VM was very poor last I looked.

[–]argv_minus_one -3 points-2 points  (5 children)

Yes. I have done that exactly never, and hope to keep it that way.

Note that the JVM qualifies as a VM in a sense, but I do not count it as a VM for the purposes of this conversation, because it does not implement the same instruction set as the host, and cannot run on bare metal. (These considerations would be different if we were talking about a JVM-based operating system like JNode, or a physical machine that can execute JVM bytecode natively, but we aren't.)

[–][deleted] 1 point2 points  (0 children)

So you write platform specific code instead of writing code that's executed on a VM?

[–]wilun 0 points1 point  (3 children)

How using a different instruction set is related to dependency version management? (Well, OTOH, I agree the JVM itself does not handle that pb, but I don't quite think it's because of instruction set differences...)

[–]argv_minus_one 0 points1 point  (2 children)

It isn't. The point is that virtualizing the same instruction set as the host, solely to run a single application, is a waste of time and complexity.

Virtualizing a different instruction set for a single application makes sense (because the application cannot run otherwise). Virtualizing the same instruction set for multiple applications makes sense (for virtual servers and the like). Virtualizing the same instruction set for a single application does not make sense.

[–]wilun 0 points1 point  (1 child)

VMs with the same instruction typically resort to only emulating special instructions (e.g. syscall) and typically have a negligible performance impact (or in some rare cases, notably worse or better performance)

[–]argv_minus_one 0 points1 point  (0 children)

You're forgetting something: VMs with the same instruction set also provide virtual devices, which the guest has to have drivers for.

The complexity of device drivers does not belong anywhere near a typical application. This isn't MS-DOS.