I mostly use Clojure these days, but I'm really happy that other languages have implementations on top of the JVM. The JVM is a mature beast with hundreds of man-years of effort put into its development. The more languages use it, the better.
This may not be the best place to ask about it, but I figure it's worth a shot. Anyone happen to have any documentation on the BEAM binary format ( I found http://www.erlang.se/~bjorn/beam_file_format.html but it's quite old) and the opcodes used in it?
I think the point is that certain core aspects of erlang are not a 1:1 port between the 2 VMs. BUT THAT DOES NOT MEAN that erlang cannot be implemented on the jvm, you just trade off one set of tricks for another. As long as the language is not compromised.
Notice how its written that in Erjang you just use shared variables to pass messages between two processes VS copying messages. There you go. If the VM handles thread safety for you, then what do you care that the variable is shared vs not shared or mutable vs not mutable (in the underlying vm)? Shared just means better performance. Wasent the whole point of erlang to let your VM handle sharing vs copying and isolating processes; while you code multi-processing, erlang uses whatever it wants for efficiency.
"If the VM handles thread safety for you, then what do you care that the variable is shared vs not shared or mutable vs not mutable (in the underlying vm)?"
Nobody should. Mutability or immutability is a property of programs, not languages. Some languages make it syntactically impossible to express mutation, but it's still all machine language in the end, which allows quite arbitrary mutation, so the only reason those languages can work is that they choose to refrain from mutation in their VM.
I met Kresten at the Erlang Factory this year - he's an incredibly talented developer and gave a great talk on the project. My sense as a relative Erlang 'outsider' is that the Erlang folks were skeptical at first but warmed to him as the conference went on because it was clear that he was addressing a lot of the concerns that running on the JVM was impossible (tail recursion, message passing, etc)...
"Good question. Well, I just wanted to learn Erlang, and so this felt like a good way to get through all the details. Seems to be working — I am learning erlang!"