"Concurrent programming carries the promise of increased program performance from overlapping the execution of cooperating components. Explicitly concurrent design and implementation of concurrent programs. Such languages provide support for creating threads (separate flows of execution), sending and receiving messages, and coordinating cooperation through synchronization. Furthermore, and that mask communication between physical machines. that can aid in program design. These languages provide mechanisms to create programmers can create object libraries that can be reused to increase productivity and decrease errors. Many object-oriented programming languages provide such object libraries. This dissertation work integrates an object-oriented language with a flexible concurrency model to provide a well-defined concurrent object-oriented language in which parallel and distributed programs and libraries can be written. The specific work presented integrates the SR concurrency model with the Java programming language. The result is the design and implementation of the JR concurrent object-oriented programming language. JR supports a rich concurrency model for writing tightly-coupled concurrent programs and for writing reusable concurrent libraries. Moreover, JR provides support for writing programs with dynamic communication paths. This dissertation presents, first, the design and implementation of the JR programming language. Next, an extension to Java's exception handling model is discussed. This extended exception handling model completes the integration of the SR concurrency model with the Java programming language. Specifically, Java's exception handling model is extended to support exception handling during asynchronous invocation. Finally, the dissertation presents a study in the design and analysis of several inter-operation invocation selection mechanisms. The proposed mechanisms provide, unlike preexisting mechanisms, access to the entire set of pending messages when determining which message to receive.