Generative communication in Linda
ACM Transactions on Programming Languages and Systems (TOPLAS)
Communications of the ACM
The semantics of future and its use in program optimization
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Signature matching: a tool for using software libraries
ACM Transactions on Software Engineering and Methodology (TOSEM)
Typechecking and modules for multimethods
ACM Transactions on Programming Languages and Systems (TOPLAS)
Inside COM
Handbook of formal languages, vol. 3
Adaptive plug-and-play components for evolutionary software development
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
A catalog of techniques for resolving packaging mismatch
SSR '99 Proceedings of the 1999 symposium on Software reusability
The design and implementation of an intentional naming system
Proceedings of the seventeenth ACM symposium on Operating systems principles
MultiJava: modular open classes and symmetric multiple dispatch for Java
OOPSLA '00 Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Implicit context: easing software evolution and reuse
SIGSOFT '00/FSE-8 Proceedings of the 8th ACM SIGSOFT international symposium on Foundations of software engineering: twenty-first century applications
Implementing remote procedure calls
ACM Transactions on Computer Systems (TOCS)
Regular expression pattern matching for XML
POPL '01 Proceedings of the 28th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
SIMULA: an ALGOL-based simulation language
Communications of the ACM
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Design and evaluation of a wide-area event notification service
ACM Transactions on Computer Systems (TOCS)
Chord: A scalable peer-to-peer lookup service for internet applications
Proceedings of the 2001 conference on Applications, technologies, architectures, and protocols for computer communications
ACM Transactions on Internet Technology (TOIT)
The Definition of Standard ML
Storing and querying ordered XML using a relational database system
Proceedings of the 2002 ACM SIGMOD international conference on Management of data
PICCOLA---a small composition language
Formal methods for distributed processing
Overcoming independent extensibility challenges
Communications of the ACM
Smalltalk-80: The Language
ArchJava: connecting software architecture to implementation
Proceedings of the 24th International Conference on Software Engineering
Modular typechecking for hierarchically extensible datatypes and functions
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
Integrating independent components with on-demand remodularization
OOPSLA '02 Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Towards a formalization for COM part i: the primitive calculus
OOPSLA '02 Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Architectural Mismatch: Why Reuse Is So Hard
IEEE Software
Architectural Mismatch: Why Reuse Is So Hard
IEEE Software
Type Management: A Key to Software Reuse in Open Distributed Systems
EDOC '97 Proceedings of the 1st International Conference on Enterprise Distributed Object Computing
Predicate Dispatching: A Unified Theory of Dispatch
ECCOP '98 Proceedings of the 12th European Conference on Object-Oriented Programming
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
The Location Stack: A Layered Model for Location in Ubiquitous Computing
WMCSA '02 Proceedings of the Fourth IEEE Workshop on Mobile Computing Systems and Applications
Decentralized weighted voting for P2P data management
Proceedings of the 3rd ACM international workshop on Data engineering for wireless and mobile access
CDuce: an XML-centric general-purpose language
ICFP '03 Proceedings of the eighth ACM SIGPLAN international conference on Functional programming
Lingua Franca: an IDL for structural subtyping distributed object systems
COOTS'95 Proceedings of the USENIX Conference on Object-Oriented Technologies on USENIX Conference on Object-Oriented Technologies (COOTS)
Polyglot: an extensible compiler framework for Java
CC'03 Proceedings of the 12th international conference on Compiler construction
iRho: an imperative rewriting calculus
PPDP '04 Proceedings of the 6th ACM SIGPLAN international conference on Principles and practice of declarative programming
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Interoperability among independently evolving web services
Proceedings of the 5th ACM/IFIP/USENIX international conference on Middleware
MultiJava: Design rationale, compiler implementation, and applications
ACM Transactions on Programming Languages and Systems (TOPLAS)
Better extensibility through modular syntax
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
Irho: An imperative rewriting calculus
Mathematical Structures in Computer Science
Expressive and modular predicate dispatch for Java
ACM Transactions on Programming Languages and Systems (TOPLAS)
ACM Transactions on Computer-Human Interaction (TOCHI)
An Integrated Development Environment for Pattern Matching Programming
Electronic Notes in Theoretical Computer Science (ENTCS)
Matchete: paths through the pattern matching jungle
PADL'08 Proceedings of the 10th international conference on Practical aspects of declarative languages
CBSE'06 Proceedings of the 9th international conference on Component-Based Software Engineering
Metadata invariants: checking and inferring metadata coding conventions
Proceedings of the 34th International Conference on Software Engineering
Matching objects with patterns
ECOOP'07 Proceedings of the 21st European conference on Object-Oriented Programming
Reconciling exhaustive pattern matching with objects
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
Implementing federated object systems
ECOOP'13 Proceedings of the 27th European conference on Object-Oriented Programming
Hi-index | 0.00 |
In an evolving software system, components must be able to change independently while remaining compatible with their peers. One obstacle to independent evolution is the brittle parameter problem: the ability of two components to communicate can depend on a number of inessential details of the types, structure, and/or contents of the values communicated. If these details change, then the components can no longer communicate, even if the essential parts of the message remain unaffected.We present HydroJ, an extension of Java that addresses this problem. In HydroJ, components communicate using self-describing, semi-structured messages, and programmers use pattern matching to define the handling of messages. This design stems from two central ideas: first, that self-describing messages reduce dependence on inessential message format details; and second, that object-oriented pattern matching naturally focuses on the essential information in a message and is insensitive to inessential information.We have developed these ideas in the context of Rain, a distributed, heterogeneous messaging system for ubiquitous computing. To evaluate the design, we have constructed a prototype HydroJ compiler, implemented some Rain services in HydroJ, studied the evolution of an existing Rain service over time, and formalized HydroJ's key features in a core language.