The Evolving Philosophers Problem: Dynamic Change Management
IEEE Transactions on Software Engineering
What is Java binary compatibility?
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Architecture-based runtime software evolution
Proceedings of the 20th international conference on Software engineering
Java Virtual Machine Specification
Java Virtual Machine Specification
Online Software Upgrading: New Research Directions and Practical Considerations
COMPSAC '02 Proceedings of the 26th International Computer Software and Applications Conference on Prolonging Software Life: Development and Redevelopment
Supporting Unanticipated Dynamic Adaptation of Application Behaviour
ECOOP '02 Proceedings of the 16th European Conference on Object-Oriented Programming
A Technique for Dynamic Updating of Java Software
ICSM '02 Proceedings of the International Conference on Software Maintenance (ICSM'02)
Partitioning of Java Applications to Support Dynamic Updates
APSEC '04 Proceedings of the 11th Asia-Pacific Software Engineering Conference
Type-based hot swapping of running modules
Acta Informatica
Handling run-time updates in distributed applications
Proceedings of the 2005 ACM symposium on Applied computing
Eclipse Rich Client Platform: Designing, Coding, and Packaging Java(TM) Applications
Eclipse Rich Client Platform: Designing, Coding, and Packaging Java(TM) 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
Dynamic Updating of Software Systems Based on Aspects
ICSM '06 Proceedings of the 22nd IEEE International Conference on Software Maintenance
Online Software Maintenance for Mission-Critical Systems
ICSM '06 Proceedings of the 22nd IEEE International Conference on Software Maintenance
POLUS: A POwerful Live Updating System
ICSE '07 Proceedings of the 29th international conference on Software Engineering
Rich Client Programming: Plugging into the NetBeans(TM) Platform
Rich Client Programming: Plugging into the NetBeans(TM) Platform
Reengineering Standard Java Runtime Systems through Dynamic Bytecode Instrumentation
SCAM '07 Proceedings of the Seventh IEEE International Working Conference on Source Code Analysis and Manipulation
Tranquility: A Low Disruptive Alternative to Quiescence for Ensuring Safe Dynamic Updates
IEEE Transactions on Software Engineering
Towards dynamic plug-in replacement in Eclipse plug-in development
Proceedings of the 2007 OOPSLA workshop on eclipse technology eXchange
Module Reload through Dynamic Update - The Case of NetBeans
CSMR '08 Proceedings of the 2008 12th European Conference on Software Maintenance and Reengineering
Loosely-separated “sister” namespaces in java
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
Towards a dynamic-update-enabled JVM
Proceedings of the Workshop on AOP and Meta-Data for Software Evolution
Safely updating running software: tranquility at the object level
Proceedings of the 7th Workshop on Reflection, AOP and Meta-Data for Software Evolution
JavAdaptor: unrestricted dynamic software updates for Java
Proceedings of the 33rd International Conference on Software Engineering
Implications of modular systems on dynamic updating
Proceedings of the 14th international ACM Sigsoft symposium on Component based software engineering
Run-time phenomena in dynamic software updating: causes and effects
Proceedings of the 12th International Workshop on Principles of Software Evolution and the 7th annual ERCIM Workshop on Software Evolution
Using first-class contexts to realize dynamic software updates
Proceedings of the International Workshop on Smalltalk Technologies
Incremental dynamic updates with first-class contexts
TOOLS'12 Proceedings of the 50th international conference on Objects, Models, Components, Patterns
Formalizing correctness criteria of dynamic updates derived from specification changes
Proceedings of the 8th International Symposium on Software Engineering for Adaptive and Self-Managing Systems
Hi-index | 0.00 |
The ability to dynamically change the behavior of an application is becoming an important issue in contemporary rich client software development. Not only can programmers benefit from dynamic updates during the development of concurrent applications where recreation of complex application states can be avoided during test and debugging but also at post-deployment time where applications can be updated transparently without going through the well-known halt, redeploy and restart scheme. In this paper, we explain how our dynamic update framework achieves transparent dynamic updates of running Java applications while guaranteeing both type and thread safety. A novel feature of our approach is that it supports full redefinition of classes by allowing changes to the type hierarchy. Our approach is based on a lightweight runtime system, which is injected into an application via bytecode transformations at class loading. We show how our approach can add dynamic update capabilities to rich client development by integrating it with the NetBeans rich client platform. Performance experiments on our NetBeans implementation show that the overhead of our approach is low when applied to component application programming interface classes. To the best of our knowledge no other existing approach achieves the same level of low overhead and programming transparency. Copyright © 2009 John Wiley & Sons, Ltd.