Concurrent and Distributed Computing in Java