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.
References
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.
Gilad Bracha. The Programming Language Jigsaw: Mixins, Modularity and Multiple Inheritance. Ph.D. Thesis, University of Utah Computer Science Department, March 1992.
Craig Chambers. The Cecil Language—Specification and Rationale. Technical Report 93-03-05, Computer Science Department, University of Washington, Seattle 1993.
Craig Chambers. Predicate Classes. ECOOP '93 Conference Proceedings, Kaiserslautern, Germany, July 1993.
Brad Cox. Object-Oriented Programming: An Evolutionary Approach. Addison-Wesley, Reading, MA 1986.
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.
M. Franz and T. Kistler. Slim Binaries. Technical Report No. 96-24, Department of Information and Computer Science, University of California, Irvine, June 1996.
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.
James Gosling, Bill Joy and Guy Steele. The Java Language Specification. Addison-Wesley, 1996.
Susan L. Graham, Steven Lucco, Robert Wahbe. Adaptable Binary Programs. USENIX, Winter 1995, pp. 315–325.
William Harrison and Harold Ossher. Subject-Oriented Programming. OOPSLA '93 Conference Proceedings, Washington DC, October 1993.
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.
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.
Urs Hölzle. Integrating Independently-Developed Components in Object-Oriented Languages. Proceedings of ECOOP'93, Springer Verlag LNCS 512, 1993.
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.
Tim Lindholm and Frank Yellin. The Java Virtual Machine Specification, Addison-Wesley, September 1996.
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.
Apple Computers. Object-Oriented Programming and the Objective-C Language. http://devworld.apple.com/dev/SWTechPubs/Documents/OPENSTEP/ObjectiveC/objctoc.htm.
William F. Opdyke. Refactoring Object-Oriented Frameworks. Ph.D. Thesis, University of Illinois at Urbana-Champaign, 1992.
Open Systems Foundation. OSF Architecture-Neutral Distribution Format Rationale. Open Systems Foundation, June 1991.
Purtilo J. and Atlee J. Module Reuse by Interface Adaptation. Software Practice and Experience, Vol. 21, No. 6, 1991.
Claus H. Pedersen. Extending ordinary inheritance schemes to include generalization. OOPSLA '89 Conference Proceedings, pp. 407–417, New Orleans, LA.
Jens Palsberg and Michael Schwartzbach. Type substitution for object-oriented programming. ECOOP/OOPSLA '90 Conference Proceedings, pp. 151–160, Ottawa, Canada, October 1990.
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.
Ian Sommerville. Software Engineering. 4th ed., Addison-Wesley, 1992.
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.
Peter Wegner. Interoperability. ACM Computing Surveys, Vol. 28, No. 1, 1996.
Terry Winograd. Beyond programming languages. Communications of the ACM, 22:7, pages 391–401, July, 1979.
Robert Wahbe, Steven Lucco, Thomas E. Anderson, Susan L. Graham. Efficient Software-Based Fault Isolation. SOSP 1993, pp. 203–216.
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.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1998 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Keller, R., Hölzle, U. (1998). Binary component adaptation. In: Jul, E. (eds) ECOOP’98 — Object-Oriented Programming. ECOOP 1998. Lecture Notes in Computer Science, vol 1445. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0054097
Download citation
DOI: https://doi.org/10.1007/BFb0054097
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-64737-9
Online ISBN: 978-3-540-69064-1
eBook Packages: Springer Book Archive