TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Comparison of Erlang Runtime System and Java Virtual Machine [pdf]

126 pointsby easydalmost 10 years ago

6 comments

jfaucettalmost 10 years ago
This was an decent comparison &#x2F; contrast. It did make me wonder how they&#x27;re coming along with the BEAM jit these days, I found this from a while back: <a href="http:&#x2F;&#x2F;www.erlang-factory.com&#x2F;euc2014&#x2F;frej-drejhammar" rel="nofollow">http:&#x2F;&#x2F;www.erlang-factory.com&#x2F;euc2014&#x2F;frej-drejhammar</a><p>It also reminded me how much I wish there was an actual specification for BEAM, finding out the details of the how the bytecodes work is an arduous task compared to the JVM where everything is explicitly stated. IMHO both VMs are excellent in their own right, the HotSpot JIT is incredible, but I still can&#x27;t deny that I find the beam process model on concurrency more elegant than the JVM one, though in practice I&#x27;ve only toyed in erlang so I have no real-world grounds of comparison there. Does anyone by chance?
评论 #9794484 未加载
vezzy-fnordalmost 10 years ago
Wouldn&#x27;t it be more correct to speak of the EVM as opposed to ERTS here? ERTS defines things like the boot protocol, distribution protocol, term serialization, port drivers, NIFs and BIFs. Though when talking about scheduling semantics, that&#x27;s on the EVM level (to differentiate it from BEAM in particular).<p>Otherwise, a decent high-level overview.
white-flamealmost 10 years ago
I was working with Erlang for about 2 years in a multi-language environment, and we based our networking messaging infrastructure on top of the Erlang protocol. It&#x27;s still there, but we&#x27;re migrating from it.<p>One major thing that turned me off of the language for our particular project was that there was no way to have a large read-only data structure in RAM and sic a bunch of parallel threads to analyze or search it. It is hackable if you mash your data structure into a large byte binary, since large bins live on a shared heap, but it&#x27;s a pain to deal with non-native representation for your data.<p>It&#x27;s very obvious that Erlang is optimized for a particular usage model, and even when you&#x27;re dealing with a number of functional parallel processes, it might still clash with what you&#x27;re doing.
评论 #9796057 未加载
评论 #9795405 未加载
评论 #9795841 未加载
hendzenalmost 10 years ago
The content is quite interesting, but this paper could use some serious editing. There are typos throughout, and the tone is overly colloquial for an academic context.<p>The paper could also use an evaluation section - e.g. implementing a solution to a well known problem like the Dining Philosophers in both languages and comparing both the code and runtime characteristics.
评论 #9794266 未加载
评论 #9794475 未加载
pronalmost 10 years ago
The report mentions Quasar (I&#x27;m its main author) and simply says, &quot;instrumentation has many challenges that add complexity to the program instead of removing it.&quot; -- without mentioning why. I believe this is false. Quasar removes just as much complexity as Erlang does (Erlang&#x27;s enforcement of immutability is orthogonal; indeed, if you use Quasar with Clojure you get that, too), but it is true that the instrumentation is not entirely transparent -- <i>yet</i>. This doesn&#x27;t add any complexity to the program (the code is <i>exactly</i> the same as it would be in Erlang), but it does add some difficulty to the compilation process, as all blocking methods must be annotated. This is an annoyance, but it will probably go away in Java 9, as we are working with Oracle to make a minor change to the JVM (no, unfortunately not building continuations into the JVM just yet) that will make the bytecode instrumentation process fully automatic and completely transparent.<p>Fibers implemented with bytecode instrumentation also have some (small) added overhead (which is why we&#x27;d like them to be built directly into the JVM), but this makes little difference in practice: HotSpot&#x27;s compiler is so good that with any added real work, that overhead is becomes negligent, and the compilation quality means that overall performance exceeds anything that can be achieved by Erlang VMs.<p>Also, the report says: &quot;<i>the JVM has a single heap and sharing state between concurrent parties is done via locks that guarantee mutual exclusion to a specific memory area. This means that the burden of guaranteeing correct access to shared variables lies on the programmer, who must guard the critical sections by locks</i>&quot;. This is grossly inaccurate. While it is true that the JVM has a shared heap, this means that it <i>can allow</i> programs to share mutable state among threads -- not that it necessarily does so. The JVM leaves the concurrency model up to the language implemented on top of it (just as the hardware and OS support a shared heap, but various languages may choose not to expose that as a visible abstraction to program code). E.g. Clojure only allows shared mutable state if it enforces transactional modifications. Erlang also allows this kind of shared state via ETS; the difference is that ETS must be programmed in C, whereas on the JVM you can write the shared data structure in a JVM language. This also means that on the JVM, objects stored in such a concurrent data structures are handled by the GC, whereas in Erlang (IIRC) ETS cause some issues with GC (EDIT: in fact, ETS data is not garbage collected at all).<p>I believe that the JVM is a strict superset of any Erlang VM. In particular, HotSpot (the OpenJDK&#x27;s JVM) is so well implemented, that the main difference -- even when running programs that behave just like Erlang program -- is a huge boost in performance, and never needing to use C to achieve either good performance or some behavior that is unsupported by Erlang semantics.
评论 #9794764 未加载
评论 #9794502 未加载
评论 #9794373 未加载
评论 #9794352 未加载
评论 #9794262 未加载
评论 #9796893 未加载
ScootyPuff2000almost 10 years ago
This is a terrible paper. It barely made a point, and is riddled with distracting misspellings and grammatical errors.
评论 #9794337 未加载