add JDK8 Optional support