2017-09-23 8 views
5

먼저 Reactive Programming에 대한 경험이 많지 않습니다.Java 9 Flow Interfaces 사용 방법/Java 9에서 Java 9 Flow Interfaces를 포함시키는 방법은 무엇입니까?

JDK 9 (Flow and its nested interfaces)에는 인터페이스가 몇 개 밖에 없으므로 JDK 9에는 명백하게 RxJava와 같은 반응 라이브러리가 포함되어 있지 않습니다.

Javadoc에는 Publisher, SubscriptionSubscriber의 임 플리 멘 테이션에 대한 몇 가지 예가 있습니다. 그러나 이것들은 상당히 낮은 레벨 인 것으로 보이며 반응이없는 운영자 나 역압을 다루지 않습니다.

그래서 인터페이스를 JDK에 포함시키는 것이 무엇입니까?

반응 라이브러리의 벤더는이를 사용하기로되어있어서 RxJava와 같은 Java 구현은 공통 인터페이스 세트를 사용합니까? (JPA와 Hibernate와 비슷하다.)

+0

또한 Java 9는 rx-java에서 관찰 가능한 메소드를 지원합니까? Java 9는 rx-java에 인프라 만 제공 했습니까? –

+3

이전의 연구를 수행 했습니까? 예를 들어 해당 jep를 읽었습니까? – GhostCat

+1

@GhostCat이 지적한 것을 추가하기 위해 [JEP # 266] (http://openjdk.java.net/jeps/266)을 살펴보십시오. – nullpointer

답변

8

:의

세부 사항은 (인터페이스를 사용하는 방법에 대한 정보도하고)이 링크에 자세히 설명되어 있습니다 Reactive JDBC, Networking, IO 등 개념상 상호 운용을위한 새로운 랠리 포인트 역할을하지만 Really Streams와 같은 랠리 포인트는 이미 Java 6 요구 사항을 통해 더 많은 잠재 고객을 대상으로합니다.

위에서 언급 한 것처럼 4 개의 인터페이스와 SubmissionPublisher 그 자체는 제한적으로 사용됩니다. Java에 Kotlin 및 C#과 유사한 확장 메서드가있는 경우 인터페이스를 포함하면 훨씬 더 흥미로운 영향을 미칠 수 있습니다.

안타깝게도 기존 라이브러리가 Java 9 Flow와 Reactive-Streams간에 변환하거나 Java 9 Flow API로 전체 라이브러리를 다시 구현하는 데 교량을 사용해야한다는 것을 의미합니다. Java 9가없는 사람 (즉, Android) .

주요 라이브러리는 이미 이러한 브릿지 (RxJava 2 Jdk 9 Interop, Reactor-Core Interop)를 가지고 있으며 리 액티브 - 스트림은 own bridge eventually입니다. Java 9 기능을 사용하기 위해 작성된 도 있습니다.

+2

이 인상적인 목록에 추가하기 만하면 Android 용 Flow backport가 존재합니다. [streamsupport-flow] (https://sourceforge.net/projects/streamsupport/) – Sartorius

2

흐름 인터페이스의 목적은 "논 - 블로킹 배압으로 비동기 스트림 처리를위한 표준"을 제공하는 것이다. 이미 Rx와 같은 많은 솔루션이 있지만 공통 인터페이스를 도입하여 상호 운용성을 극대화합니다.

생산자가 콜백을하면 생산자가 처리 할 수있는 것보다 빠른 속도로 콜백을 호출 할 수 있다는 것이 역압입니다.

소비자와 생산자가 서로를 차단하도록 동일한 나사산을 사용하여 배킹을 블로킹하기가 쉽습니다.

이 Flow 인터페이스를 사용하면 NON BLOCKING 백 프레셔를 달성 할 수 있습니다. 같은, 그것은 주로 어떤 미래 버전에서 내부적으로 반응 프로그램을 사용하는 자바 자체를 할 수 있습니다 https://aboullaite.me/java-9-new-features-reactive-streams/