Netflix为Java引入了响应式扩展

Netflix为MS Open Tech的响应式扩展(Reactive Extensions)提供了Java实现并将之开源。但若说RxJava只是针对Java的,就会产生误导。它被设计为亦可用于其他JVM语言。“目前支持的语言(除了Java本身外)包括Groovy、Clojure、Scala和JRuby。”

Netflix创建了RxJava来简化服务器端并发。他们的目标是允许客户端触发单个可在服务器并行执行的“重”客户端请求。Ben Christensen和Jafar Husain解释道:

服务器端并发可以有效降低网络通信量。如果不能在服务器并发执行,那么单个“重”客户端请求可能不如多个“轻”请求,因为一个设备上的每个网络请求可以天然地和其他网络请求并行执行。如果服务器端执行的某个崩溃的“重”请求没有达到并行执行的要求,那么即使算上节省的网络传输时间,也可能会慢于多个“轻”请求。

根据Ben和Jafar所说,函数式响应要优于Future和回调函数,因为“函数式响应提供了一系列能够对Observable进行过滤、选择、转换、联合和组合的操作符,可以进行高效地执行和组合。”

通过让服务层API中的所有方法返回Observable ,开发者可以与这些方法的实现隔离开来。这些方法可以在今天异步调用,也可以在明天同步返回。服务方法还可以自由选择阻塞和非阻塞I/O,前者可在资源受限时使用。

RxJava支持“Java 5(以支持Android)和更高版本,最终目标是基于支持Lambda的Java 8进行构建。”与原始 Rx一样,Netflix的RxJava也是基于Apache License。你可以在github上下载 RxJava。

查看英文原文: Netflix Brings Reactive Extensions to Java

你可能感兴趣的:(Netflix为Java引入了响应式扩展)