Synopses & Reviews
"Ever since I first saw David Gelernter's Linda programming language almost twenty years ago, I felt that the basic ideas of Linda could be used to make an important advance in the ease of distributed and parallel programming. As part of the fruits of Sun's Jini project, we now have the JavaSpaces technology, a wonderfully simple platform for developing distributed applications that takes advantage of the power of the Java programming language. This important book and its many examples will help you learn about distributed and parallel programming. I highly recommend it to students, programmers, and the technically curious." Bill Joy, Chief Scientist and co-founder, Sun Microsystems, Inc. JavaSpaces technology, a powerful Jini service from Sun Microsystems, facilitates building distributed applications for the Internet and Intranets. The JavaSpaces model involves persistent object exchange "areas" in which remote processes can coordinate their actions and exchange data. It provides a necessary ubiquitous, cross-platform framework for distributed computing, emerging as a key technology in this expanding field.
This book introduces the JavaSpaces architecture, provides a definitive and comprehensive description of the model, and demonstrates how to use it to develop distributed computing applications. The book presents an overview of the JavaSpaces design and walks you through the basics, demonstrating key features through examples. Every aspect of JavaSpaces programming is examined in depth: entries, distributed data structures, synchronization, communication, application patterns, leases, distributed events, and transactions.
You will find information on such vital topics as:
- Distributed data structures
- Synchronization techniques
- Loosely coupled communication
- Message passing
- Channel data structures for communication
- Application patterns such as replicated worker, command pattern, and marketplace
- Leases and automated lease renewal
- Using distributed events with spaces
- Handling partial failure with distributed transactions
- The official JavaSpaces specification from Sun Microsystems
JavaSpaces Principles, Patterns, and Practice also includes two full-scale applications--one collaborative and the other parallel--that demonstrate how to put the JavaSpaces model to work.
0201309556B04062001
Review
"I am very impressed with this book. It's well written, with easy to understand and well-explained code examples. It shows with its many examples how JavaSpaces can be used to simplify the design of solutions to problems common to many distributed applications. It also covers Jini's programming model. I would recommend this book to anyone who is planning to use JavaSpaces, but also to anyone who is starting out doing distributed systems in general." - artima.com - a resource for Java and Jini Developers
Synopsis
"Ever since I first saw David Gelernter's Linda programming language almost twenty years ago, I felt that the basic ideas of Linda could be used to make an important advance in the ease of distributed and parallel programming. As part of the fruits of Sun's Jini project, we now have the JavaSpaces technology, a wonderfully simple platform for developing distributed applications that takes advantage of the power of the Java programming language. This important book and its many examples will help you learn about distributed and parallel programming. I highly recommend it to students, programmers, and the technically curious."
-Bill Joy, Chief Scientist and co-founder, Sun Microsystems, Inc.
JavaSpaces(tm) technology, a powerful Jini(tm) service from Sun Microsystems, facilitates building distributed applications for the Internet and Intranets. The JavaSpaces model involves persistent object exchange "areas" in which remote Java(tm) processes can coordinate their actions and exchange data. It provides a necessary ubiquitous, cross-platform framework for distributed computing, emerging as a key technology in this expanding field.
This book introduces the JavaSpaces architecture, provides a definitive and comprehensive description of the model, and demonstrates how to use it to develop distributed computing applications. The book presents an overview of the JavaSpaces design and walks you through the basics, demonstrating key features through examples. Every aspect of JavaSpaces programming is examined in depth: entries, distributed data structures, synchronization, communication, application patterns, leases, distributed events, and transactions.
You will find information on such vital topics as:
x Distributed data structures
x Synchronization techniques
x Loosely coupled communication
x Message passing
x Channel data structures for communication
x Application patterns such as replicated worker, command pattern, and marketplace
x Leases and automated lease renewal
x Using distributed events with spaces
x Handling partial failure with distributed transactions
x The official JavaSpaces specification from Sun Microsystems
JavaSpaces Principles, Patterns, and Practice also includes two full-scale applications-one collaborative and the other parallel-that demonstrate how to put the JavaSpaces model to work.
Synopsis
Creating applications that run across a network of machines is notoriously difficult, even with Java, because creating distributed applications potentially entails coordinating the actions of many active processes. JavaSpaces, an exciting new coordination technology from the Java Software Division, promises to remedy this situation by providing a powerful, practical, high-level method of building a variety of distributed applications. With the JavaSpaces model, programmers build distributed applications by gluing Java processes together into ensembles that work together to accomplish a common goal. The model is simple yet powerful enough to implement the most advanced distributed applications and is ideal for building commercial-quality distributed systems.
Synopsis
"JavaSpaces technology is a powerful Jini service from Sun Microsystems, Inc. that facilitates building distributed applications. The JavaSpaces model provides persistent object exchange "areas" in which remote Java processes can coordinate their actions and exchange data. JavaSpaces technology supplies a necessary, cross-platform framework for distributed computing with Jini technology."--BOOK JACKET. "This book introduces the JavaSpaces technology architecture and provides a comprehensive description of the model. Using an example-driven approach, this book shows you how to use JavaSpaces technology to develop distributed computing applications."--BOOK JACKET. "JavaSpaces Principles, Patterns, and Practice also includes two full-scale applications - one collaborative and the other parallel - that demonstrate how to put the JavaSpaces model to work."--BOOK JACKET.
Description
"Ever since I first saw David Gelernter's Linda programming language almost twenty years ago, I felt that the basic ideas of Linda could be used to make an important advance in the ease of distributed and parallel programming. As part of the fruits of Sun's Jini project, we now have the JavaSpaces technology, a wonderfully simple platform for developing distributed applications that takes advantage of the power of the Java programming language. This important book and its many examples will help you learn about distributed and parallel programming. I highly recommend it to students, programmers, and the technically curious."
-Bill Joy, Chief Scientist and co-founder, Sun Microsystems, Inc.
JavaSpaces(tm) technology, a powerful Jini(tm) service from Sun Microsystems, facilitates building distributed applications for the Internet and Intranets. The JavaSpaces model involves persistent object exchange "areas" in which remote Java(tm) processes can coordinate their actions and exchange data. It provides a necessary ubiquitous, cross-platform framework for distributed computing, emerging as a key technology in this expanding field.
This book introduces the JavaSpaces architecture, provides a definitive and comprehensive description of the model, and demonstrates how to use it to develop distributed computing applications. The book presents an overview of the JavaSpaces design and walks you through the basics, demonstrating key features through examples. Every aspect of JavaSpaces programming is examined in depth: entries, distributed data structures, synchronization, communication, application patterns, leases, distributed events, and transactions.
You will find information on such vital topics as:
x Distributed data structures
x Synchronization techniques
x Loosely coupled communication
x Message passing
x Channel data structures for communication
x Application patterns such as replicated worker, command pattern, and marketplace
x Leases and automated lease renewal
x Using distributed events with spaces
x Handling partial failure with distributed transactions
x The official JavaSpaces specification from Sun Microsystems
JavaSpaces Principles, Patterns, and Practice also includes two full-scale applications-one collaborative and the other parallel-that demonstrate how to put the JavaSpaces model to work.
About the Author
Eric Freeman is co-founder and CTO of Mirror Worlds Technologies,a Java and Jini-based software company. Dr Freeman previously worked at Yale University on space-based systems, and is a Fellow at Yale's Center for Internet Studies.
Susanne Hupfer is Director of Product Development for Mirror Worlds Technologies, Inc. and a Fellow of the Yale University Center for Internet Studies. Previously she taught Java network programming as an Assistant Professor of Computer Science at Trinity College. She has a Ph.D. in computer science from Yale, where she researched space-based coordination languages and groupware.
Ken Arnold, formerly senior engineer at Sun Microsystems Laboratories, is a leading expert in object-oriented design and implementation. He was one of the original architects of the Jini™ technology, and the lead engineer of Sun's JavaSpaces™ technology.
Table of Contents
(
Most chapters conclude with a Summary and Exercises.)
1. Introduction.
Benefits of Distributed Computing.
Challenges of Distributed Computing.
What Is JavaSpaces Technology?
Key Features.
JavaSpaces Technology in Context.
JavaSpaces Technology Overview.
Entries and Operations.
Going Further.
Putting It All Together.
Advantages of JavaSpaces Technologies.
Chapter Preview.
2. JavaSpaces Application Basics.
Entries.
The Entry Interface.
Instantiating an Entry.
Adding Fields and Methods.
Building an Application.
The SpaceAccessor.
Writing Entries into a Space.
A Closer Look at write.
Reading and Taking Entries.
Associative Lookup.
The Basics of read and take.
The Rules of Matching.
Dealing with null-valued Fields in Entries.
Primitive Fields.
A Closer Look at read and take.
Going Further with the Example.
Subclassing an Entry.
Adding a Few More Methods.
Trying the Game.
Post-Game Analysis.
Serialization and Its Effects.
Entry Serialization.
Matching and Equality.
The No-arg Constructor.
The Entry Interface Revisited.
Improving Entry Serialization Using snapshot.
3. Building Blocks.
Introduction to Distributed Data Structures.
Building Distributed Data Structures with Entries.
Shared Variables.
Atomic Modification.
Additional Operations.
Creating a Web Counter.
Stepping Back.
Unordered Structures.
Bags.
Task Bags and Result Bags.
Ordered Structures.
Distributed Arrays Revisited.
4. Synchronization.
Semaphores.
Implementing a Semaphore.
Implementing a License Manager.
The License Manager Installer.
The License Manager Client Library.
Using Multiple Semaphores.
The Dining Philosophers.
Fairly Sharing a Resource.
Using a Queue to Take Turns.
Round-Robin Synchronization.
Barrier Synchronization.
Advanced Synchronization: The Readers/Writers Problem.
Implementing a Readers/Writers Solution.
Implementing a Counter.
Implementing a Space-based Readers/Writers Application.
5. Communication.
Basic Message Passing.
Playing Ping-Pong.
Characteristics of Space-based Communication.
Tightly Coupled Communication.
Loosely Coupled Communication.
Benefits of Loose Coupling.
Beyond Message Passing.
A Basic Channel.
The Channel Message.
The Channel Tail.
Creating a Channel.
Appending a Message to a Channel.
Implementing a Channel Writer.
Implementing a Channel Reader.
Demonstrating the Channel Writer and Reader.
Building a Chat Application with Channels.
The Graphical User Interface.
Combining Channel Writing and Reading.
A Consumer Channel.
Implementing a Pager Service.
The Pager Message Entry.
Tracking the Start and End of a Channel.
The Index Entry.
Creating a Consumer Channel.
Sending Messages to the Channel.
Reading and Removing Messages from the Channel.
Demonstrating the Pager.
Bounded Channels.
The Status Entry.
Channel Creation Revisited.
Writing to a Bounded Channel.
Taking from a Bounded Channel.
Demonstrating the Bounded Channel.
6. Application Patterns.
The Replicated-Worker Pattern.
Computing the Mandelbrot Set.
Task and Result Entries.
The Master.
The Worker.
The Command Pattern.
Implementing a Compute Server.
The Generic Worker.
The Generic Master.
Creating Specialized Tasks and Results.
Creating a Specialized Master.
Running the Compute Server.
The Marketplace Pattern.
An Automobile Marketplace.
Interaction in the Marketplace.
The Bid Entry.
The Application Framework.
The Buyer.
The Seller.
Running the Marketplace.
Other Patterns.
Specialist Patterns.
Collaborative Patterns.
7. Leases.
Leases on Entries.
The Lease Object.
Lease Expiration.
Renewing a Lease.
Cancelling a Lease.
Lease Maps.
Creating a Lease Map.
Adding and Removing Leases.
Renewing Leases.
Cancelling Leases.
Automated Lease Renewal.
The LeaseManager Interface.
Implementing the Constructors.
Adding Leases.
Cancelling a Lease.
Renewing Leases.
Checking Leases.
Processing Renewal Failures.
Putting It All Together.
8. Distributed Events.
Events in the Distributed Environment.
Hello World Using notify.
The Notification API.
The JavaSpace notify Method.
The EventRegistration Class.
The RemoteEventListener Interface.
The RemoteEvent Object.
Putting the Pieces Together.
The Channel Relay Application.
The Channel Reader Thread.
The Relayer Listener.
The Notify Handler Thread.
9. Transactions.
The Distributed Transaction Model.
Creating a Transaction.
Web Counter Revisited.
The Spaceis Transactional Properties.
Operational Semantics Under Transactions.
Writing Entries Under a Transaction.
Reading Entries Under a Transaction.
read versus readIfExists.
Taking Entries Under a Transaction.
Notifications Under Transactions.
10. A Collaborative Application.
The Messenger.
Implementing a Messenger User.
The Account.
The Account Object.
User Sessions.
The Session Object.
Friends List.
The FriendsList Object.
The FriendsListMonitor Object.
Communication Channel.
Message Entries and Indices.
The Channel Object.
Retrieving Messages from the Channel.
The Messenger Applet.
Logging in via the Login Object.
The loginCallback Method.
Adding to the Friends List.
Chatting with Friends.
Sending Messages.
Listening for Messages.
11. A Parallel Application.
The Compute Server.
The Command Interface Revisited.
The Task Entry.
The Generic Worker.
A Generic Master.
The Crypt Application.
Background.
The Generic Worker and Crypt Task.
The Crypt Master.
Generating Tasks.
Improving Space Usage with Watermarking.
Collecting Results.
A Little Poison.
Exploring Crypt.
12. Further Exploration.
Online Resources.
Related Java and Jini Technologies.
Background Reading.
Distributed Systems.
Transactions.
Historical Resources.
Appendix A: The Jini(TM) Entry Specification.
Entries and Templates.
Operations.
Entry.
Serializing Entry Objects.
Unusable Entry Exception.
Templates and Matching.
Serialized Form.
Comments.
Appendix B: The Jini(TM) Entry Utilities Specification.
Entry Utilities.
Abstract Entry.
Serialized Form.
Comments.
Appendix C: The JavaSpaces(TM) Specification.
Introduction.
The JavaSpaces Application Model and Terms.
Benefits.
JavaSpaces Technology and Databases.
JavaSpaces System Design and Linda Systems.
Goals and Requirements.
Dependencies.
Comments.
Operations.
Entries.
net.jini.space.JavaSpace.
write.
readIfExists and read.
takeIfExists and take.
snapshot.
notify.
Operation Ordering.
Serialized Form.
Transactions.
Operations Under Transactions.
Transactions and ACID Properties.
Further Reading.
Linda Systems.
The Java Platform.
Distributed Computing.
Index. 0201309556T04062001