Reusable component interconnection patterns for distributed software architectures
SSR '01 Proceedings of the 2001 symposium on Software reusability: putting software reuse in context
OpusJava: a Java framework for distributed high performance computing
Future Generation Computer Systems - Java in high-performance computing
Efficient, flexible, and typed group communications in Java
JGI '02 Proceedings of the 2002 joint ACM-ISCOPE conference on Java Grande
The Object Group Design Pattern
The Object Group Design Pattern
JR: Flexible distributed programming in an extended Java
ACM Transactions on Programming Languages and Systems (TOPLAS)
Transparent proxies for java futures
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Javari: adding reference immutability to Java
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Filterfresh: hot replication of java RMI server objects
COOTS'98 Proceedings of the 4th conference on USENIX Conference on Object-Oriented Technologies and Systems - Volume 4
Mercury: a reflective middleware for automatic parallelization of Bags-of-Tasks
Proceedings of the 8th International Workshop on Adaptive and Reflective MIddleware
Hi-index | 0.00 |
Object-oriented programming languages such as Java provides inadequate support for advanced method invocation strategies in distributed applications. Invocation semantics such as reliable unicast and multicast must be implemented based on primitive, unreliable unicast mechanisms such as Java RMI and Socket communication. This forces developers to devise ad hoc communication strategies, which is a repetitive and error-prone process. Moreover, these communication strategies are entangled with the business logic of the application, making the code hard to read and maintain. In this paper, we propose an extension of the Java type system based on communication qualifiers. These qualifiers decorate variables with information about the invocation semantics that must be used when methods are invoked on that variable. We show how communication qualifiers are used to support transparent multicast and reliable unicast invocation semantics in Java. Moreover, we introduce declarative operations to enable developers to fine-tune these communication strategies.