We introduce a programming paradigm for distributed applications based on a persistent distributed heap. A proof-of-concept implementation is provided as a JavaScript library, together with several examples that embody popular patterns for web applications.To those I love, especially to my grandmother Rita, my brother Leonardo, and Carlotta.
AcknowledgementsThis work would have been much harder, and surely longer, without the contributions and help I received from many people. I would especially like to thank my supervisors Vincenzo Gervasi and Antonio Cisternino who encouraged me to investigate persistence and distribution in programming languages. The conversations I had with them laid the groundwork of my thesis and helped me during its development.I believe that a valuable contribution to this work comes from Vincenzo Gervasi, who gave me advice on how to write a scientific paper and suggested I adopt a shallow approach to persistence.I thank Andrea Canciani, who gave me his previous research proposal about persistence. It was a good starting point for my study on the stateof-the-art of persistence. I am also particularly grateful for the assistance given by Simone Zenzaro, who helped me to understand the Abstract State Machine method.I would like to thank my friends who closely shared with me the time spent working on the development of a thesis. I would especially thank Daniele Virgilio, who supported me at the beginning of this work with several hints about how to face a thesis, Marco Ponza, who proved one more time to be a priceless adventure companion, Nicola Corti, who always made coffee for me and whose laugh is contagious, and Alessandro Lenzi, who was an amusing desk neighbour.Thanks to the "Il Parcheggione" juggling group, especially the President Cristiana, Federica, Massimo and Valentino, with whom I enjoy my free time. Thanks to the "Food Bytes" community, with whom I enjoyed tasty food and had a good time, and to "Geckosoft", namely Fabio and Davide, who supported me at the end of this work. I also greatly appreciate the support of all the other friends I have in Pisa.My family and all my Venetian friends deserve special credits for supporting me through the entire development of this thesis.Finally, I would like to express my gratitude to Carlotta, who has always believed in me and accompanied me to the end of this path in my life.
ContentsIntroduction 1 Persistence and distribution of state are two important aspects in modern distributed applications. Although they may be considered two orthogonal concepts, because persistence concerns the extent in time of state, while distribution concerns its extent in space, they are in fact closely connected.In distributed applications, these two aspects are combined in order to let users access the application from different locations at different times. In general, these applications preserve their state after being used and restore it the next time they are accessed, without regard of locations. However, the state of an application may change ...