Java(和JVM语言)有很多不同的Actor model实现。哪个Actor用于Java的模型库/框架?
许多Actor库和框架已经实现,以允许Java中的Actor风格编程(没有Actor内置)。我认为Actor模型具有很大的优势,但是Java的选择是压倒性的!
有人可以发布最流行的和提供一些洞察到哪些使用?根据每秒传递的消息,哪些产品具有吞吐量基准?
Java(和JVM语言)有很多不同的Actor model实现。哪个Actor用于Java的模型库/框架?
许多Actor库和框架已经实现,以允许Java中的Actor风格编程(没有Actor内置)。我认为Actor模型具有很大的优势,但是Java的选择是压倒性的!
有人可以发布最流行的和提供一些洞察到哪些使用?根据每秒传递的消息,哪些产品具有吞吐量基准?
This是一篇很好的文章系列。演示文稿请参阅this。 Carl Hewitt解释了演员模型here的本质。
Killim和Akka(scala)具有最佳性能。我会建议使用Akka。 Starting with Scala 2.11.0,Scala Actors库已弃用。已经在Scala 2.10.0中默认的actor库是Akka。如果您不想在Scala中完成所有编码,请使用akka作为前端并调用您的java代码。 Scala和Akka有非常好的语法和API。 Akka有一个名为“活动对象”的Java API。请注意,现在Akka发生了很多事情,因此代码库正在快速移动。请参阅Java getting started doc
Killim是基于java的编译器,但编译时编织。
Jetlang和FunctionalJava是不会执行编译时织(??不确定)选项,但不是一样快,阿卡和Killim(没有这方面的最新数据,但也有一些旧号码Jonas Boners and Viktor Klangs talk at Scala Days 2010)。
其他选项是使用常规的JMS(或其他一些MQ/PubSub)。你也可以做your own simple内部JVM发布渠道/工作者。或者只是使用java util concurrent的ExecutorService或com.google.common.util.concurrent
其它基于Scala的框架/用演员的实现库Stambecco,Lift和Scalaz。
其他类似型号是Hazlecast Distributed Executor Service,Oracle Coherence与InvocableService,GigaSpaces执行程序或IBM eXtreme Scale。但是这些在一定程度上缺少了“演员是系统”的部分。
另外值得一提的是,Akka有一个Java API(活动对象) – 2010-07-28 23:25:52
add Reactor和RxJava – 2015-03-18 15:34:11
也注意Vert.x – 2016-11-03 10:24:14
斯卡拉演员是我最好的建议。
可以在Java中使用Scala Actor吗? (我仍然很欣赏使用JVM的答案。) – 2010-07-28 20:52:43
Scala是100%兼容JVM的语言,因此,您可以在Java中使用它。 – 2010-07-28 21:25:27
我认为你应该说“使用它与Java”。例如,从Scala调用Java并从Java调用Scala很容易。 但它只是另一个jar文件:http://blog.lostlake.org/index.php?/archives/73-For-all-you-know,-its-just-another-Java-library。 html – oluies 2010-07-28 22:01:40
我们去年发布了一个名为“JVM平台的演员框架:比较分析”的相关研究,并比较了一些基于JVM的Actor框架的语法,语义和性能。它可在https://www.researchgate.net/profile/Gul_Agha/publication/221302944_Actor_frameworks_for_the_JVM_platform/links/55aeb2df08aed614b09a775c.pdf?origin=publication_detail。希望对你有帮助。
您是否愿意评论自从发生了什么? – 2012-04-01 11:40:21
嗯,我在斯卡拉寻找一个好的演员实施,看着斯卡拉和阿卡。我发现这些都过于复杂。然后我找到了电梯演员,我找到了简单,优雅和精心设计。以上所有内容都可以从Java使用(通过Java友好的命名方法)。
讨论在:http://erikengbrecht.blogspot.com/2009/06/pondering-actor-design-trades.html
你只需要抬起,演员_ ?.罐子和升降共同_ ?.罐子从电梯下载(加上Scala的标准库)。看看升降机演员斯卡拉来源:非常整洁。
Jumi Actors是Java的演员库。它被设计成在Java代码中使用是自然的 - 你不需要为每条消息创建一个类,但是消息在接口上被表示为方法。它的演员也是垃圾收集,所以他们不需要明确停止。使用Jumi Actor的代码是testable,这两个单元都是可测试的,没有actors容器,可以使用确定性的单线程容器实现进行集成测试。
与Akka Actors相比,二进制大小(33 KB vs 10+ MB)要小得多,而且要快得多。看看the Pi example in Akka Tutorial和the same example using Jumi Actors,与Akka计算大约需要480-520毫秒,但与Jumi演员只有350-390毫秒。 (如果演员不做任何工作,我们将仅测量消息传递,这种差异无疑会更大。)在比较启动性能时,启动Akka容器需要620 ms,但启动Jumi Actors容器只需要25 ms。
另一种选择是GPars。基于Groovy,但可以像Java一样从Java调用。
看不到它是如何重复http://stackoverflow.com/questions/436050/events-in-java,除了其中一个答案是“演员”。第一种是死的(没有提到Kilim,Akka或Jetlang)。 – 2010-07-28 22:06:51
也搜索“[java] actors” – oluies 2010-07-29 07:28:52
我有一个很酷的:https://github.com/RuedigerMoeller/kontraktor – 2014-05-09 21:21:12