为什么有些东西在 Scala 的库中定义了两次?

Why are some things defined twice in Scala's libraries?

我发现 Scala 的一些库(包括它自己的库)以如此混乱的方式组织起来,这真的让我很困扰并且很难记住。我来自 .NET 背景,那里的一切都很容易上手,而且没有 "gotcha's".

我现在记得的一个例子是导入Play的演员系统时,定义了两次:

这是为什么? play.libs 和 play.api.libs 这两个包有什么区别?

那是因为一些 Scala 库(包括 Play)有一个 Scala API 和一个 Java。

示例:
* play.api.libs.concurrent.Akka
* play.libs.Akka

我同意 Play 的包名称可以更清楚。