我刚刚开始阅读关于Erlang的Joe Armstrongs的书,并听取了他关于软件工程广播的精彩演讲。
它是一种有趣的语言/系统,其时间似乎随着多核机器的出现而出现。
我的问题是:有什么可以阻止它被移植到JVM或CLR?我意识到两个虚拟机都没有设置为运行Erlang所要求的轻量级进程 - 但是这些虚拟机不能被线程模拟?我们可以在非Erlang VM上看到Erlang的轻量级或缩减版本吗?
答案 0 :(得分:23)
由于它们依赖于可变对象,因此无法使用JVM / CLR库。
Erlang异常处理与JVM和CLR异常完全不同,您需要以某种方式处理它。
将进程实现为线程意味着任何可靠的Erlang系统都会非常快地耗尽内存(创建时我的机器上的进程大小:1268字节,CLR中的线程堆栈大小:1 MB)并且进程之间的通信比二郎。
您可能需要的是JVM或CLR上的Actor Model实现。
已经提到过Scala和Clojure。此外,JVM还有许多Actor实现: Kilim,Functional Java,Jetlang,Actors Guild,ActorFoundry以及至少一个CLR:Retlang,可以在任何JVM中使用/ CLR语言。答案 1 :(得分:9)
出于教育原因,我们正在为CLR实现ErlangVM的一个子集。我们受到了Kresten Krab Thorup和他的项目Erjang的启发,Erjang是一个基于JVM的Erlang VM。 Erjang使用kilim框架来表示轻量级进程,并开始引起注意。
Javalimit - Erjang的作者博客。
答案 2 :(得分:7)
这是一个很好的讨论。某些上下文可能有用。
去年11月的Erlang邮件列表:
继续here
并且有点心理here
以Joe的contribution结尾。
我对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)
可能?是。实际的?好吧,可能不是;他们以不同的方式解决不同的问题,因此在他们做事的方式上有很多重大差异。这将使移植变得困难,并且性能可能会严重受损。这并不意味着它无法完成,只是有更好的方法来实现这样一个端口带来的东西。