• The platform facilitates the developer in the
implementation process by providing pre-build
mechanisms for the interaction with the database.
The user does not have to design a database since
all applications rely upon a common database
model.
• Multiple applications and multiple versions of the
same application can operate in parallel upon a
single installation of the platform.
Code modifications can be either simple changes,
for example, additional System.out.println() state-
ments for better logging, or even complex changes
that require the implementation of a new method or
new information to be stored in the database. Even in
the case of simple changes, it is of great importance
to implement them without interrupting the operation
of the system.
Having implemented an architectural prototype
that enabled us to verify the feasibility of the proposed
solution in general (Voulalas and Evangelidis, 2008b),
this paper elaborated on three important aspects:
Versioning of the Modelled Applications. We pre-
sented a simple data versioning technique that allows
us to keep all different versions of the modelled appli-
cations. We modified the database schema in order to
embed the versioning mechanism.
Selective Class Recompilation. We presented a
method for selecting only those classes that have been
modified after being compiled. Further work is re-
quired in order to embed a process for identifying
class dependencies. Having this information will en-
able us to safely select all classes that need to be re-
compiled.
Managing Active Instances of Classes that have to
be Recompiled in Order to Reflect Changes. We
selected a policy that defines that all existing threads
should continue to call old code, whereas new threads
(threads created after class transformation) should
call new code. We presented the way this policy can
be efficiently supported by our system, plus some ex-
tra thoughtsfor extending the policyin order to enable
complex business processes to evolve more smoothly.
Our next research effort will focus on testing the
feasibility of the platform with some real application
scenarios. Based on the case study that we have pre-
sented in our previous work (Voulalas and Evange-
lidis, 2008b), we are going to apply all possible types
of changes in order to evaluate how the system reacts.
We should also validate in practice how the system
operates when two different versions of the same ap-
plication co-exist, especially when they have active
instances in parallel.
REFERENCES
Atkinson, M. and Jordan, M. (2000). A Review of the Ratio-
nale and Architectures of PJama: a Durable, Flexible,
Evolvable and Scalable Orthogonally Persisteng Pro-
gramming Platform. Sun Microsystems, Inc., Moun-
tain View, CA.
Barowski, L. A. and Ii, J. H. C. (2002). Extraction and use
of class dependency information for java. In WCRE
’02: Proceedings of the Ninth Working Conference on
Reverse Engineering (WCRE’02), page 309, Washing-
ton, DC, USA. IEEE Computer Society.
Biesack, D. (2007). Create dynamic applications
with javax.tools.
http://www.ibm.com/
developerworks/java/library/j-jcomp/index.
html
.
Dmitriev, M. (2001). Towards flexible and safe technology
for runtime evolution of java language applications. In
In Proceedings of the Workshop on Engineering Com-
plex Object-Oriented Systems for Evolution, in asso-
ciation with OOPSLA 2001 International Conference.
IntelliJ IDEA (2008). Dependency analysis.
http://www.jetbrains.com/idea/features/
dependency_analysis.html
.
Pinzger, M., Graefenhain, K., Knab, P., and Gall, H. C.
(2008). A tool for visual understanding of source
code dependencies. In ICPC ’08: Proceedings of the
2008 The 16th IEEE International Conference on Pro-
gram Comprehension, pages 254–259, Washington,
DC, USA. IEEE Computer Society.
Sun Microsystems (2008). The reflection API.
http://java.sun.com/docs/books/tutorial/
reflect/index.html
.
Voulalas, G. and Evangelidis, G. (2007). A framework
for the development and deployment of evolving ap-
plications: The domain model. In ICSOFT Interna-
tional Conference on Software and Data Technolo-
gies, Barcelona, Spain.
Voulalas, G. and Evangelidis, G. (2008a). Developing and
deploying dynamic applications: An architectural pro-
totype. In Filipe, J., Shishkov, B., and Helfert, M., ed-
itors, Communications in Computer and Information
Science, volume 10, pages 293–306. Springer Berlin
Heidelberg.
Voulalas, G. and Evangelidis, G. (2008b). Developing and
deploying dynamic applications: An architectural pro-
totype. In ICSOFT International Conference on Soft-
ware and Data Technologies, Porto, Portugal.
Warski, A. (2008). Data versioning and en-
vers.
http://www.jboss.org/downloading/
?projectId=envers&url=/envers/downloads/
presentations/envers_nurnberg.pdf
.
Zhu, N. (2003). Data versioning systems. Technical report,
Computer Science Department, Stony Brook Univer-
sity.
WEBIST 2009 - 5th International Conference on Web Information Systems and Technologies
322