Functional declarative programming in Java