I think we should wait until 2.0 before dropping support for less than JDK 8. That's a pretty big deal. But, for 2.0, that would be fine IMHO.
> On Sep 8, 2016, at 8:54 PM, Duo Zhang <zhang...@apache.org> wrote: > > The main reason is the asynchronous api we want to introduce in HBase > today. See HBASE-13784 and HBASE-16505. > > The CompletableFuture in java8 is very suitable to use as the return value > of a async method. We can not use it if we still want to support java7, and > sadly, there is no candidate which is good enough to replace > CompletableFuture. ListenableFuture in guava or Promise in netty are good, > but we do not want to expose third-party classes in our public > API(especially guava, you know...). And we can also implement our own > ListenableFuture but it just a copy of guava. Or introduce a simple > Callback interface which does not need much code(for us) but this is a code > style around 2000s so people will not like it... > > And luckily, I found that in our documentation > > http://hbase.apache.org/book.html#basic.prerequisites > > We only say that 1.3 will be compatible with jdk7, not all 1.x. > > So here I propose that we drop the support of jdk7 in a future 1.x release, > maybe 1.4? Thus we can use CompletableFuture in both master and branch-1. > > Thanks.