An efficient implementation of SELF a dynamically-typed object-oriented language based on prototypes
OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications
Object-oriented software construction (2nd ed.)
Object-oriented software construction (2nd ed.)
Efficient dynamic dispatch without virtual function tables: the SmallEiffel compiler
Proceedings of the 12th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Dynamic weaving for aspect-oriented programming
AOSD '02 Proceedings of the 1st international conference on Aspect-oriented software development
Integrating independent components with on-demand remodularization
OOPSLA '02 Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
JAsCo: an aspect-oriented approach tailored for component based software development
Proceedings of the 2nd international conference on Aspect-oriented software development
Just-in-time aspects: efficient dynamic weaving for Java
Proceedings of the 2nd international conference on Aspect-oriented software development
Type Inference for Late Binding: The SmallEiffel Compiler
JMLC '97 Proceedings of the Joint Modular Languages Conference on Modular Programming Languages
Optimizing Dynamically-Typed Object-Oriented Languages With Polymorphic Inline Caches
ECOOP '91 Proceedings of the European Conference on Object-Oriented Programming
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
Stress-testing Control Structures for Dynamic Dispatch in Java
Proceedings of the 2nd Java Virtual Machine Research and Technology Symposium
A Technique for Dynamic Updating of Java Software
ICSM '02 Proceedings of the International Conference on Software Maintenance (ICSM'02)
Profiling Java applications using code hotswapping and dynamic call graph revelation
WOSP '04 Proceedings of the 4th international workshop on Software and performance
Virtual machine support for dynamic join points
Proceedings of the 3rd international conference on Aspect-oriented software development
Classbox/J: controlling the scope of change in Java
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
MultiJava: Design rationale, compiler implementation, and applications
ACM Transactions on Programming Languages and Systems (TOPLAS)
Practical dynamic software updating for C
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
Aspectual mixin layers: aspects and features in concert
Proceedings of the 28th international conference on Software engineering
Statically scoped object adaptation with expanders
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Dynamic Updating of Software Systems Based on Aspects
ICSM '06 Proceedings of the 22nd IEEE International Conference on Software Maintenance
The java hotspotTM server compiler
JVM'01 Proceedings of the 2001 Symposium on JavaTM Virtual Machine Research and Technology Symposium - Volume 1
Dynamic C++ classes: a lightweight mechanism to update code in a running program
ATEC '98 Proceedings of the annual conference on USENIX Annual Technical Conference
Controlled, systematic, and efficient code replacement for running java programs
Proceedings of the 3rd ACM SIGOPS/EuroSys European Conference on Computer Systems 2008
Encapsulating and exploiting change with changeboxes
ICDL '07 Proceedings of the 2007 international conference on Dynamic languages: in conjunction with the 15th International Smalltalk Joint Conference 2007
Proceedings of the 7th international conference on Aspect-oriented software development
UpgradeJ: Incremental Typechecking for Class Upgrades
ECOOP '08 Proceedings of the 22nd European conference on Object-Oriented Programming
How Do Java Programs Use Inheritance? An Empirical Study of Inheritance in Java Software
ECOOP '08 Proceedings of the 22nd European conference on Object-Oriented Programming
Designing highly flexible virtual machines: the JnJVM experience
Software—Practice & Experience
From Java to UpgradeJ: an empirical study
Proceedings of the 1st International Workshop on Hot Topics in Software Upgrades
Dynamic software updates: a VM-centric approach
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
Sharing classes between families
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
Revision classes for explicit versioning
Proceedings of the Workshop on AOP and Meta-Data for Software Evolution
Run-Time and atomic weaving of distributed aspects
Transactions on Aspect-Oriented Software Development II
Using first-class contexts to realize dynamic software updates
Proceedings of the International Workshop on Smalltalk Technologies
Supporting automated software re-engineering using re-aspects
Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering
Incremental dynamic updates with first-class contexts
TOOLS'12 Proceedings of the 50th international conference on Objects, Models, Components, Patterns
A formal foundation for dynamic delta-oriented software product lines
Proceedings of the 11th International Conference on Generative Programming and Component Engineering
Hi-index | 0.00 |
This paper presents an approach to update object-oriented applications at run time. We introduce an update model that leverages aspect technology to express a software update as a modular unit. Although many updates remain encapsulated within a single method body, the nature of software updates is clearly crosscutting: Classes depend on each other, and if the interface of one class changes, all clients of the class are affected. We have designed and implemented an update analyzer that automatically compares two versions of a Java program and extracts the necessary updates expressed as aspects. As execution platform, we rely on an aspect-enabled virtual machine to weave the generated updating aspects at run time. The update analyzer uses only a small subset of the user-level services provided by the VM: around advice for method redefinitions as well as field and method pointcuts for single join-point selection. To validate our approach, we have conducted an empirical study on eight real-world Java applications whose versions encompass several years of development. The study shows that most updates (i.e., 98%) can be handled by the dynamic updating system and that most updates (i.e., 92%) can be extracted fully automatically or with only modest programmer intervention.