Modern Java in Action: Lambdas, streams, functional and reactive programming