Hi Ollie,
I don't think ADBA has completely abandoned juc.Flow, but they did raise some very important points - all the APIs proposed were practically unusable without a third party streaming library.
This is one reason why we need to discuss approach to Reactive in EE4J - the reality is that at the moment, support for juc.Flow is insufficient, neither the JDK, nor Jakarta EE (someone correct me if I'm wrong) should be providing APIs that require a third party application developer facing API in order to use them. Now, hopefully that will change, as there is work being done in the JDK right now to address this. So, there's nice green pastures in the future, if we plan it well. The question is, how do we ensure that the reactive APIs that we provide today are usable today when the tools are insufficient, but will also converge on something that is well integrated in future?
As a practical example, I think it would be inappropriate to introduce a new API today that relied 100% on Reactive Streams to be useful, but rather, a new API today should provide its own asynchronous abstraction that people can easily use today (perhaps heavily using CompletionStage), with a built in adapter like asPublisher() or asSubscriber() so that as Reactive Streams support gets better and more widespread in the Java standards, the API will be able to benefit from the seamless integration that Reactive Streams is designed for. Or an approach like JDK9 Http client might be useful, they use juc.Flow to consume/produce response/request bodies, but they provide out of the box implementations for the most common tasks, ensuring that the API is usable today without JDK support for building reactive streams, but also ensuring that as JDK support for Reactive Streams increases, what application developers can easily do with the HTTP client API will increase too.
Regards,
James