functional programming for java developers tools for better concurrency abstraction and agility dean wampler