fbpx
Wikipedia

Tuple space

A tuple space is an implementation of the associative memory paradigm for parallel/distributed computing. It provides a repository of tuples that can be accessed concurrently. As an illustrative example, consider that there are a group of processors that produce pieces of data and a group of processors that use the data. Producers post their data as tuples in the space, and the consumers then retrieve data from the space that match a certain pattern. This is also known as the blackboard metaphor. Tuple space may be thought as a form of distributed shared memory.

Tuple spaces were the theoretical underpinning of the Linda language developed by David Gelernter and Nicholas Carriero at Yale University in 1986.

Implementations of tuple spaces have also been developed for Java (JavaSpaces), Lisp, Lua, Prolog, Python, Ruby, Smalltalk, Tcl, and the .NET Framework.

Object Spaces edit

Object Spaces is a paradigm for development of distributed computing applications. It is characterized by the existence of logical entities, called Object Spaces. All the participants of the distributed application share an Object Space. A provider of a service encapsulates the service as an Object, and puts it in the Object Space. Clients of a service then access the Object Space, find out which object provides the needed service, and have the request serviced by the object.

Object Spaces, as a computing paradigm, was put forward in the 1980s by David Gelernter at Yale University. Gelernter developed a language called Linda to support the concept of global object coordination.

Object Space can be thought of as a virtual repository, shared amongst providers and accessors of network services, which are themselves abstracted as objects. Processes communicate among each other using these shared objects — by updating the state of the objects as and when needed.

An object, when deposited into a space, needs to be registered with an Object Directory in the Object Space. Any processes can then identify the object from the Object Directory, using properties lookup, where the property specifying the criteria for the lookup of the object is its name or some other property which uniquely identifies it. A process may choose to wait for an object to be placed in the Object Space, if the needed object is not already present.

Objects, when deposited in an Object Space are passive, i.e., their methods cannot be invoked while the objects are in the Object Space. Instead, the accessing process must retrieve it from the Object Space into its local memory, use the service provided by the object, update the state of the object and place it back into the Object Space.

This paradigm inherently provides mutual exclusion. Because once an object is accessed, it has to be removed from the Object Space, and is placed back only after it has been released. This means that no other process can access an object while it is being used by one process, thereby ensuring mutual exclusion.

JavaSpaces edit

JavaSpaces is a service specification providing a distributed object exchange and coordination mechanism (which may or may not be persistent) for Java objects. It is used to store the distributed system state and implement distributed algorithms. In a JavaSpace, all communication partners (peers) communicate and coordinate by sharing state.

JavaSpaces can be used to achieve scalability through parallel processing, it can also be used to provide reliable storage of objects through distributed replication, although this won't survive a total power failure like a disk; it is regarded by many to be reliable as long as the power is reliable. Distribution can also be to remote locations; however, this is rare as JavaSpaces are usually used for low-latency, high-performance applications rather than reliable object caching.

The most common software pattern used in JavaSpaces is the Master-Worker pattern. The Master hands out units of work to the "space", and these are read, processed and written back to the space by the workers. In a typical environment there are several "spaces", several masters and many workers; the workers are usually designed to be generic, i.e. they can take any unit of work from the space and process the task.

JavaSpaces is part of the Java Jini technology, which on its own has not been a commercial success.[1] The technology has found and kept new users over the years and some vendors are offering JavaSpaces-based products. JavaSpaces remains a niche technology mostly used in the financial services and telco industries where it continues to maintain a faithful following. The announcement of Jini/JavaSpaces created quite some hype although Sun co-founder and chief Jini architect Bill Joy put it straight that this distributed systems dream will take "a quantum leap in thinking".[2]

Example usage edit

The following example shows an application made using JavaSpaces. First, an object to be shared in the Object Space is made. Such an object is called an Entry in JavaSpace terminology. Here, the Entry is used to encapsulate a service which returns a Hello World! string, and keeps track of how many times it was used. The server which provides this service will create an Object Space, or JavaSpace. The Entry is then written into the JavaSpace. The client reads the entry from the JavaSpace and invokes its method to access the service, updating its usage count by doing so. The updated Entry is written back to the JavaSpace.

// An Entry class public class SpaceEntry implements Entry {  public final String message = "Hello World!";  public Integer count = 0;    public String service() {  ++count;  return message;  }    public String toString() {  return "Count: " + count;  } } 
// Hello World! server public class Server {  public static void main(String[] args) throws Exception {  SpaceEntry entry = new SpaceEntry(); // Create the Entry object  JavaSpace space = (JavaSpace)space(); // Create an Object Space  // Register and write the Entry into the Space  space.write(entry, null, Lease.FOREVER);   // Pause for 10 seconds and then retrieve the Entry and check its state.  Thread.sleep(10 * 1000);  SpaceEntry e = space.read(entry, null, Long.MAX_VALUE);  System.out.println(e);  } } 
// Client public class Client {  public static void main(String[] args) throws Exception {  JavaSpace space = (JavaSpace) space();  SpaceEntry e = space.take(new SpaceEntry(), null, Long.MAX_VALUE);  System.out.println(e.service());  space.write(e, null, Lease.FOREVER);  } } 

Books edit

  • Eric Freeman, Susanne Hupfer, Ken Arnold: JavaSpaces Principles, Patterns, and Practice. Addison-Wesley Professional, 1. June 1999, ISBN 0-201-30955-6
  • Phil Bishop, Nigel Warren: JavaSpaces in Practice. Addison Wesley, 2002, ISBN 0-321-11231-8
  • Max K. Goff: Network Distributed Computing: Fitscapes and Fallacies, 2004, Prentice Hall, ISBN 0-13-100152-3
  • Sing Li, et al.: Professional Java Server Programming, 1999, Wrox Press, ISBN 1-86100-277-7
  • Steven Halter: JavaSpaces Example by Example, 2002, Prentice Hall PTR, ISBN 0-13-061916-7

Interviews edit

  • Gelernter, David (2009). "Lord of the Cloud". John Brockman, Editor and Publisher Russell Weinberger, Associate Publisher, Edge Foundation, Inc.
  • Heiss, Janice J. (2003). "Computer Visions: A Conversation with David Gelernter". Sun Developer Network (SDN).
  • Venners, Bill (2003). "Designing as if Programmers are People (Interview with Ken Arnold)". java.net.

Articles edit

  • Brogden, William (2007). "How Web services can use JavaSpaces". SearchWebServices.com. Retrieved 2007-04-18.
  • Brogden, William (2007). "Grid computing and Web services (Beowulf, BOINC, Javaspaces)". SearchWebServices.com. Retrieved 2007-03-20.
  • White, Tom (2005). "How To Build a ComputeFarm". java.net. Retrieved 2005-05-21.
  • Ottinger, Joseph (2007). "Understanding JavaSpaces". theserverside. Retrieved 2007-01-31.
  • Angerer, Bernhard; Erlacher, Andreas (2005). "Loosely Coupled Communication and Coordination in Next-Generation Java Middleware". java.net. Retrieved 2006-06-03.
  • Angerer, Bernhard (2003). "Space-Based Programming". onjava.com. Retrieved 2003-03-19.
  • Sing, Li (2003). "High-impact Web tier clustering, Part 2: Building adaptive, scalable solutions with JavaSpaces". IBM developerworks.
  • Mamoud, Qusay H. (2005). "Getting Started With JavaSpaces Technology: Beyond Conventional Distributed Programming Paradigms". Sun Developer Network (SDN).
  • Freeman, Eric; Hupfer, Susanne (November 20, 1999). "Make room for Javaspaces, Part 1 (from 5)". JavaWorld. Retrieved 2020-07-17.
  • Löffler, Dr. Gerald (2004). "JavaSpaces und ihr Platz im Enterprise Java Universum, Das Modell zum Objektaustausch: JavaSpaces vorgestellt". Entwickler.com. Retrieved 2004-02-01.
  • Arango, Mauricio (2009). "Coordination in parallel event-based systems". blogs.sun.com.
  • Nemlekar, Milind (2001). "Scalable Distributed Tuplespaces". NCSU, Dept of ECE.

See also edit

References edit

  1. ^ Lee Gomes: "". The Wall Street Journal, June 4th 2001
  2. ^ Rob Guth: "More than just another pretty name: Sun's Jini opens up a new world of distributed computer systems". SunWorld, August 1998 [15 January 2006]

Sources edit

  • Gelernter, David. "Generative communication in Linda". ACM Transactions on Programming Languages and Systems, volume 7, number 1, January 1985
  • Distributed Computing (First Indian reprint, 2004), M. L. Liu

External links edit

  • "TupleSpace" at c2.com
  • at jini.org

tuple, space, object, space, redirects, here, space, optical, systems, optical, space, zealand, gallery, objectspace, tuple, space, implementation, associative, memory, paradigm, parallel, distributed, computing, provides, repository, tuples, that, accessed, c. Object Space redirects here For the space in optical systems see Optical space For the New Zealand art gallery see Objectspace A tuple space is an implementation of the associative memory paradigm for parallel distributed computing It provides a repository of tuples that can be accessed concurrently As an illustrative example consider that there are a group of processors that produce pieces of data and a group of processors that use the data Producers post their data as tuples in the space and the consumers then retrieve data from the space that match a certain pattern This is also known as the blackboard metaphor Tuple space may be thought as a form of distributed shared memory Tuple spaces were the theoretical underpinning of the Linda language developed by David Gelernter and Nicholas Carriero at Yale University in 1986 Implementations of tuple spaces have also been developed for Java JavaSpaces Lisp Lua Prolog Python Ruby Smalltalk Tcl and the NET Framework Contents 1 Object Spaces 2 JavaSpaces 2 1 Example usage 2 2 Books 2 3 Interviews 2 4 Articles 3 See also 4 References 5 Sources 6 External linksObject Spaces editObject Spaces is a paradigm for development of distributed computing applications It is characterized by the existence of logical entities called Object Spaces All the participants of the distributed application share an Object Space A provider of a service encapsulates the service as an Object and puts it in the Object Space Clients of a service then access the Object Space find out which object provides the needed service and have the request serviced by the object Object Spaces as a computing paradigm was put forward in the 1980s by David Gelernter at Yale University Gelernter developed a language called Linda to support the concept of global object coordination Object Space can be thought of as a virtual repository shared amongst providers and accessors of network services which are themselves abstracted as objects Processes communicate among each other using these shared objects by updating the state of the objects as and when needed An object when deposited into a space needs to be registered with an Object Directory in the Object Space Any processes can then identify the object from the Object Directory using properties lookup where the property specifying the criteria for the lookup of the object is its name or some other property which uniquely identifies it A process may choose to wait for an object to be placed in the Object Space if the needed object is not already present Objects when deposited in an Object Space are passive i e their methods cannot be invoked while the objects are in the Object Space Instead the accessing process must retrieve it from the Object Space into its local memory use the service provided by the object update the state of the object and place it back into the Object Space This paradigm inherently provides mutual exclusion Because once an object is accessed it has to be removed from the Object Space and is placed back only after it has been released This means that no other process can access an object while it is being used by one process thereby ensuring mutual exclusion JavaSpaces editJavaSpaces is a service specification providing a distributed object exchange and coordination mechanism which may or may not be persistent for Java objects It is used to store the distributed system state and implement distributed algorithms In a JavaSpace all communication partners peers communicate and coordinate by sharing state JavaSpaces can be used to achieve scalability through parallel processing it can also be used to provide reliable storage of objects through distributed replication although this won t survive a total power failure like a disk it is regarded by many to be reliable as long as the power is reliable Distribution can also be to remote locations however this is rare as JavaSpaces are usually used for low latency high performance applications rather than reliable object caching The most common software pattern used in JavaSpaces is the Master Worker pattern The Master hands out units of work to the space and these are read processed and written back to the space by the workers In a typical environment there are several spaces several masters and many workers the workers are usually designed to be generic i e they can take any unit of work from the space and process the task JavaSpaces is part of the Java Jini technology which on its own has not been a commercial success 1 The technology has found and kept new users over the years and some vendors are offering JavaSpaces based products JavaSpaces remains a niche technology mostly used in the financial services and telco industries where it continues to maintain a faithful following The announcement of Jini JavaSpaces created quite some hype although Sun co founder and chief Jini architect Bill Joy put it straight that this distributed systems dream will take a quantum leap in thinking 2 Example usage edit The following example shows an application made using JavaSpaces First an object to be shared in the Object Space is made Such an object is called an Entry in JavaSpace terminology Here the Entry is used to encapsulate a service which returns a Hello World string and keeps track of how many times it was used The server which provides this service will create an Object Space or JavaSpace The Entry is then written into the JavaSpace The client reads the entry from the JavaSpace and invokes its method to access the service updating its usage count by doing so The updated Entry is written back to the JavaSpace An Entry class public class SpaceEntry implements Entry public final String message Hello World public Integer count 0 public String service count return message public String toString return Count count Hello World server public class Server public static void main String args throws Exception SpaceEntry entry new SpaceEntry Create the Entry object JavaSpace space JavaSpace space Create an Object Space Register and write the Entry into the Space space write entry null Lease FOREVER Pause for 10 seconds and then retrieve the Entry and check its state Thread sleep 10 1000 SpaceEntry e space read entry null Long MAX VALUE System out println e Client public class Client public static void main String args throws Exception JavaSpace space JavaSpace space SpaceEntry e space take new SpaceEntry null Long MAX VALUE System out println e service space write e null Lease FOREVER Books edit Eric Freeman Susanne Hupfer Ken Arnold JavaSpaces Principles Patterns and Practice Addison Wesley Professional 1 June 1999 ISBN 0 201 30955 6 Phil Bishop Nigel Warren JavaSpaces in Practice Addison Wesley 2002 ISBN 0 321 11231 8 Max K Goff Network Distributed Computing Fitscapes and Fallacies 2004 Prentice Hall ISBN 0 13 100152 3 Sing Li et al Professional Java Server Programming 1999 Wrox Press ISBN 1 86100 277 7 Steven Halter JavaSpaces Example by Example 2002 Prentice Hall PTR ISBN 0 13 061916 7Interviews edit Gelernter David 2009 Lord of the Cloud John Brockman Editor and Publisher Russell Weinberger Associate Publisher Edge Foundation Inc Heiss Janice J 2003 Computer Visions A Conversation with David Gelernter Sun Developer Network SDN Venners Bill 2003 Designing as if Programmers are People Interview with Ken Arnold java net Articles edit Brogden William 2007 How Web services can use JavaSpaces SearchWebServices com Retrieved 2007 04 18 Brogden William 2007 Grid computing and Web services Beowulf BOINC Javaspaces SearchWebServices com Retrieved 2007 03 20 White Tom 2005 How To Build a ComputeFarm java net Retrieved 2005 05 21 Ottinger Joseph 2007 Understanding JavaSpaces theserverside Retrieved 2007 01 31 Angerer Bernhard Erlacher Andreas 2005 Loosely Coupled Communication and Coordination in Next Generation Java Middleware java net Retrieved 2006 06 03 Angerer Bernhard 2003 Space Based Programming onjava com Retrieved 2003 03 19 Sing Li 2003 High impact Web tier clustering Part 2 Building adaptive scalable solutions with JavaSpaces IBM developerworks Mamoud Qusay H 2005 Getting Started With JavaSpaces Technology Beyond Conventional Distributed Programming Paradigms Sun Developer Network SDN Freeman Eric Hupfer Susanne November 20 1999 Make room for Javaspaces Part 1 from 5 JavaWorld Retrieved 2020 07 17 Loffler Dr Gerald 2004 JavaSpaces und ihr Platz im Enterprise Java Universum Das Modell zum Objektaustausch JavaSpaces vorgestellt Entwickler com Retrieved 2004 02 01 Arango Mauricio 2009 Coordination in parallel event based systems blogs sun com Nemlekar Milind 2001 Scalable Distributed Tuplespaces NCSU Dept of ECE See also editSpace based architecture Linda coordination language Ken Arnold lead engineer on JavaSpaces at Sun Microsystems Rinda a JavaSpaces analog for RubyReferences edit Lee Gomes Sun Microsystems Predictions For Jxta System Sound Familiar The Wall Street Journal June 4th 2001 Rob Guth More than just another pretty name Sun s Jini opens up a new world of distributed computer systems SunWorld August 1998 15 January 2006 Sources editGelernter David Generative communication in Linda ACM Transactions on Programming Languages and Systems volume 7 number 1 January 1985 Distributed Computing First Indian reprint 2004 M L LiuExternal links edit TupleSpace at c2 com JavaSpace Specification at jini org Retrieved from https en wikipedia org w index php title Tuple space amp oldid 1181865305, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.