Lucid Exploration of a Critical Distributed Technology
Pragmatic, with great example code, exploring fundamental concepts and profound, innovative, fascinating ideas.
JavaSpaces provide an innovative mechanism for storing and retrieving objects in distributed networking architectures and plays a central role in Sun’s Jini vision. While heavily used as a Jini service, it’s possible to use JavaSpaces independently as well. This book explores the topic in-depth, exploring numerous common development patterns that exploit JavaSpaces to build robust, self-healing, distributed systems. The replicated worker pattern, for example, lets you build load-balancing clusters that enterprise developers are sure to appreciate.
The book is made up of 12 chapters and 3 appendices. It starts with an introduction that explains the features and benefits of JavaSpaces, along with an overview of Entries and basic operations. JavaSpaces expose a sparse API which is easy to understand but filled with deeper implications that this book tries to address. Chapter 2 looks at basic applications by building a simple game that allows the reader to see the API in practice. Chapter 3 tackles a few building blocks, elaborating on distributed data structures and algorithms. Chapter 4 tackles synchronization issues and chapter 5 looks at communication patterns, implementing a set of reusable space-based channel classes.
Chapter 6 is one of the more interesting looks at various distributed application patterns, like the replicated worker, command and marketplace patterns. These are important ideas in distributed architectures and may even change the way you look at your systems. Chapter 7 explores the use of leases in more detail, having touched on them in various parts of the book. Chapter 8 looks at distributed events supported by the Jini architecture, with Chapter 9 exploring Transactions in detail. Chapters 10 and 11 develop a couple of complex applications that demonstrate the strengths of JavaSpaces programming. The first is a collaborative application, a kind of live chat with channels and dynamic user lists. The second is a parallel applications that shows off the replicated worker pattern by doing brute force password decryption. Chapter 12 offers a few avenues for additional investigation. The three appendices are relevant parts from the Jini specifications.
JavaSpaces is a fascinating solution to complex problems. Central to the Jini architecture, this book is indispensable to developers who are serious about understanding and working with Jini. The exploration of patterns and voluminous examples clarify potentially complicated issues in a fluid and lucid style. The book is revealing and builds easily on simple ideas with deep implications. The way we look at distributed applications is likely to change in the next few years and some revolutionary ideas are well explored in these pages. An absolute must for anyone working with distributed systems.