JavaSpaces Principles, Patterns, and Practice

Overview

"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 ...

See more details below
Available through our Marketplace sellers.
Other sellers (Paperback)
  • All (22) from $1.99   
  • New (5) from $12.82   
  • Used (17) from $1.99   
Close
Sort by
Page 1 of 1
Showing 1 – 4 of 5
Note: Marketplace items are not eligible for any BN.com coupons and promotions
$12.82
Seller since 2008

Feedback rating:

(63)

Condition:

New — never opened or used in original packaging.

Like New — packaging may have been opened. A "Like New" item is suitable to give as a gift.

Very Good — may have minor signs of wear on packaging but item works perfectly and has no damage.

Good — item is in good condition but packaging may have signs of shelf wear/aging or torn packaging. All specific defects should be noted in the Comments section associated with each item.

Acceptable — item is in working order but may show signs of wear such as scratches or torn packaging. All specific defects should be noted in the Comments section associated with each item.

Used — An item that has been opened and may show signs of wear. All specific defects should be noted in the Comments section associated with each item.

Refurbished — A used item that has been renewed or updated and verified to be in proper working condition. Not necessarily completed by the original manufacturer.

New
1999 Paperback New Ships Fast! Satisfaction Guaranteed!

Ships from: Skokie, IL

Usually ships in 1-2 business days

  • Canadian
  • International
  • Standard, 48 States
  • Standard (AK, HI)
  • Express, 48 States
  • Express (AK, HI)
$35.68
Seller since 2014

Feedback rating:

(0)

Condition: New
0201309556 New Book. Please allow 4-14 business days to arrive. We will ship Internationally as well. Very Good Customer Service is Guaranteed!! Millions sold offline.

Ships from: Newport, United Kingdom

Usually ships in 1-2 business days

  • Canadian
  • International
  • Standard, 48 States
  • Standard (AK, HI)
$56.51
Seller since 2008

Feedback rating:

(17198)

Condition: New
Brand New, Perfect Condition, Please allow 4-14 business days for delivery. 100% Money Back Guarantee, Over 1,000,000 customers served.

Ships from: Westminster, MD

Usually ships in 1-2 business days

  • Canadian
  • International
  • Standard, 48 States
  • Standard (AK, HI)
$56.52
Seller since 2013

Feedback rating:

(2)

Condition: New
New

Ships from: San Diego, CA

Usually ships in 1-2 business days

  • Canadian
  • International
  • Standard, 48 States
  • Standard (AK, HI)
  • Express, 48 States
  • Express (AK, HI)
Page 1 of 1
Showing 1 – 4 of 5
Close
Sort by
Sending request ...

Overview

"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

Read More Show Less

Editorial Reviews

Booknews
Introduces the Jini service that facilitates building distributed applications by providing persistent object exchange areas in which remote Java processes can coordinate their actions and exchange data. Includes two full-scale examples<-->one collaborative and the other parallel<-->to demonstrate how to apply the model. Assumes a knowledge of basic programming and some experience with Java, but no background in network programming. Annotation c. Book News, Inc., Portland, OR (booknews.com)
Read More Show Less

Product Details

  • ISBN-13: 9780201309553
  • Publisher: Addison-Wesley
  • Publication date: 6/4/1999
  • Series: Java Series
  • Edition number: 1
  • Pages: 368
  • Product dimensions: 7.50 (w) x 9.30 (h) x 0.90 (d)

Meet 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.

Read More Show Less

Read an Excerpt

Preface
Over the next decade the computing landscape will change dramatically as devices become ubiquitous, network-connected, and ready to communicate. As the landscape changes, the way in which we design and build software will change as well: the distributed application (one that involves multiple processes and devices) will become the natural way we build systems, while the standalone desktop application will become nearly extinct.

Designing distributed software is remarkably hard, however. The fundamental characteristics of a networked environment (such as heterogeneity, partial failure, and latency) and the difficulty of "gluing together" multiple, independent processes into a robust, scalable application present the programmer with many challenges that don't arise when designing and building desktop applications.

JavaSpaces? technology is a simple, expressive, and powerful tool that eases the burden of creating distributed applications. Processes are loosely coupled--communicating and synchronizing their activities using a persistent object store called a space, rather than through direct communication. This method of coordinating distributed processes leads to systems that are flexible, scalable, and reliable. While simple, the space-based model is powerful enough to implement advanced distributed applications--from e-commerce systems to groupware to heavy-duty parallel computations. Space-based programming also leverages the Jini? technology's leasing, distributed event, and transaction features, making it suitable for building robust, commercial-quality distributed systems.

This book teaches you how to use JavaSpaces technology to design and build distributed applications. It is intended for computer professionals, students, and Java enthusiasts--anyone who wants experience building networked applications. Through experimentation with the code examples, you'll develop a repertoire of useful techniques and patterns for creating space-based systems. We assume that you already have some programming experience and basic working knowledge of Java programming language fundamentals, but this book doesn't require any specific knowledge of network programming.

Writing a book before the technology is in widespread use presents a unique challenge. We've approached the project from complementary perspectives. Two of the authors, Eric Freeman and Susanne Hupfer, spent much of the past decade designing and building space-based systems as part of the Linda research group at Yale University and used the JavaSpaces technology during the two years of its development. The third, Ken Arnold, was in charge of the JavaSpaces project at Sun Microsystems, working with a team of engineers to design and build the technology this book is all about.

In this book, we present the foundations of programming with JavaSpaces technology, and a set of common patterns and frameworks for approaching space-based programs. As the technology becomes more widely used, the JavaSpace programming community will discover new ways of using the technology. We would like future editions of this book to incorporate these new patterns, and we invite you to send comments, suggestions, and ideas to javaspaces@awl.com and to make use of the book's web site.
How to Access And Run the Example Code
The code examples in this book have been compiled and run against the following packages from Sun Microsystems:
The Java? 2 SDK, Standard Edition, v1.2
which is available for download, and
The Jini Technology Starter Kit (JSK) release 1.0
The JavaSpaces Technology Kit (JSTK) release 1.0
both of which are available for download.

You can obtain the complete source code of the examples in the book at http://java.sun.com/docs/books/jini/javaspaces . This site is the official web site for the book and contains links to resources and information relating to the JavaSpaces technology, errata and supplementary material generated after this book went to press.
Acknowledgements
We are indebted to many people for their contributions to the development of the JavaSpaces technology. Bill Joy pushed the Linda-style distributed computing idea hard enough to make Sun take it seriously. Jim Waldo, Ann Wollrath, Roger Riggs, and Bob Scheiffler worked on the design, with input from Peter Jones. Gary Holness and John McClain joined the JavaSpaces implementation team and made a difference both in the detailed semantics and the implementation design. Bob Resendes joined near the end but was important in getting the product finished, and Jimmy Torres and Frank Barnaby built and ran the release processes that got the it out the door. And, of course, nothing could have been done without Helen Leary, but then, nothing ever is.

We are equally grateful to the many people who helped us turn the idea for this book into a reality. We especially want to thank our editor Mike Hendrickson at Addison-Wesley and Series editor Lisa Friendly at Sun Microsystems, who both recognized the value of the project early on. Mike provided enthusiastic support, ideas, push and encouragement along the way. Lisa held the book to the highest standards.

The team at Addison-Wesley was an enormous help at every stage of the project. In particular, Marina Lang and Julie DeBaggis were supportive, made the publishing process run smoothly, and steered us clear of many potholes. Without the dedicated efforts of Sarah Weaver, Diane Freed, Bob Russell, Tracy Russ, Katherine Kwack, Simone Payment, and others working behind the production and marketing scenes, this book would not have been possible.

A number of reviewers greatly improved the book's content through their careful reading and helpful suggestions. Jen McGinn supplied a thorough technical and editorial review, and was instrumental in refining our usage of Sun Microsystems trademarks. Bob Resendes, Gary Holness, and John McClain provided in-depth technical review of the manuscript based on their intimate knowledge of the technology. Andreas Doerr, Laird Dornin, Howard Lee Harkness, Bruce Hopkins, Pascal Ledru, and Nigel Warren contributed useful technical and editorial commentary. Our appreciation also goes to Elisabeth Freeman for her careful reading of many drafts, and to Peter Sparago for his comments.

The wonderful illustrations throughout the book are due to the creative energy and talent of Jim Dustin. Tony Welch, of Sun Microsystems, gave helpful advice on the use of trademarks in the illustrations.

We also wish to thank the Jini team at Sun Microsystems, in particular Mark Hodapp and Theresa Lanowitz, who were generous with their time and assistance.

Finally, we'd especially like to thank David Gelernter, who planted the seed for the JavaSpaces technology nearly two decades ago, and who was supportive of this book throughout its development.
Read More Show Less

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

Read More Show Less

Preface

Over the next decade the computing landscape will change dramatically as devices become ubiquitous, network-connected, and ready to communicate. As the landscape changes, the way in which we design and build software will change as well: The distributed application (one that involves multiple processes and devices) will become the natural way we build systems, while the standalone desktop application will become nearly extinct.

Designing distributed software is remarkably hard, however. The fundamental characteristics of a networked environment (such as heterogeneity, partial failure, and latency) and the difficulty of "gluing together" multiple, independent processes into a robust, scalable application present the programmer with many challenges that don't arise when designing and building desktop applications.

JavaSpaces(TM) technology is a simple, expressive, and powerful tool that eases the burden of creating distributed applications. Processes are loosely coupled--communicating and synchronizing their activities using a persistent object store called a space, rather than through direct communication. This method of coordinating distributed processes leads to systems that are flexible, scalable, and reliable. While simple, the space-based model is powerful enough to implement advanced distributed applications--from e-commerce systems to groupware to heavy-duty parallel computations. Space-based programming also leverages the Jini(TM) technology's leasing, distributed event, and transaction features, making it suitable for building robust, commercial-quality distributed systems.

This book teaches you how to use JavaSpaces technology to design and build distributed applications. It is intended for computer professionals, students, and Java enthusiasts--anyone who wants experience building networked applications. Through experimentation with the code examples, you'll develop a repertoire of useful techniques and patterns for creating space-based systems. We assume that you already have some programming experience and basic working knowledge of Java programming language fundamentals, but this book doesn't require any specific knowledge of network programming.

JavaSpaces technology is new, and writing a book before the technology is in widespread use presents a unique challenge. We've approached the project from complementary perspectives. Two of the authors, Eric Freeman and Susanne Hupfer, spent much of the past decade designing and building space-based systems as part of the Linda research group at Yale University and used the JavaSpaces technology during the two years of its development. The third, Ken Arnold, was in charge of the JavaSpaces project at Sun Microsystems, working with a team of engineers to design and build the technology this book is all about.

In this book, we present the foundations of programming with JavaSpaces technology, and a set of common patterns and frameworks for approaching space-based programs. As the technology becomes more widely used, the JavaSpace programming community will discover new ways of using it. We would like future editions of this book to incorporate these new patterns, and we invite you to send comments, suggestions, and ideas to javaspaces@awl.com and to make use of the book's web site at http://java.sun.com/docs/books/jini/javaspaces.

How to Access And Run the Example Code

The code examples in this book have been compiled and run against the following packages from Sun Microsystems:

  • The Java(TM) 2 SDK, Standard Edition, v1.2

which is available for download at http://www.java.sun.com/products/, and

  • The Jini Technology Starter Kit (JSK) release 1.0
  • The JavaSpaces Technology Kit (JSTK) release 1.0

both of which are available for download at http://developer.java.sun.com/developer/products/jini/product.offerings.html.

You can obtain the complete source code of the examples in the book at http://java.sun.com/docs/books/jini/javaspaces. This site is the official web site for the book and contains links to resources and information relating to the JavaSpaces technology, errata, and supplementary material generated after this book went to press.

Acknowledgments

We are indebted to many people for their contributions to the development of the JavaSpaces technology. Bill Joy pushed the Linda-style distributed computing idea hard enough to make Sun take it seriously. Jim Waldo, Ann Wollrath, Roger Riggs, and Bob Scheiffler worked on the design, with input from Peter Jones. Gary Holness and John McClain joined the JavaSpaces implementation team and made a difference both in the detailed semantics and the implementation design. Bob Resendes joined near the end but was important in getting the product finished, and Jimmy Torres and Frank Barnaby built and ran the release processes that got the it out the door. And, of course, nothing could have been done without Helen Leary, but then, nothing ever is.

We are equally grateful to the many people who helped us turn the idea for this book into a reality. We especially want to thank our editor Mike Hendrickson at Addison-Wesley and Series editor Lisa Friendly at Sun Microsystems, who both recognized the value of the project early on. Mike provided enthusiastic support, ideas, push and encouragement along the way. Lisa held the book to the highest standards.

The team at Addison-Wesley was an enormous help at every stage of the project. In particular, Marina Lang and Julie DeBaggis were supportive, made the publishing process run smoothly, and steered us clear of many potholes. Without the dedicated efforts of Sarah Weaver, Marty Rabinowitz, Diane Freed, Bob Russell, Tracy Russ, Katherine Kwack, Sara Connell, Simone Payment, and others working behind the production and marketing scenes, this book would not have been possible.

A number of reviewers greatly improved the bookis content through their careful reading and helpful suggestions. Jen McGinn supplied a thorough technical and editorial review, and was instrumental in refining our usage of Sun Microsystems trademarks. Bob Resendes, Gary Holness, and John McClain provided in-depth technical review of the manuscript based on their intimate knowledge of the technology. Andreas Doerr, Laird Dornin, Howard Lee Harkness, Bruce Hopkins, Pascal Ledru, and Nigel Warren contributed useful technical and editorial commentary. Our appreciation also goes to Elisabeth Freeman for her careful reading of many drafts, and to Peter Sparago for his comments.

The wonderful illustrations throughout the book are due to the creative energy and talent of Jim Dustin. Tony Welch of Sun Microsystems gave helpful advice on the use of trademarks in the illustrations.

We also wish to thank the Jini team at Sun Microsystems, in particular Mark Hodapp and Theresa Lanowitz, who were generous with their time and assistance.

Finally, we'd especially like to thank David Gelernter, who planted the seed for the JavaSpaces technology nearly two decades ago, and who was supportive of this book throughout its development.

0201309556P04062001

Read More Show Less

Customer Reviews

Be the first to write a review
( 0 )
Rating Distribution

5 Star

(0)

4 Star

(0)

3 Star

(0)

2 Star

(0)

1 Star

(0)

Your Rating:

Your Name: Create a Pen Name or

Barnes & Noble.com Review Rules

Our reader reviews allow you to share your comments on titles you liked, or didn't, with others. By submitting an online review, you are representing to Barnes & Noble.com that all information contained in your review is original and accurate in all respects, and that the submission of such content by you and the posting of such content by Barnes & Noble.com does not and will not violate the rights of any third party. Please follow the rules below to help ensure that your review can be posted.

Reviews by Our Customers Under the Age of 13

We highly value and respect everyone's opinion concerning the titles we offer. However, we cannot allow persons under the age of 13 to have accounts at BN.com or to post customer reviews. Please see our Terms of Use for more details.

What to exclude from your review:

Please do not write about reviews, commentary, or information posted on the product page. If you see any errors in the information on the product page, please send us an email.

Reviews should not contain any of the following:

  • - HTML tags, profanity, obscenities, vulgarities, or comments that defame anyone
  • - Time-sensitive information such as tour dates, signings, lectures, etc.
  • - Single-word reviews. Other people will read your review to discover why you liked or didn't like the title. Be descriptive.
  • - Comments focusing on the author or that may ruin the ending for others
  • - Phone numbers, addresses, URLs
  • - Pricing and availability information or alternative ordering information
  • - Advertisements or commercial solicitation

Reminder:

  • - By submitting a review, you grant to Barnes & Noble.com and its sublicensees the royalty-free, perpetual, irrevocable right and license to use the review in accordance with the Barnes & Noble.com Terms of Use.
  • - Barnes & Noble.com reserves the right not to post any review -- particularly those that do not follow the terms and conditions of these Rules. Barnes & Noble.com also reserves the right to remove any review at any time without notice.
  • - See Terms of Use for other conditions and disclaimers.
Search for Products You'd Like to Recommend

Recommend other products that relate to your review. Just search for them below and share!

Create a Pen Name

Your Pen Name is your unique identity on BN.com. It will appear on the reviews you write and other website activities. Your Pen Name cannot be edited, changed or deleted once submitted.

 
Your Pen Name can be any combination of alphanumeric characters (plus - and _), and must be at least two characters long.

Continue Anonymously

    If you find inappropriate content, please report it to Barnes & Noble
    Why is this product inappropriate?
    Comments (optional)