【问题标题】:why is scala actors deprecated in 2.10?为什么 scala 演员在 2.10 中被弃用?
【发布时间】:2013-01-14 06:49:14
【问题描述】:

我只是 comparing 不同的 scala actor 实现,现在我想知道在 2.10 中弃用现有 scala actor 实现并用 Akka 实现替换默认 actor 的动机是什么? migration guidefirst announcement 都没有给出任何解释。

根据比较,这两种解决方案有很大的不同,因此保留两者都会有好处。因此,我想知道导致此决定的现有实施是否存在任何重大问题?换句话说,这是技术决定还是政治决定?

【问题讨论】:

    标签: scala akka actor scala-2.10


    【解决方案1】:

    我只能给你一个猜测答案:

    Akka 提供了一个稳定而强大的库来处理 Actors,以及许多处理高并发的特性(futures、agents、transactionalactors、STM、FSM、非阻塞 I/O,...)。

    它还以比 scala 更安全的方式实现 actor,因为客户端代码只能访问通用 ActorRef。这使得除了通过消息传递之外无法与参与者进行交互。
    [已编辑: 正如 Roland 所指出的,这还通过监督层次结构和位置透明度启用了附加功能,例如 容错:部署能力本地或远程的参与者,无需更改客户端代码。
    整体设计更接近于 erlang 中的原始设计。]

    许多核心功能在 scala 和 akka actor 中重复,因此统一似乎是最明智的选择(鉴于这两个库的开发团队现在也属于同一家公司:Typesafe)。
    主要收获是避免重复相同的核心功能,这只会造成混淆和兼容性问题。

    鉴于需要做出选择,剩下的只是决定哪个是标准实现。

    很明显,Akka 在这方面可以提供更多功能,它是一个成熟的框架,已经包含许多企业级功能,并且在不久的将来还会有更多功能。

    我想不出 scala.actors 能够完成 akka 无法完成的特定情况。


    附言做出了类似的推理,导致在 2.10 中统一了标准 future/promise 实现

    整个 scala 语言和社区都必须从简化的界面中获得基础语言功能,而不是由不同框架组成的零散场景,每个框架都有自己的语法和模型来学习。

    对于其他更高级的方面,例如网络框架,开发人员可以从更丰富的可用解决方案全景中获益。

    【讨论】:

    • 最终,ActorRef 使监督和位置透明度的所有高级功能成为可能,所以是的,如果你想要一个单词摘要,那就是它。
    猜你喜欢
    • 2011-11-12
    • 1970-01-01
    • 2013-08-05
    • 2013-05-11
    • 1970-01-01
    • 2010-12-04
    • 2018-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多