MULTILISP: a language for concurrent symbolic computation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Actors: a model of concurrent computation in distributed systems
Actors: a model of concurrent computation in distributed systems
Concepts and experiments in computational reflection
OOPSLA '87 Conference proceedings on Object-oriented programming systems, languages and applications
Computational reflection in class based object-oriented languages
OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications
Continuing into the future: on the interaction of futures and first-class continuations
LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
Contracts: specifying behavioral compositions in object-oriented systems
OOPSLA/ECOOP '90 Proceedings of the European conference on object-oriented programming on Object-oriented programming systems, languages, and applications
Transparency and reflection in distributed systems
ACM SIGOPS Operating Systems Review
CLOS in context: the shape of the design space
Object-oriented programming
Towards a methodology for explicit composition of metaobjects
Proceedings of the tenth annual conference on Object-oriented programming systems, languages, and applications
Framing software reuse: lessons from the real world
Framing software reuse: lessons from the real world
The Java programming language (2nd ed.)
The Java programming language (2nd ed.)
Concurrency and distribution in object-oriented programming
ACM Computing Surveys (CSUR)
OO distributed programming is not distributed OO programming
Communications of the ACM
JAVA '99 Proceedings of the ACM 1999 conference on Java Grande
Monitoring, security, and dynamic configuration with the dynamicTAO reflective ORB
IFIP/ACM International Conference on Distributed systems platforms
The Art of the Metaobject Protocol
The Art of the Metaobject Protocol
Garf: A Tool for Programming Reliable Distributed Applications
IEEE Parallel & Distributed Technology: Systems & Technology
Hybrid Group Reflective Architecture for Object-Oriented Concurrent Reflective Programming
ECOOP '91 Proceedings of the European Conference on Object-Oriented Programming
Specifying Reusable Components Using Contracts
ECOOP '92 Proceedings of the European Conference on Object-Oriented Programming
Meta-level Programming with CodA
ECOOP '95 Proceedings of the 9th European Conference on Object-Oriented Programming
Evaluation of Object-Oriented Reflective Models
ECOOP '98 Workshop ion on Object-Oriented Technology
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
The design of a configurable and reconfigurable middleware platform
Distributed Computing
Applying patterns to develop extensible ORB middleware
IEEE Communications Magazine
SmartMethod: an efficient replacement for method
Proceedings of the 2004 ACM symposium on Applied computing
Distributed class code and data propagation with java
KES'06 Proceedings of the 10th international conference on Knowledge-Based Intelligent Information and Engineering Systems - Volume Part II
Hi-index | 0.00 |
The classical remote method invocation (RMI) mechanism adopted by several object-based middleware is 'black-box' in nature, and the RMI functionality, i.e., the RMI interaction policy and its configuration, is hard-coded into the application. This RMI nature hinders software development and reuse, forcing the programmer to focus on communication details often marginal to the application being developed. Extending the RMI behavior with extra functionality is also a very difficult job, because added code must be scattered among the entities involved in communications.This situation could be improved by developing the system in several separate layers, confining communications and related matters to specific layers. As demonstrated by recent work on reflective middleware, reflection represents a powerful tool for realizing such a separation and therefore overcoming the problems referred to above. Such an approach improves the separation of concerns between the communication-related algorithms and the functional aspects of an application. However, communications and all related concerns are not managed as a single unit that is separate from the rest of the application, which makes their reuse, extension, and management difficult. As a consequence, communications concerns continue to be scattered across the meta-program, communication mechanisms continue to be black-box in nature, and there is only limited opportunity to adjust communication policies through configuration interfaces.In this paper we examine the issues raised above, and propose a reflective approach specially designed to open up the Java RMI mechanism. Our proposal consists of a new reflective model, called multi-channel reification, that reflects on and reifies communication channels, i.e., it renders communication channels first-class citizens. This model is designed both for developing new communication mechanisms and for extending the behavior of communication mechanisms provided by the underlying system. Our approach is embodied in a framework called mChaRM, which is described in detail in this paper.