This book provides the conceptual foundation for the design and development of complex distributed and real-time applications. It summarizes a large spectrum of concepts; but by concentrating on Java and presenting mainly the programmatic aspects and basic functioning of the concepts, the readability and ease of comptehension are greatly improved. The reader will be guided to determine thimself which is the best global ardchitectures, namely sets of components, threads and links, around which the functionalities of the application may be built and checked incrementally. One of the strengths of this book is the availability of simple examples, which have all been carefully checked and are available at the book's website.