Poplar: A Java Extension for Evolvable Component Integration
The Java programming language contains many features that aid Component-Based Software Development (CBSD), such as interfaces, visibility levels, and strong support for encapsulation. However, component evolution often causes so-called breaking changes, largely because of the rigidity of component interconnections in the form of explicit method calls and field accesses. The authors present a Java extension, poplar, which they are currently developing. In poplar, inter-component dependencies are expressed using declarative queries; concrete linking code, generated using a planning algorithm, replaces these at compile time. Poplar includes a minimal specification language based on type state-like protocols and labels, and a lightweight effect system, which ensures the absence of unwanted interference between handwritten code and generated code.