Concurrent, Real-Time and Distributed Programming in Java