Jlang / CLR上的Erlang

时间:2009-04-20 23:02:15

标签: erlang clr jvm

我刚刚开始阅读关于Erlang的Joe Armstrongs的书,并听取了他关于软件工程广播的精彩演讲。

它是一种有趣的语言/系统,其时间似乎随着多核机器的出现而出现。

我的问题是:有什么可以阻止它被移植到JVM或CLR?我意识到两个虚拟机都没有设置为运行Erlang所要求的轻量级进程 - 但是这些虚拟机不能被线程模拟?我们可以在非Erlang VM上看到Erlang的轻量级或缩减版本吗?

9 个答案:

答案 0 :(得分:23)

由于它们依赖于可变对象,因此无法使用JVM / CLR库。

Erlang异常处理与JVM和CLR异常完全不同,您需要以某种方式处理它。

将进程实现为线程意味着任何可靠的Erlang系统都会非常快地耗尽内存(创建时我的机器上的进程大小:1268字节,CLR中的线程堆栈大小:1 MB)并且进程之间的通信比二郎。

您可能需要的是JVM或CLR上的Actor Model实现。

已经提到过Scala和Clojure。此外,JVM还有许多Actor实现: KilimFunctional JavaJetlangActors GuildActorFoundry以及至少一个CLR:Retlang,可以在任何JVM中使用/ CLR语言。

答案 1 :(得分:9)

出于教育原因,我们正在为CLR实现ErlangVM的一个子集。我们受到了Kresten Krab Thorup和他的项目Erjang的启发,Erjang是一个基于JVM的Erlang VM。 Erjang使用kilim框架来表示轻量级进程,并开始引起注意。

Javalimit - Erjang的作者博客。

Erjang repository

答案 2 :(得分:7)

这是一个很好的讨论。某些上下文可能有用。

去年11月的Erlang邮件列表:

我对JVM上关于Erlang的争论有何贡献? 不,不是一个好主意:(

答案 3 :(得分:4)

实际上没什么。您可以查看Clojure,这是一种在JVM上构建的有趣的函数语言。

答案 4 :(得分:3)

Axum - CLR的孵化项目 - 显然受到Erlang的启发。

答案 5 :(得分:2)

我不知道任何技术问题。

实际上 Scala (一种JVM功能语言)使用所谓的 Actor Model ,它与Erlang模型非常相似,并且据我所知无共享并发。 线程无法模拟Erlang进程。它们太重了。

答案 6 :(得分:2)

仅针对主题的完整性source

答案 7 :(得分:2)

Erjang是Erlang的虚拟机,可以在Java™上运行。

答案 8 :(得分:1)

可能?是。实际的?好吧,可能不是;他们以不同的方式解决不同的问题,因此在他们做事的方式上有很多重大差异。这将使移植变得困难,并且性能可能会严重受损。这并不意味着它无法完成,只是有更好的方法来实现这样一个端口带来的东西。