Flexible Runtime Program Adaptations in Java - A Comparison

Software development is an ongoing process which does not end when the first version of an application is released. Bugs must be fixed and requirements evolve. Maintaining an application usually means to stop the application, apply the required changes, and start the application again. This downtime is not acceptable for applications that must be available 24 hours a day, 7 days a week. On the other hand even for end-user desktop applications, restarts to apply patches can be an annoying user experience. For that reason we investigate how to maintain applications at runtime. However, due to the fact that it is not predictable what changes become necessary and when they have to be applied the application must be enabled for unanticipated changes even of already executed program parts. In previous work we proposed a solution for Java, since Java is commonly used for developing 24/7 applications. Unfortunately, this solution came with some limitations. Therefore, we present a novel runtime maintenance approach based on class replacements and mediators which overcomes these limitations and allows unanticipated changes of applications that run on top of a standard Java virtual machine.

[1]  Sara Capecchi,et al.  Extending Java to dynamic object behaviors , 2003, Electron. Notes Theor. Comput. Sci..

[2]  Shigeru Chiba,et al.  Load-Time Structural Reflection in Java , 2000, ECOOP.

[3]  M. Dmitriev Towards Flexible and Safe Technology for Runtime Evolution of Java Language Applications , 2001 .

[4]  U. Wagener,et al.  Maintaining a Competitive Edge , 1993 .

[5]  Wolfgang Weck,et al.  Generic Wrappers , 2000, ECOOP.

[6]  Gregor Kiczales,et al.  Aspect-oriented programming , 1996, CSUR.

[7]  Mario Pukall Object Roles and Runtime Adaptation in Java , 2008, RAM-SE.

[8]  Bo Nørregaard Jørgensen,et al.  Dynamic update of Java applications - balancing change flexibility vs programming transparency , 2009, J. Softw. Maintenance Res. Pract..

[9]  Earl T. Barr,et al.  Runtime Support for Type-Safe Dynamic Java Classes , 2000, ECOOP.

[10]  Gunter Saake,et al.  Towards Unanticipated Runtime Adaptation of Java Applications , 2008, 2008 15th Asia-Pacific Software Engineering Conference.

[11]  Gustavo Alonso,et al.  Dynamic AOP with PROSE , 2005, CAiSE Workshops.

[12]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[13]  Günter Kniesel Type-Safe Delegation for Run-Time Component Adaptation , 1999, ECOOP.

[14]  Jonas Bonér,et al.  What are the key issues for commercial AOP use: how does AspectWerkz address them? , 2004, AOSD '04.

[15]  李幼升,et al.  Ph , 1989 .

[16]  Dong Kwan Kim,et al.  Overcoming JVM HotSwap constraints via binary rewriting , 2008, HotSWUp '08.

[17]  Guy L. Steele,et al.  Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley)) , 2005 .

[18]  Henry Lieberman,et al.  Using prototypical objects to implement shared behavior in object-oriented systems , 1986, OOPLSA '86.

[19]  Ole Lehrmann Madsen,et al.  Proceedings of the European Conference on Object-Oriented Programming , 1992 .

[20]  Bill Venners,et al.  Inside the Java Virtual Machine , 1997 .

[21]  Shigeru Chiba,et al.  A Selective, Just-in-Time Aspect Weaver , 2003, GPCE.

[22]  Alessandro Orso,et al.  A technique for dynamic updating of Java software , 2002, International Conference on Software Maintenance, 2002. Proceedings..

[23]  Kathryn S. McKinley,et al.  Dynamic software updates: a VM-centric approach , 2009, PLDI '09.

[24]  L. Erlikh,et al.  Leveraging legacy system dollars for e-business , 2000 .

[25]  Murali Sitaraman,et al.  Enhancements - Enabling Flexible Feature and Implementation Selection , 2004, ICSR.

[26]  Optimizing JAsCo dynamic AOP through HotSwap and Jutta , 2004 .

[27]  Sheng Liang,et al.  Dynamic class loading in the Java virtual machine , 1998, OOPSLA '98.

[28]  Gustavo Alonso,et al.  Controlled, systematic, and efficient code replacement for running java programs , 2008, Eurosys '08.

[29]  Muga Nishizawa,et al.  An Easy-to-Use Toolkit for Efficient Java Bytecode Translators , 2003, GPCE.

[30]  Rida A. Bazzi,et al.  Immediate Multi-Threaded Dynamic Software Updates Using Stack Reconstruction , 2009, USENIX Annual Technical Conference.

[31]  Markus Dahm,et al.  Byte Code Engineering , 1999, Java-Informations-Tage.

[32]  Elena Giachino,et al.  Featherweight wrap Java , 2007, SAC '07.

[33]  Jonas Boner AspectWerkz - dynamic AOP for Java , 2004 .

[34]  Gilad Bracha,et al.  Objects as Software Services , 2005 .

[35]  Mikhail Dmitriev,et al.  Safe class and data evolution in large and long-lived Java applications , 2001 .