Binary Component Adaptation

Binary component adaptation (BCA) allows components to be adapted and evolved in binary form and on-the-fly (during program loading). BCA rewrites component binaries before (or while) they are loaded, 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 describe our implementation of BCA for Java and demonstrate its usefulness by showing how it can solve a number of important integration and evolution problems. Even though our current implementation was designed for easy integration with Sun's JDK 1.1 VM rather than for ultimate speed, the load-time overhead introduced by BCA is small, in the range of one or two seconds. With its flexibility, relatively simple implementation, and low overhead, binary component adaptation could significantly improve the reusability of Java components.

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

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

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

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

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

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

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

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

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

[10]  James M. Coggins,et al.  Subject-Oriented Programming , 1996 .

[11]  Urs Hölzle,et al.  Supporting the Integration and Evolution of Components Through Binary Component Adaptation , 1997 .

[12]  Stephen N. Freund,et al.  Adding type parameterization to the Java language , 1997, OOPSLA '97.

[13]  Harold Ossher,et al.  Subject-oriented programming: a critique of pure objects , 1993, OOPSLA '93.

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

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

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

[17]  Randall B. Smith,et al.  A Simple and Unifying Approach to Subjective Objects , 1996, Theory Pract. Object Syst..

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

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

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

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

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

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

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

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

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

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

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

[29]  Ian Sommerville,et al.  Software Engineering — ESEC '93 , 1993, Lecture Notes in Computer Science.

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