Java的哪个Actor模型库/框架?
Java(和JVM语言)有很多不同的Actor模型实现。
许多Actor库和框架已经被实现来允许Java中的Actor风格的编程(它没有内build的Actor)。 我认为Actor模型有很大的优势,但是对Java的select是压倒性的!
有人可以发布最stream行的,并提供一些洞察到哪些使用? 对于每秒通过消息的吞吐量,哪些是基准的?
这是一个很好的文章系列。 另请参阅此演示文稿。 卡尔·休伊特(Carl Hewitt)在这里解释了计算主体模型的本质。
Killim和Akka (斯卡拉)performance最好。 我会build议使用Akka。 从Scala 2.11.0开始 ,Scala Actors库已经被弃用了。 已经在Scala 2.10.0中默认的actor库是Akka。 如果你不想在Scala中完成所有的编码,可以使用akka作为前端并调用你的java代码。 Scala和Akka有非常好的语法和API。 Akka有一个名为“活动对象”的Java API。 请注意,现在Akka发生了很多事情,所以代码库正在快速移动。 请参阅Java入门文档
Killim是基于java的,但编译时间编织。
Jetlang和FunctionalJava是没有编译时间编译的选项(不确定),但没有Akka和Killim那么快(目前没有这方面的数据,但是Jonas Boners和Viktor Klangs在Scala Days 2010 )。
其他选项是使用常规的JMS(或其他一些MQ / PubSub)。 你也可以做你自己的简单的内部JVM出版渠道/工作人员。 或者只使用java util并发 ExecutorService或com.google.common.util.concurrent
其他基于Scala的框架/库与Actor实现是Stambecco , Lift和Scalaz 。
其他类似的模型是Hazlecast分布式执行器服务 ,Oracle Coherence与InvocableService,GigaSpaces执行器或IBM eXtreme Scale。 但是这些在一定程度上缺less了“演员是系统”的一部分。
Jumi Actor是Java的演员库。 它被devise成在Java代码中使用是自然的 – 你不需要为每个消息创build一个类,但是消息在接口上被表示为方法。 而且它的actor也是垃圾收集的,所以不需要明确的停止。 使用Jumi Actor的代码是可testing的 ,两个单元都是可testing的 ,没有actors容器,可以使用确定性的单线程容器实现进行集成testing。
与Akka Actors相比,二进制大小(33 KB vs 10+ MB)要小得多,速度要快得多。 看Akka教程中的Pi例子和使用Jumi Actor的例子 ,Akka的计算大约需要480-520 ms,但是Jumi Actor只需要350-390 ms。 (如果演员不做任何工作,我们将只测量消息传递,这种差异无疑会更大)。在比较启动性能时,启动Akka容器需要620 ms,但启动Jumi Actors容器只需要25 ms。
我们去年发布了一个名为“JVM平台的Actor框架:比较分析”的相关研究,并比较了一些基于JVM的Actor框架的语法,语义和性能。 它可在https://www.researchgate.net/profile/Gul_Agha/publication/221302944_Actor_frameworks_for_the_JVM_platform/links/55aeb2df08aed614b09a775c.pdf?origin=publication_detail 。 希望对你有帮助。
另一个select是GPars 。 基于Groovy,但可以像Java一样从Java调用。
斯卡拉演员是我最好的build议。
那么,我正在斯卡拉寻找一个好的演员实施,并且看着斯卡拉和阿卡。 我发现这两个过于复杂。 然后我find了电梯演员,我发现简单,优雅和精心devise。 以上所有内容都可以从Java使用(通过Java友好的命名方法)。
讨论: http : //erikengbrecht.blogspot.com/2009/06/pondering-actor-design-trades.html
下载地址: http : //liftweb.net/
你只需要lift-actor_ ?. jar和lift-common_ ?. jar就可以从Lift下载(加上Scala std lib)。 看看升降机演员斯卡拉来源:非常整洁。