Supporting the Integration and Evolution of Components Through Binary Component Adaptation

Object-oriented components are hard to integrate if developed independently of each other, and difficult to evolve without affecting existing clients, particularly with widely distributed components that have thousands of reusers. We propose binary component adaptation (BCA), a new solution that allows components to be adapted and evolved in binary form and on-the-fly (during program load ing). Binary component adaptation rewrites component binaries before (or while) they are loaded and is significantly more flexible than previous approaches. Also, BCA requires no source code access and guarantees release-to-release compatibility. That is, an adaptation is guaranteed to be compatible with a new binary release of the component as long as the new release itself is compatible with clients compiled using the earlier release. We show how binary component adaptation can solve a number of important integration and evolution problems and discuss how it can be implemented for JVM class files (e.g., Java programs). We believe that binary component adaptation could significantly improve the integration and evolution of software components, especially in a relatively uncoordinated and fast-evolving environment such as the Internet.

[1]  C. H. Pedersen Extending ordinary inheritance schemes to include generalization , 1989, OOPSLA 1989.

[2]  Ira R. Forman,et al.  Release-to-release binary compatibility in SOM , 1995, OOPSLA.

[3]  Brad J. Cox,et al.  Object-oriented programming ; an evolutionary approach , 1986 .

[4]  Michael Franz,et al.  Slim binaries , 1997, CACM.

[5]  Terry Winograd,et al.  Beyond programming languages , 1979, CACM.

[6]  Jens Palsberg,et al.  Type substitution for object-oriented programming , 1990, OOPSLA/ECOOP '90.

[7]  Craig Chambers,et al.  The cecil language: specification and rationale , 1993 .

[8]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[9]  Walter L. Hursch,et al.  Maintaining Consistency and Behavior of Object-Oriented Systems during Evolution , 1995 .

[10]  Robert Wahbe,et al.  Efficient and language-independent mobile programs , 1996, PLDI '96.

[11]  NeXT Computer,et al.  Nextstep object‐oriented programming and the objective C language : 日本語版 , 1993 .

[12]  K. Mätzel Dynamic Component Adaptation , 1997 .

[13]  William F. Opdyke,et al.  Refactoring object-oriented frameworks , 1992 .

[14]  Craig Chambers,et al.  Predicate Classes , 1993, ECOOP.

[15]  Urs Hölzle,et al.  Integrating Independently-Developed Components in Object-Oriented Languages , 1993, ECOOP.

[16]  Gilad Bracha,et al.  The programming language jigsaw: mixins, modularity and multiple inheritance , 1992 .

[17]  David Sandberg,et al.  An alternative to subclassing , 1986, OOPLSA '86.

[18]  Frank Yellin,et al.  The Java Virtual Machine Specification , 1996 .

[19]  Robert Wahbe,et al.  Adaptable Binary Programs , 1995, USENIX.

[20]  James M. Purtilo,et al.  Module reuse by interface adaptation , 1991, Softw. Pract. Exp..

[21]  Claus H. Pedersen,et al.  Extending ordinary inheritance schemes to include generalization , 1989, OOPSLA '89.

[22]  Daniel M. Yellin,et al.  Protocol specifications and component adaptors , 1997, TOPL.

[23]  Chris Horn,et al.  Conformance, Genericity, Inheritance and Enhancement , 1987, ECOOP.

[24]  Robert Wahbe,et al.  Efficient software-based fault isolation , 1994, SOSP '93.

[25]  共立出版株式会社 コンピュータ・サイエンス : ACM computing surveys , 1978 .