be compatible with jdk8