代码之家  ›  专栏  ›  技术社区  ›  Fortyrunner

JVM/CLR上的Erlang

  •  11
  • Fortyrunner  · 技术社区  · 17 年前

    我刚刚开始阅读乔·阿姆斯特朗(Joe Armstrong)关于Erlang的书,听了他在软件工程电台上的精彩演讲。

    它是一种有趣的语言/系统,随着多核机器的出现,它的时代似乎已经到来。

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

    9 回复  |  直到 17 年前
        1
  •  23
  •   Alexey Romanov    17 年前

    您不能使用JVM/CLR库,因为它们依赖于可变对象。

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

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

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

    Scala和Clojure已经提到了。此外,JVM有许多参与者实现: Kilim Functional Java , Jetlang , Actors Guild , ActorFoundry Retlang ,可从任何JVM/CLR语言使用。

        2
  •  9
  •   topless    16 年前

    出于教育原因,我们正在为CLR实现ErlangVM的一个子集。我们深受Kresten Krab Thorup和他的项目Erjang(一个基于JVM的Erlang虚拟机)的启发。Erjang使用kilim框架来表示轻量级流程,它开始引起人们的注意。

    Javalimit -Erjang的作者博客。

    Erjang repository

        3
  •  7
  •   Gordon Guthrie    17 年前

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

    从去年11月的Erlang邮件列表中:

    我在JVM上关于Erlang的辩论中的贡献? 不,不是个好主意:(

        4
  •  4
  •   Charlie Martin    17 年前

    事实上,什么都没有。你可以看看 Clojure ,这是一种构建在JVM上的有趣的函数式语言。

        5
  •  3
  •   Curt Hagenlocher    17 年前
        6
  •  2
  •   user21714    17 年前

    我不知道这里面有什么技术问题。

    事实上 斯卡拉 (JVM函数语言)使用所谓的 演员模型 这与无共享并发的Erlang模型非常相似,而且据我所知,它大量借鉴了Erlang模型。 线程无法模拟Erlang进程。它们太重了。

        7
  •  2
  •   Hynek -Pichi- Vychodil Paulo Suassuna    17 年前

    只是为了补充完整性 source 关于主题。

        8
  •  2
  •   Bax    12 年前
        9
  •  1
  •   Adam Jaskiewicz    17 年前

    可能的对实际的嗯,可能不是,;他们以非常不同的方式解决不同的问题,因此在做事的方式上有很大的不同。这将使移植变得困难,性能可能会受到严重影响。这并不意味着它不能实现,只是有更好的方法来实现这样一个端口将带来的功能。