Abstract
Modern software must evolve in response to changing conditions. In the most widely used programming environments, code is static and cannot change at runtime. This poses problems for applications that have limited down-time. More support is needed for dynamic evolution. In this paper we present an approach for supporting dynamic evolution of Java programs. In this approach, Java programs can evolve by changing their components, namely classes, during their execution. Changes in a class lead to changes in its instances, thereby allowing evolution of both code and state. The approach promotes compatibility with existing Java applications, and maintains the security and type safety controls imposed by Java’s dynamic linking mechanism. Experimental analyses of our implementation indicate that the implementation imposes a moderate performance penalty relative to the unmodified virtual machine.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
The Common Object Request Broker: Architecture and Specification, Revision 2.0. Object Management Group, July 1996. http://www.omg.org/corba/corbiiop.htm.
James P. Anderson. Computer security technology planning study. Technical Report ESD-TR-73-51, Vol. II, Electronic Systems Division, Air Force Systems Command, Hanscom AFB, Bedford, MA 01731, October 1972. [NTIS AD-758 206].
K. Arnold and J. Gosling. The Java Programming Language. Addison Wesley, 1996.
T. Bloom. Dynamic Module Replacement in a Distributed Programming System. PhD thesis, MIT, 1983.
K. Brockschmidt. Inside OLE 2.Microsoft Press, 1994.
Eduardo Casais. Managing class evolution in object-oriented systems. In Object-Oriented Software Composition. Prentice Hall, 1991.
Geoff A. Cohen, Jeffrey S. Chase, and David L. Kaminsky. Automatic program transformation with JOIE. InProceedings of the USENIX Annual Technical Symposium, 1998.
Sophia Drossopoulou, Mariangiola Dezani-Ciancaglini, Ferruccio Damiani, and Paola Giannini. Objects dynamically changing class. August 1999.
Sophia Drossopoulou, Tanya Valkevych, and Susan Eisenbach. Java type soundness revisited. October 1999.
R. S. Fabry. How to design a system in which modules can be changed on the fly. In 2nd International Conference on Software Engineering, 1976.
Michael Franz. Dynamic linking of software components. IEEE Computer, 18(9162):74–81, March 1997.
Jonathan J. Gibbons and Michael J. Day. Shadows: A type-safe framework for dynamically extensible objects. TR TR-94-31, Sun Microsystems, 2550 Garcia Avenue, Mountain View, CA 94043, 1994. Available from http://www.sunlabs.com.
Adele Goldberg and David Robson. Smalltalk 80: the Language and its Implementation. Addison Wesley, Menlo Park, CA, 1983.
L. Gong. Java security: Present and near furture. IEEE Micro, 17(3):14–19, May-June 1997.
L. Gong, M. Mueller, H. Prafullchandra, and R. Schemers. Going beyond the sandbox: An overview of the new security architecture in the Java Development Kit 1.2. In Proceedings of the USENIX Symposium on Internet Technologies and Systems, Monterey, California, December 1997.
William Griswold and Paul Phillips. Bill and Paul’s Excellent UCSD Benchmarks for Java (version 1.1). UCSD Software Evolution Group. http://www-cse.ucsd.edu/users/wgg/JavaProf/javaprof.html.
Deepak Gupta and Pankaj Jalote. On-line software version change using state transfer between processes. Software-Practice and Experience, 23(9), September 1993.
B. Hashii, S. Malabarba, R. Pandey, and M. Bishop. Supporting reconfigurable security policies for mobile Java programs. In Proceedings of WWW9, May 2000. To appear. Currently available at http://pdclab.cs.ucdavis.edu.
Gisli Hjalmtysson and Robert Gray. Dynamic C++ classes: A lightweight mechanism to update code in a running program. In Proceedings of the USENIX Annual Technical Conference, New Orleans, Louisiana, June 1998. USENIX.
W. W. Ho and R. A. Olsson. An approach to genuine dynamic linking. SOFTWARE-Practice and Experience, 21(4):375–390, April 1991.
JavaSoft. Component-based software with JavaBeans and ActiveX. White paper.
JavaSoft. The Java Native Code API.
R. Keller and R. Hölzle. Binary component adaptation. In ECOOP’98 Proceedings, Lecture Notes in Computer Science. Springer Verlag, 1998. Also available at http://www.cs.ucsb.edu/oocsb/papers/TRCS97-20.html.
James Kempf and Peter B. Kessler. Cross-address space dynamic linking. TR TR-92-2, Sun Microsystems, 2550 Garcia Avenue, Mountain View, CA 94043, 1992. Available from http://www.sunlabs.com.
Graham Kirby, Ron Morrison, and David Stemple. Linguistic reflection in Java. Software-Practice and Experience, 28(10), 1998.
Gunter Kniesel. Type-safe delegation for run-time component adaptation. In European Conference on Object-Oriented Programming. Springer, 1999.
Robert Laddaga and James Veitch. Dynamic object technology. Communications of the ACM, 40(5):36–38, March1997.
S. Liang and G. Brach. Dynamic class loading in the java virtual machine. In C. Chambers, editor, Object-Oriented Programming Systems, Languages and Applications Conference, in Special Issue of SIGPLAN Notices, number 10, Vancouver, October 1998. ACM.
S. Liang and G. Bracha. Dynamic class loading in the Java Virtual Machine. Draft. JavaSoft, Sun Microsystems, April 1998.
Henry Lieberman. Using prototypical objects to implement shared behavior in object oriented systems. In OOPSLA, 1986.
B. Liskov. Distributed programming in Argus. Communications of the ACM, March 1988.
J. Magee, J. Kramer, and M. Sloman. Constructing distrubuted systems in Conic. IEEE Transactions on Software Engineering, June 1989.
Brian Oki, Manfred Pfluegl, Alex Siegel, and Dale Skeen. The Information Bus-an architecture for extensible distributed systems. ACM Operating Systems Review, 27(5):58–68, December 1993.
Peyman Oreizy, Nenad Medvidovic, and Richard N. Taylor. Architecture-based runtime software evolution. In Proceedings of the International Conference on Software Engineering, 1998.
R. Pandey and B. Hashii. Providing fine-grained access control for Java programs. In 13th Conference on Object-Oriented Programming. ECOOP’99, Lecture Notes in Computer Science. Springer-Verlag, June 1999.
J. H. Saltzer and M. D. Schroeder. The protection of information in computer systems. Proceedings of the IEEE, 63(9):1278–1308, September 1975.
Vijay Saraswat. Java is not type-safe. Technical report, AT&T Research, 1997. http://www.research.att.com/ vj/bug.html.
Mark Segal and Ophir Frieder. On-the-fly program modification: Systems for dynamic updating. IEEE Software, March 1993.
Manuel Serrano. Wide classes. In European Conference on Object-Oriented Programming. Springer, 1999.
Stephen Slade. Object-Oriented Common Lisp. Prentice Hall, Upper Saddle River, NJ 07458, 1998. Chapter 13.
Standard Performance Evaluation Corporation. SPECjvm98 Documentation, 1.01 edition, August 1998. http://www.spec.org/osg/jvm98/.
R. Taylor, N. Medvidovic, K. Anderson, E. Whitehead, J. Robbins, K. Nies, P. Oreizy, and D. Dubrow. A component-and message-based architectural style for GUI software. IEE Transactions on Software Engineering, June 1996.
Paul R. Wilson. Uniprocessor garbage collection techniques. In Proceedings of the Memory Management International Workshop. Springer-Verlag, 1992.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2000 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Malabarba, S., Pandey, R., Gragg, J., Barr, E., Fritz Barnes, J. (2000). Runtime Support for Type-Safe Dynamic Java Classes. In: Bertino, E. (eds) ECOOP 2000 — Object-Oriented Programming. ECOOP 2000. Lecture Notes in Computer Science, vol 1850. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-45102-1_17
Download citation
DOI: https://doi.org/10.1007/3-540-45102-1_17
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-67660-7
Online ISBN: 978-3-540-45102-0
eBook Packages: Springer Book Archive