Content deleted Content added
mNo edit summary |
added the history section |
||
Line 18:
* '''Types'''. The ''type'' of a live distributed object determines the patterns of external interactions with the object; it is determined by the types of endpoints and graphical user interfaces exposed by the object's proxies, and the patterns of events that may occur at the endpoints. The constraints that the object's type places on event patterns may span across the network. For example, type ''atomic multicast'' might specify that if an event of the form ''deliver(x)'' is generated by one proxy, a similar event must be eventually generated by all ''non-faulty'' proxies (proxies that run on computers that never crash, and that never cease to execute or are excluded from the protocol; the precise definition might vary). Much as it is the case for types in [[Java (programming language)|Java]]-like languages, there might exist many very different implementations of the same type. Thus, for example, behavior characteristic to ''atomic multicast'' might be exhibited by instances of distributed protocols such as virtual synchrony or Paxos.
== History ==
The term ''live distributed object'' has originally been proposed in 2007 in an IEEE Internet Computing article<ref name="ostrowski2007activeweb">Ostrowski, K., Birman, K., and Dolev, D. (2007). "Live Distributed Objects: Enabling the Active Web", ''IEEE Internet Computing'', November-December 2007, 11(6):72-78, http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?isnumber=4376216&arnumber=4376231.</ref>, to refer to the types of dynamic, interactive [[World Wide Web|Web]] [[Content (media and publishing)|content]] that is not [[Internet hosting service|hosted]] on [[Server (computing)|servers]] in [[Data center|data centers]], but rather stored on the [[End-user (computer science)|end-user]]'s [[Client (computing)|client]] computers, and internally powered by instances of [[Reliability (computer networking)|reliable]] [[multicast]] [[Communications protocol|protocols]]. The word ''live'' expresses the fact that the displayed information is dynamic, [[Interactivity|interactive]], and represents current, fresh, [[Live broadcast|live]] content that reflects recent updates made by the users (as opposed to static, [[read-only]], and [[Archive|archival]] content that has been pre-assembled). The word ''distributed'' expresses the fact that the information is not hosted, stored at a server in a data center, but rather, it is replicated among the end-user computers, and updated in a [[peer-to-peer]] fashion through a stream of multicast messages that may be produced directly by the end-users consuming the content. The use of the term in the context of Web development has been discussed in [http://www.cs.cornell.edu/~krzys Krzysztof Ostrowski]'s Ph.D. dissertation<ref name="ostrowski2008dissertation">Ostrowski, K. (2008). "Live Distributed Objects", Ph.D. Dissertation, Cornell University, http://hdl.handle.net/1813/10881.</ref>.
The definition presented here has been first proposed in 2008 in a paper published at the [[ECOOP]] conference<ref name="ostrowski2008programming">Ostrowski, K., Birman, K., Dolev, D., and Ahnn, J. (2008). "Programming with Live Distributed Objects", ''Proceedings of the 22nd European Conference on Object-Oriented Programming'', Paphos, Cyprus, July 07 - 11, 2008, J. Vitek, Ed., ''Lecture Notes In Computer Science'', vol. 5142, Springer-Verlag, Berlin, Heidelberg, 463-489, http://portal.acm.org/citation.cfm?id=1428508.1428536.</ref>. The extension of the term has been motivated by the need to model live objects as compositions of other objects; in this sense, the concept has been inspired by [[Small talk]], which pioneered the uniform perspective that ''everything is an object'', and [[Jini]], which pioneered the idea that ''services are objects''. When applied to live distributed objects, the perspective dictates that their constituent parts, which includes instances of distributed multi-party protocols used internally to replicate state, should also be modeled as live distributed objects. The resulting definition attempts to unify the concept of live Web content, message stream, and a distributed protocol instance.
The first implementation of the live distributed object concept, as defined in the ECOOP paper<ref name="ostrowski2008programming"/>, was the Live Distributed Objects <ref name="ostrowski2008website">http://liveobjects.cs.cornell.edu</ref> platform developed by [http://www.cs.cornell.edu/~krzys Krzysztof Ostrowski] at Cornell University. The platform provided a set of visual, drag and drop tools for composing hierarchical documents resembling [[Web page|web pages]], and containing [[XML]]-serialized live object references. Visual content such as chat windows, shared [[Desktop environment|desktops]], and various sorts of [[Mashup (digital)|mashups]] could be composed by dragging and dropping components representing user interfaces and protocol instances onto a design form, and connecting them together. Since the moment of its creation, a number of extension have been developed to embed live distributed objects in [[Microsoft Office]] documents <ref>Ahnn, J., Birman, K., Ostrowski, K., and van Renesse, R. (2008). "Using live distributed objects for office automation", ''Proceedings of the ACM/IFIP/USENIX Middleware '08 Conference Companion'', Leuven, Belgium, December 01 - 05, 2008, ''Companion '08'', ACM, New York, NY, 30-35, http://portal.acm.org/citation.cfm?id=1462735.1462743.</ref>, and to support various types of hosted content such as Google Maps<ref>http://liveobjects.cs.cornell.edu/community/index.html</ref>. As of March 2009, the platform is being actively developed by its creators.
== References ==
{{reflist}}
[[Category:Network protocols]]
|