Binary component adaptation

  • Ralph Keller
  • Urs Hölzle
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1445)

Abstract

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.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. [A+96]
    Ali-Reza Adl-Tabatabai, Geoff Langdale, Steven Lucco, Robert Wahbe. Efficient and Language-Independent Mobile Programs. PLDI '96 Proceedings, pp. 127–136, Philadelphia, Pennsylvania, May 1996.Google Scholar
  2. [Bra92]
    Gilad Bracha. The Programming Language Jigsaw: Mixins, Modularity and Multiple Inheritance. Ph.D. Thesis, University of Utah Computer Science Department, March 1992.Google Scholar
  3. [Cha93a]
    Craig Chambers. The Cecil Language—Specification and Rationale. Technical Report 93-03-05, Computer Science Department, University of Washington, Seattle 1993.Google Scholar
  4. [Cha93b]
    Craig Chambers. Predicate Classes. ECOOP '93 Conference Proceedings, Kaiserslautern, Germany, July 1993.Google Scholar
  5. [Cox86]
    Brad Cox. Object-Oriented Programming: An Evolutionary Approach. Addison-Wesley, Reading, MA 1986.Google Scholar
  6. [E+97]
    Jens Ernst, William Evans, Christopher W. Fraser, Steven Lucco, Todd A. Proebsting. Code Compression. PLDI '97 Proceedings, pp. 358–365, Las Vegas, Nevada, June 15–18, 1997.Google Scholar
  7. [FK96]
    M. Franz and T. Kistler. Slim Binaries. Technical Report No. 96-24, Department of Information and Computer Science, University of California, Irvine, June 1996.Google Scholar
  8. [F+95]
    Ira R. Forman, Michael H. Conner, Scott H. Danforth, Larry K. Raper. Release-to-Release Binary Compatibility in SOM. Proceedings of OOPSLA '95, ACM SIGPLAN Notices, Volume 30, Number 10, October 1995.Google Scholar
  9. [GJS96]
    James Gosling, Bill Joy and Guy Steele. The Java Language Specification. Addison-Wesley, 1996.Google Scholar
  10. [G+95]
    Susan L. Graham, Steven Lucco, Robert Wahbe. Adaptable Binary Programs. USENIX, Winter 1995, pp. 315–325.Google Scholar
  11. [HO93]
    William Harrison and Harold Ossher. Subject-Oriented Programming. OOPSLA '93 Conference Proceedings, Washington DC, October 1993.Google Scholar
  12. [Hür95]
    Walter L. Hürsch. Maintaining Consistency and Behavior of Object-Oriented Systems during Evolution. Ph.D. Thesis, College of Computer Science of Northeastern University, August 1995.Google Scholar
  13. [Hor87]
    Chris Horn. Conformance, Genericity, Inheritance and Enhancement. ECOOP '87 Conference Proceedings, pp. 223–233, Paris, France, June 1987. Published as Springer Verlag LNCS 276, Berlin, Germany 1987.Google Scholar
  14. [Höl93]
    Urs Hölzle. Integrating Independently-Developed Components in Object-Oriented Languages. Proceedings of ECOOP'93, Springer Verlag LNCS 512, 1993.Google Scholar
  15. [KH97]
    Ralph Keller and Urs Hölzle. Supporting the Integration and Evolution of Components Through Binary Component Adaptation. Technical Report TRCS97-15, Department of Computer Science, University of California, Santa Barbara, September 1997.Google Scholar
  16. [LY96]
    Tim Lindholm and Frank Yellin. The Java Virtual Machine Specification, Addison-Wesley, September 1996.Google Scholar
  17. [MS97]
    Kai-Uwe Mätzel and Peter Schnorf. Dynamic Component Adaptation. Ubilab Technical Report 97.6.1, Union Bank of Switzerland, Zürich, Switzerland, June 1997.Google Scholar
  18. [ObjC96]
    Apple Computers. Object-Oriented Programming and the Objective-C Language. http://devworld.apple.com/dev/SWTechPubs/Documents/OPENSTEP/ObjectiveC/objctoc.htm.Google Scholar
  19. [Opd92]
    William F. Opdyke. Refactoring Object-Oriented Frameworks. Ph.D. Thesis, University of Illinois at Urbana-Champaign, 1992.Google Scholar
  20. [OSF91]
    Open Systems Foundation. OSF Architecture-Neutral Distribution Format Rationale. Open Systems Foundation, June 1991.Google Scholar
  21. [PA91]
    Purtilo J. and Atlee J. Module Reuse by Interface Adaptation. Software Practice and Experience, Vol. 21, No. 6, 1991.Google Scholar
  22. [Ped89]
    Claus H. Pedersen. Extending ordinary inheritance schemes to include generalization. OOPSLA '89 Conference Proceedings, pp. 407–417, New Orleans, LA.Google Scholar
  23. [PS90]
    Jens Palsberg and Michael Schwartzbach. Type substitution for object-oriented programming. ECOOP/OOPSLA '90 Conference Proceedings, pp. 151–160, Ottawa, Canada, October 1990.Google Scholar
  24. [San86]
    David Sandberg. An Alternative to Subclassing. OOPSLA '86 Conference Proceedings, pp. 424–428, Portland, OR, October 1986. Published as SIGPLAN Notices 21(11), November 1986.CrossRefGoogle Scholar
  25. [Som92]
    Ian Sommerville. Software Engineering. 4th ed., Addison-Wesley, 1992.Google Scholar
  26. [SU96]
    Randall B. Smith and David Ungar. A Simple and Unifying Approach to Subjective Objects. Theory and Practice of Object Systems 2(3): 161–178, 1996.CrossRefGoogle Scholar
  27. [Weg96]
    Peter Wegner. Interoperability. ACM Computing Surveys, Vol. 28, No. 1, 1996.Google Scholar
  28. [Win79]
    Terry Winograd. Beyond programming languages. Communications of the ACM, 22:7, pages 391–401, July, 1979.CrossRefGoogle Scholar
  29. [W+93]
    Robert Wahbe, Steven Lucco, Thomas E. Anderson, Susan L. Graham. Efficient Software-Based Fault Isolation. SOSP 1993, pp. 203–216.Google Scholar
  30. [YS97]
    Daniel M. Yellin and Robert E. Strom. Protocol Specifications and Component Adaptors. IBM T.J. Watson Research Center. ACM Transactions on Programming Languages and Systems, Vol. 19, No. 2, March 1997, pages 292–333.CrossRefGoogle Scholar

Copyright information

© Springer-Verlag 1998

Authors and Affiliations

  • Ralph Keller
    • 1
  • Urs Hölzle
    • 1
  1. 1.Dept. of Computer ScienceUniv. of CaliforniaSanta Barbara

Personalised recommendations