Smalltalk-80: the language and its implementation
Smalltalk-80: the language and its implementation
Fault-tolerant broadcasts and related problems
Distributed systems (2nd Ed.)
Time, clocks, and the ordering of events in a distributed system
Communications of the ACM
Reliable Distributed Computing with the ISIS Toolkit
Reliable Distributed Computing with the ISIS Toolkit
The Art of the Metaobject Protocol
The Art of the Metaobject Protocol
An Overview of the Arjuna Distributed Programming System
IEEE Software
Lessons from Designing and Implementing GARF
OBPDC '95 Selected papers from the Workshop, on Object-Based Parallel and Distributed Computation
Distributed Programming in GARF
ECOOP '93 Proceedings of the Workshop on Object-Based Distributed Programming
Abstracting Object Interactions Using Composition Filters
ECOOP '93 Proceedings of the Workshop on Object-Based Distributed Programming
Filtering Duplicated Invocations Using Symmetric Proxies
IWOOOS '95 Proceedings of the 4th International Workshop on Object-Orientation in Operating Systems
System support for object groups
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Designing Distributed Services with SDL
IEEE Concurrency
HERCULE: Non-invasively Tracking JavaTM Component-Based Application Activity
ECOOP '00 Proceedings of the 14th European Conference on Object-Oriented Programming
Abstracting Services in a Heterogeneous Environment
Middleware '01 Proceedings of the IFIP/ACM International Conference on Distributed Systems Platforms Heidelberg
JR: Flexible Distributed Programming in an Extended Java
ICDCS '01 Proceedings of the The 21st International Conference on Distributed Computing Systems
JR: Flexible distributed programming in an extended Java
ACM Transactions on Programming Languages and Systems (TOPLAS)
Remote method invocation as a first-class citizen
Distributed Computing
Fault tolerance using standard reflexive middleware mechanisms
PDCN'07 Proceedings of the 25th conference on Proceedings of the 25th IASTED International Multi-Conference: parallel and distributed computing and networks
J-Orchestra: Enhancing Java programs with distribution capabilities
ACM Transactions on Software Engineering and Methodology (TOSEM)
EventJava: An Extension of Java for Event Correlation
Genoa Proceedings of the 23rd European Conference on ECOOP 2009 --- Object-Oriented Programming
Algon: From Interchangeable Distributed Algorithms to Interchangeable Middleware
Electronic Notes in Theoretical Computer Science (ENTCS)
Hi-index | 0.00 |
Replicating an application's critical components over several machines is a well-known way to increase its reliability. While this principle is readily understood, the techniques required to preserve a distributed and replicated application's consistency pose difficult problems. Group-communication systems implement these techniques by providing multicast primitives that deliver messages to groups of replicas with atomicity and ordering guarantees. Isis represents a typical example of such systems. However, these systems operate at a low level (Unix), and thus, programmers without broad experience in distributed computing find them very difficult to use. Furthermore, when using these systems, programmers must mix multicast primitives with application functional features, hampering extensibility and modularity. As a result, users cannot directly distribute and replicate an application written in a centralized context. The authors designed Garf (automatic generation of reliable applications) to address these issues. Garf is an object-oriented tool that supports the design and programming of reliable distributed applications. Garf acts as an intermediate between group-communication systems and applications. Garf promotes software modularity by clearly separating the behavioral features that deal with concurrency, distribution, and replication from functional features that involve traditional sequential and centralized aspects. Garf also offers an extensible library of abstractions for distributed programming. An experienced programmer can implement new abstractions by combining existing ones or by using the low-level group-communication primitives underlying Garf. This article describes Garf's programming model and architecture, and gives an example application.