Tim*_*per 11 .net java linq system.reactive
是否有相当于Java 的Reactive Extensions(.NET)?
关于Rx(Reactive Extensions)
Rx是一个使用可观察集合组成异步和基于事件的程序的库.
我知道规则引擎,比如来自JBOSS的Drools,但还有其他一些更接近Microsoft .NET方法的方法吗?
bru*_*cet 18
根据这篇NetFlix博客文章,他们已将Rx移植到Java.它似乎还没有,但它们确实有发布这些内部开发的工具作为开源的历史,所以我希望它最终会被发布.
Jon*_*eet 11
我不知道一个 - 坦率地说,这样一个整洁的方式很难做到.穿线方面很好; Java在线程方面非常强大......但目前,该语言并不支持适当的功能.
LINQ的一个简洁的设计特性是一切都基于接口,然后扩展方法用于添加额外的功能.这允许代码流畅地阅读 - 想象一下你是否必须写:
IObservable<int> = Observable.Select(
Observable.Where(
source, x => x.SomeCondition)
x => x.SomeProjection);
Run Code Online (Sandbox Code Playgroud)
伊克.扩展方法更优雅:
IObservable<int> = source.Where(x => x.SomeCondition)
.Select(x => x.SomeProjection);
Run Code Online (Sandbox Code Playgroud)
现在Java版本可能基于抽象基类,但这会失去一些优雅.
接下来是lambda表达式和方法组转换 - 这些通常是LINQ的基础; Java中最接近的等价物(匿名内部类)太难看了,无法在C#中使用lambda表达式的任何地方使用它.
基本上,Java版本的Rx是可行的,但它不会像C#版本那样优雅 - 这可能就是为什么我没有意识到这一点.Java可能还有其他"异步驱动"的库,但它们不太可能像Rx一样全面和整洁.
这是可能的,在Java 7中的变化将使这个更加可行; 据我所知,扩展方法没有被引入,但如果lambda语法最终没问题,抽象基类版本将是合理的...
| 归档时间: |
|
| 查看次数: |
4495 次 |
| 最近记录: |