我刚刚开始阅读关于Erlang的Joe Armstrongs的书,并听取了他关于软件工程广播的精彩演讲.
它是一个有趣的语言/系统,其时间似乎随着多核机器的出现而出现.
我的问题是:有什么可以阻止它被移植到JVM或CLR?我意识到两个虚拟机都没有设置为运行Erlang所要求的轻量级进程 - 但是这些虚拟机不能被线程模拟?我们可以在非Erlang VM上看到Erlang的轻量级或缩减版本吗?
鉴于它们依赖于可变对象,您无法使用JVM/CLR库.
Erlang异常处理与JVM和CLR异常完全不同,您需要以某种方式处理它.
将进程实现为线程意味着任何相当大的Erlang系统都会非常快地耗尽内存(创建时我的机器上的进程大小:1268字节,CLR中的线程堆栈大小:1 MB),并且进程之间的通信比Erlang慢得多.
你可能想要的是JVM或CLR上的Actor Model实现.
已经提到过Scala和Clojure.此外,JVM还有许多Actor实现: Kilim,Functional Java,Jetlang,Actors Guild,ActorFoundry,以及至少一个用于CLR:Retlang,可以从任何JVM/CLR语言使用.
出于教育原因,我们正在为CLR实现ErlangVM的一个子集.我们受到了Kresten Krab Thorup和他的项目Erjang的启发,Erjang是一个基于JVM的Erlang VM.Erjang使用kilim框架来表示轻量级进程,并开始引起注意.
Javalimit - Erjang的作者博客.
Erjang存储库
这是一个很好的讨论.某些上下文可能有用.
来自去年11月的Erlang邮件列表:
一个长讨论线程的开始
继续在这里
并且在这里有点精神
并以Joe的贡献结束.
我对JVM上关于Erlang的争论有何贡献?不,不是个好主意:(