【发布时间】:2015-04-19 18:15:18
【问题描述】:
在 Java 8 中引入 CompletableFutures 带来了 scala.concurrent.Future 中可用的语言特性,例如一元转换。
有什么区别,为什么 Scala 开发人员应该更喜欢 Scala Futures 而不是 java 8
CompletableFuture?是否还有充分的理由在 Java 中通过
akka.dispatch桥使用scala.concurrent.Future?
【问题讨论】:
-
恕我直言,因为 CompletableFuture 上的单子操作在 Java 8 和 Scala 集合中都没有与单子操作一致地定义 - 所以语义不一致。而且对我来说,这种语义似乎太多余了。 + 您将不得不处理 Java-Scala 互操作性,而不会从中获利。
-
你能用我的回答详细说明你的评论吗?在 Java 中使用 Scala 期货的 akka.dispatch 桥怎么样?
-
1) 我的意思是 CompletableFuture 上没有
stream方法,所以你不能像往常一样在那里调用 map-reduce (以及像过滤器这样的结果函数) - 必须使用一些丑陋的方法。当然也没有 CompletableFuture 的理解。我在实践中没有使用 CompleteFuture(它太丑了) - 所以不能完全回答你的问题 2)据我所知,这个话题是关于 java 在 scala 中的未来。 -
你对 for 理解是正确的。我还补充了第二点,能否请您发表一下意见?
-
存在一些潜在的互操作性问题:akka.dispatch.Future 需要 scala 的函数。 Scala 2.11/2.12 - github.com/scala/scala-java8-compat 与 Java 8 函数有一个实验性的互操作性,但你知道它是实验性的。