Hi all, Luke, Thomas, and I had some in-person discussions about the use of Java 8 futures and Guava futures in the portability support code. I wanted to bring our thoughts to the dev list for feedback.
As background: - Java 5+ "Future" lacks the main purpose of future, which is async chaining. - Guava introduced ListenableFuture to do real future-oriented programming - Java 8 added CompletionStage which is more-or-less the expected interface It is still debatable whether Java got it right [1]. But since it is standardized, doesn't need to be shaded, etc, it is worth trying to just use it carefully in the right ways. So we thought to propose that we migrate most uses of Guava futures to Java 8 futures. What do you think? Have we missed an important problem that would make this a deal-breaker? Kenn [1] e.g. https://stackoverflow.com/questions/38744943/listenablefuture-vs-completablefuture#comment72041244_39250452 and such discussions are likely to occur whenever you bring it up with someone who cares a lot about futures :-)