Pub. Date:
Springer US
The JR Programming Language: Concurrent Programming in an Extended Java

The JR Programming Language: Concurrent Programming in an Extended Java

by Ronald A. Olsson, Aaron W. KeenRonald A. Olsson


Current price is , Original price is $109.99. You

Temporarily Out of Stock Online

Please check back later for updated availability.


JR is an extension of the Java programming language with additional concurrency mechanisms based on those in the SR (Synchronizing Resources) programming language. The JR implementation executes on UNIX-based systems (Linux, Mac OS X, and Solaris) and Windows-based systems. It is available free from the JR webpage. This book describes the JR programming language and illustrates how it can be used to write concurrent programs for a variety of applications. This text presents numerous small and large example programs. The source code for all programming examples and the given parts of all programming exercises are available on the JR webpage. Dr. Ronald A. Olsson and Dr. Aaron W. Keen, the authors of this text, are the designers and implementors of JR.

Product Details

ISBN-13: 9781475788822
Publisher: Springer US
Publication date: 03/24/2013
Series: The Springer International Series in Engineering and Computer Science , #774
Edition description: Softcover reprint of the original 1st ed. 2004
Pages: 365
Product dimensions: 6.10(w) x 9.25(h) x 0.03(d)

Table of Contents

List of Figures
List of Tables

1: Introduction
1.1 Key JR Components
1.2 Two Simple Examples
1.3 Matrix Multiplication
1.4 Concurrent File Search
1.5 Critical Section Simulation
1.6 Translating and Executing JR Programs
1.7 Vocabulary and Notation

Part I. Extensions for Concurrency
2: Overview Of Extensions
2.1 Process Interactions via Operations
2.2 Distributing JR Programs
3: Op-methods, Operations, And Capabilities
3.1 Op-methods
3.2 Operation and Method Declarations
3.3 Operation Capabilities
4: Concurrent Execution
4.1 Process Declarations
4.2 The Unabbreviated Form of Processes
4.3 Static and Non-static Processes
4.4 Process Scheduling and Priorities
4.5 Automatic Termination Detection
5: Synchronization Using Shared Variables
5.1 The Critical Section Problem
5.2 An Incorrect Solution
5.3 An Alternating Solution
5.4 The Bakery Algorithm for Two Processes
5.5 The Bakery Algorithm for N Processes
6: Semaphores
6.1 Semaphore Declarations and Operations
6.2 The Dining Philosophers Problem
6.3 Barrier Synchronization
7: Asynchronous Message Passing
7.1 Operations as Message Queues
7.2 Invoking and Servicing via Capabilities
7.3 Simple Client-Server Models
7.4 Resource Allocation
7.5 Semaphores Revisited
7.6 Data-Containing Semaphores
7.7 Shared Operations
7.8 Parameter Passing Details
8: Remote Procedure Call
8.1 Mechanisms for Remote Procedure Call
8.2 Equivalence to Send/Receive Pairs
8.3 Return, Reply, and Forward Statements
9: Rendezvous
9.1 The Input Statement
9.2 Receive Statement Revisited
9.3 Synchronization Expressions
9.4 Scheduling Expressions
9.5 More Precise Semantics
9.6 Break And Continue Statements
9.7 Conditional Input
9.8 Arrays of Operations
9.9 Dynamic Operations
9.10 Return, Reply, and Forward Statements
10: Virtual Machines
10.1 Program Start-Up and Execution Overview
10.2 Creating Virtual Machines
10.3 Creating Remote Objects
10.4 Examples of Multiple Machine Programs
10.5 Predefined Fields
10.6 Parameterized Virtual Machines
10.7 Parameter Passing Details
10.8 Other Aspects of Virtual Machines
11: The Dining Philosophers
11.1 Centralized Solution
11.2 Distributed Solution
11.3 Decentralized Solution
12: Exceptions
12.1 Operations and Capabilities
12.2 Input Statements
12.3 Asynchronous Invocation
12.4 Additional Sources of Asynchrony
12.5 Exceptions and Operations
13: Inheritance Of Operations
13.1 Operation Inheritance
13.2 Example: Distributing Operation Servicing
13.3 Example: Filtering Operation Servicing
13.4 Redefinition Considerations
14: Inter-Operation Invocation Selection Mechanism
14.1 Selection Method Expression
14.2 View Statement
14.3 Selection Method Support Classes
14.4 Examples

Part II: Applications
15: Parallel Matrix Multiplication
15.1 Prescheduled Strips
15.2 Dynamic Scheduling: A Bag of Tasks
15.3 A Distributed Broadcast Algorithm
15.4 A Distributed Heartbeat Algorithm
16: Solving PDEs: Grid Computations
16.1 A Data Parallel Algorithm
16.2 Prescheduled Strips
16.3 A Distributed Heartbeat Algorithm
16.4 Using Multiple Virtual Machines
17: The Traveling Salesman Problem
17.1 Sequential Solution
17.2 Replicated Workers and a Bag of Tasks
17.3 Manager and Workers
18: A Distributed File System
18.1 System Structure
18.2 Directory and File Servers
18.3 User Interface
19: Discrete Event Simulation
19.1 A Simulation Problem
19.2 A Solution

Customer Reviews