tree 9ef713cdee87a12e49ec0ac05a193f1b452c5712
parent e9021a607d55ed1802c44fd503fbf7640ad3ae98
author lamber-ken <lamberken@apache.org> 1590237597 +0800
committer GitHub <noreply@github.com> 1590237597 +0200
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsBcBAABCAAQBQJeyRmeCRBK7hj4Ov3rIwAAdHIIABildoWctSgwdvxQUn+DeqLc
 DclHYZe2BnDhPpCcgMApZwoAzaPnjIijDI1AW3lzsITf7t5X6xpTP5jL8bkW3K/9
 TvN84BZ2NuRmeV7ZasAF5yHUAa6614IrcMHiGcFGN4zFzb9asoUUEyOs+37248tI
 e3MGrfhWL4/ih3OizgK5cINigQZTfVrGrOEfgK0OjxbaXx30IEe533hWQVSCVOuz
 Ry8pAIEYWtzzSnvg49V8wfAx5REllpWwzogW324DaQB3A7M9rQvTAkt2M+Oi5wXI
 raJG+NiL7r+/l5oCevEtjfwPOwo9KvuwLLPCPHQFpSc8eyyK/Xy7r9VmPvRT0fc=
 =88W3
 -----END PGP SIGNATURE-----
 

[BUG] Fix wrong jdk version on install doc page

### Motivation

We have adopted `lamada expression` and `stream api` in code base, it needs jdk1.8 at least.

e.g org.apache.bookkeeper.meta.zk.ZKMetadataClientDriver
```
Override
public void setSessionStateListener(SessionStateListener sessionStateListener) {
    zk.register((event) -> {
        // Check for expired connection.
        if (event.getType().equals(EventType.None) && event.getState().equals(KeeperState.Expired)) {
            sessionStateListener.onSessionExpired();
        }
    });
}
```

![image](https://user-images.githubusercontent.com/20113411/82619119-a4b12b80-9c07-11ea-92e5-a1e3f5f9ff6b.png)

### Changes

Update `Java Development Kit 1.6` to `Java Development Kit 1.8`


Reviewers: Matteo Minardi <minardi.matteo@hotmail.it>

This closes #2343 from lamber-ken/clean-fix-install-doc