我读过奥德斯基的文章“贬低观察者模式 与Scala.React“
github看起来已经放弃了:
https://github.com/ingoem/scala-react
此外,最近的Reactive Programming Coursera类使用了JavaRx Observable库(当然还有Scala支持)。
这背后有故事吗?我可以假设scala.react只是没有做得很远。基于Observable的JavaRx库是否可取?或者我们可以从Typesafe中得到类似或更好的东西吗?
答案 0 :(得分:31)
引用李浩义,
谁使用过Scala.React,他的观察是:
他有很多问题,但没有设法联系出版物的作者......
Li还实施了Scala.RX来解决这些问题和其他问题。 代码很好,但我无法观察到将其推入标准Scala库的任何操作。此外,李是正在进行的Scala& amp; Javascript努力因此他主要是在该项目中占据。
回答你的问题:
基于Observable的JavaRx库是否可取?
JavaRx基于观察者模式Martin Odersky试图弃用......
https://github.com/Netflix/RxJava/blob/master/rxjava-core/src/main/java/rx/Observer.java https://github.com/Netflix/RxJava/blob/master/rxjava-core/src/main/java/rx/Observable.java
虽然马丁在论文中指出的每一个问题都是真实有效的, Netflix利用了Observables的一个主要财产:
期货和观察者共享一个同构,因此是可组合的。 在JavaRx中,Observable返回事件流。然而,一个未来 另一方面,可以看作是一个返回的专业Observable 只有一个单身人士。在这种情况下,Futures和Observables可以异步组合 只要它有意义。
这背后有故事吗?
不知道但是Netflix可能做了一些赞助。您可能已经注意到RX钻石示例中出现了Netflix徽标....
或者我们可以期待Typesafe中类似或更好的东西吗?
老实说,我怀疑。为什么他们呢? Typesafe忙着推他们的 进入行业并进一步推进Akka。 Scala.React是一个很好的主意但是 没有任何现金,而Akka带给他们付钱的客户......
相反,我会问一个问题究竟是什么Scala.React,毕竟,试图解决?
恕我直言,JavaRx已经做得很好,正在生产中并且Scala.React可能添加的那些改进很可能不足以进行重大改变。答案 1 :(得分:11)
RxJava:Reactive Extensions与scala.react几乎没有共同之处。 RxJava处理观察者和并发性,但对评估顺序的正确性几乎没有帮助。基本上它只是事件流,如果分成几个效果的事件再也不会连贯。基本上它是一团糟,只能用于GUI,其中计算精度不是那么重要。你永远不知道什么时候得到额外的更新或额外的刷新。
scala.react是一个单线程计算模型,它使用由计算之间的函数依赖性定义的严格评估顺序来处理计算顺序。
Akka,或演员,再次,是第三个模型,完全不同的东西。它只是带有一些花哨的语法和计划的线程,真的。
难怪每个人都感到困惑。可悲的是scala.react并没有移动到任何地方,这很糟糕,因为它是这三者中唯一的创新型号。