Adaptive Redistribution and Replication to Improve the Responsiveness of Mobile Web Apps


  • Kijin An Quality Tool Lab, Samsung Research, Seoul, Republic of Korea
  • Eli Tilevich Software Innovations Lab, Virginia Tech, United States



Mobile Web Apps, JavaScript, Dynamic Adaptation, Program Analysis & Transformation, Web Frameworks, Replication


In a mobile web app, a browser-based client communicates with a cloud-based server across the network. An app is statically divided into client and server functionalities, so the resulting division remains fixed at runtime. However, if such static division mismatches the current network conditions and the device’s processing capacities, app responsiveness and energy efficiency can deteriorate rapidly. To address this problem, we present Communicating Web Vessels (CWV), an adaptive redistribution and replication framework that improves the responsiveness of full-stack JavaScript mobile apps. Unlike standard computation offloading, in which client functionalities move to run on the server, CWV’s redistribution is bidirectional. Without any preprocessing, CWV enables apps to move any functionality from the server to the client and vice versa at runtime, thus adapting to the ever-changing execution environment of the web. Having moved to the client, former server functionalities become regular local functions. To further improve performance, CWV can replicate server-side functionalities on the client and keep the replicas consistent. By monitoring the network, CWV determines if a redistribution or a replication would improve app performance, and then analyzes, transforms, sandboxes, moves, or replicates functions and program state at runtime. An evaluation with third-party mobile web apps shows that CWV optimizes their performance for dissimilar network conditions and client devices. As compared to their original versions, CWV-powered web apps improve their performance (i.e., latency, energy consumption), particularly when executed over limited networks.1


Download data is not yet available.

Author Biographies

Kijin An, Quality Tool Lab, Samsung Research, Seoul, Republic of Korea

Kijin An is a Research Staff Member at Samsung Research. His research interests are in Software Engineering and Web Engineering. He received his Ph.D. degree from Virginia Tech and his Master’s degree from POSTECH. In the past, he conducted research at Robotics Research at KIST.

Eli Tilevich, Software Innovations Lab, Virginia Tech, United States

Eli Tilevich is a Professor in the Dept. of Computer Science at Virginia Tech, where he leads the Software Innovations lab. Tilevich’s research interests lie on the Systems end of Software Engineering, with a particular emphasis on distributed systems, mobile/IoT applications, middleware, automated program transformation, energy efficiency, privacy & security, and CS education. He has published over 120 refereed research papers on these subjects. Tilevich has earned a B.A. summa cum laude in Computer Science/Math from Pace University, an M.S. in Information Systems from NYU, and a Ph.D. in Computer Science from Georgia Tech.


Trepn profiler., 2018.

Tim Ambler and Nicholas Cloud. Browserify. In JavaScript Frameworks for Modern Web Dev, pages 101–120. Springer, 2015.

Kijin An. Facilitating the evolutionary modifications in distributed apps via automated refactoring. In Web Engineering, pages 548–553. Springer International Publishing, 2019.

Kijin An. Enhancing web app execution with automated reengineering. In Companion Proceedings of the Web Conference 2020, pages 274–278, 2020.

Kijin An, Na Meng, and Eli Tilevich. Automatic inference of translation rules for native cross-platform mobile applications. In Proceedings of the 5th IEEE/ACM International Conference on Mobile Software Engineering and Systems(MobileSoft) 2018, 2018.

Kijin An and Eli Tilevich. Catch & release: An approach to debugging distributed full-stack JavaScript applications. In Web Engineering, pages 459–473, 2019.

Kijin An and Eli Tilevich. Client insourcing: Bringing ops in-house for seamless re-engineering of Full-Stack JavaScript Applications. In Proceedings of The Web Conference 2020, pages 179–189, 2020.

Kijin An and Eli Tilevich. D-goldilocks: Automatic redistribution of remote functionalities for performance and efficiency. In Proceedings of the 27th IEEE International Conference on Software Analysis, Evolution and Reengineering(SANER), 2020.

Kijin An and Eli Tilevich. Communicating web vessels: Improving the responsiveness of mobile web apps with adaptive redistribution. In Proceedings of the 21st International Conference on Web Engineering (ICWE 2021), pages 388–403. Springer, 2021.

Earl T. Barr, Mark Harman, Yue Jia, Alexandru Marginean, and Justyna Petke. Automated software transplantation. In Proceedings of the 2015 International Symposium on Software Testing and Analysis, ISSTA 2015, pages 257–269, 2015.

Leonardo De Moura and Nikolaj Bjørner. Z3: An efficient smt solver. In International conference on Tools and Algorithms for the Construction and Analysis of Systems, pages 337–340. Springer, 2008.

Christian Dietrich, Stefan Naumann, Robin Thrift, and Daniel Lohmann. Rt.js: Practical real-time scheduling for web applications. In 2019 Real-Time Systems Symposium (RTSS).

Ning Ding, Daniel Wagner, Xiaomeng Chen, Abhinav Pathak, Y Charlie Hu, and Andrew Rice. Characterizing and modeling the impact of wireless signal strength on smartphone battery drain. In ACM SIGMETRICS Performance Evaluation Review, pages 29–40, 2013.

Kevin Ellis, Armando Solar-Lezama, and Josh Tenenbaum. Sampling for bayesian program learning. In Advances in Neural Information Processing Systems, pages 1297–1305, 2016.

Yu Feng, Ruben Martins, Osbert Bastani, and Isil Dillig. Program synthesis using conflict-driven learning. In ACM SIGPLAN Notices, volume 53, pages 420–435. ACM, 2018.

Yu Feng, Ruben Martins, Jacob Van Geffen, Isil Dillig, and Swarat Chaudhuri. Component-based synthesis of table consolidation and transformation tasks from examples. In ACM SIGPLAN Notices, volume 52, pages 422–436. ACM, 2017.

John K Feser, Swarat Chaudhuri, and Isil Dillig. Synthesizing data structure transformations from input-output examples. In ACM SIGPLAN Notices, volume 50, pages 229–239. ACM, 2015.

Matthew Fredrikson and Benjamin Livshits. Zø: An optimizing distributing zero-knowledge compiler. In 23rd USENIX Security Symposium (USENIX Security 14), pages 909–924, San Diego, CA, 2014.

Victor BF Gomes, Martin Kleppmann, Dominic P Mulligan, and Alastair R Beresford. Verifying strong eventual consistency in distributed systems. Proceedings of the ACM on Programming Languages, 1(OOPSLA):1–28, 2017.

Marco Guarnieri, Petar Tsankov, Tristan Buchs, Mohammad Torabi Dashti, and David Basin. Test execution checkpointing for web applications. In Proceedings of the 26th ACM SIGSOFT International Symposium on Software Testing and Analysis, pages 203–214, 2017.

Sumit Gulwani, Oleksandr Polozov, Rishabh Singh, et al. Program synthesis. Foundations and Trends in Programming Languages, 4(1-2): 1–119, 2017.

Andreas Haas, Andreas Rossberg, Derek L Schuff, Ben L Titzer, Michael Holman, Dan Gohman, Luke Wagner, Alon Zakai, and JF Bastien. Bringing the web up to speed with webassembly. In Proceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 185–200, 2017.

Mohammad Ashraful Hoque, Matti Siekkinen, Kashif Nizam Khan, Yu Xiao, and Sasu Tarkoma. Modeling, profiling, and debugging the energy consumption of mobile devices. ACM Computing Surveys (CSUR), (3):39, 2016.

Krister Jacobsson, Håkan Hjalmarsson, Niels Möller, and Karl Henrik Johansson. Estimation of rtt and bandwidth for congestion control applications in communication networks. In IEEE CDC, Paradise Island, Bahamas. IEEE, 2004.

Young-Woo Kwon and Eli Tilevich. Power-efficient and fault-tolerant distributed mobile execution. ICDCS ’13. IEEE, 2013.

Young-Woo Kwon and Eli Tilevich. Configurable and adaptive middleware for energy-efficient distributed mobile computing. In MobiCASE, pages 106–115. IEEE, 2014.

Young-Woo Kwon, Eli Tilevich, and Taweesup Apiwattanapong. DR-OSGi: Hardening distributed components with network volatility resiliency. In Jean M. Bacon and Brian F. Cooper, editors, Middleware 2009, pages 373–392. Springer, 2009.

Ding Li, Shuai Hao, Jiaping Gui, and William GJ Halfond. An empirical study of the energy consumption of Android applications. In 2014 IEEE International Conference on Software Maintenance and Evolution (ICSME), pages 121–130. IEEE, 2014.

Ding Li, Yingjun Lyu, Jiaping Gui, and William GJ Halfond. Automated energy optimization of HTTP requests for mobile applications. In Software Engineering (ICSE), 2016 IEEE/ACM 38th International Conference on, pages 249–260. IEEE, 2016.

Reiner Marchthaler and Sebastian Dingler. Kalman-Filter, volume 30. Springer, 2017.

Nima Nikzad, Octav Chipara, and William G Griswold. APE: an annotation language and middleware for energy-efficient mobile application development. In Proceedings of the 36th International Conference on Software Engineering, pages 515–526. ACM, 2014.

Josh Robinson, Aaron Gray, and David Titarenco. Getting started with meteor. In Introducing Meteor, pages 27–41. Springer, 2015.

Koushik Sen, Swaroop Kalasapur, Tasneem Brutch, and Simon Gibbs. Jalangi: A selective record-replay and dynamic analysis framework for JavaScript. In Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering, pages 488–498, 2013.

Jiasi Shen and Martin C Rinard. Using active learning to synthesize models of applications that access databases. In Proceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 269–285. ACM, 2019.

Stelios Sidiroglou-Douskos, Eric Lahtinen, Anthony Eden, Fan Long, and Martin Rinard. CodeCarbonCopy. In Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering, pages 95–105, 2017.

Chungha Sung, Markus Kusano, Nishant Sinha, and Chao Wang. Static DOM event dependency analysis for testing web applications. In Proceedings of the 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering, pages 447–459, 2016.

Chungha Sung, Markus Kusano, and Chao Wang. Modular verification of interrupt-driven software. In 2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE), pages 206–216, 2017.

Chungha Sung, Shuvendu K. Lahiri, Constantin Enea, and Chao Wang. Datalog-Based Scalable Semantic Diffing of Concurrent Programs, page 656–666. Association for Computing Machinery, New York, NY, USA, 2018.

Eli Tilevich and Yannis Smaragdakis. J-Orchestra: Automatic java application partitioning. In Boris Magnusson, editor, ECOOP 2002 – Object-Oriented Programming, pages 178–204, Berlin, Heidelberg, 2002. Springer Berlin Heidelberg.

Vassilios Tsaoussidis, Hussein Badr, Xin Ge, and Kostas Pentikousis. Energy/throughput tradeoffs of tcp error control strategies. In Proceedings ISCC 2000. Fifth IEEE Symposium on Computers and Communications, pages 106–112. IEEE, 2000.

Jim Waldo, Geoff Wyant, Ann Wollrath, and Sam Kendall. A note on distributed computing. In International Workshop on Mobile Object Systems, pages 49–64. Springer, 1996.

Xudong Wang, Xuanzhe Liu, Ying Zhang, and Gang Huang. Migration and execution of JavaScript applications between mobile devices and cloud. In Proceedings of the 3rd annual conference on Systems, programming, and applications: software for humanity, pages 83–84, 2012.

Conrad Watt. Mechanising and verifying the webassembly specification. In Proceedings of the 7th ACM SIGPLAN International Conference on Certified Programs and Proofs, pages 53–65, 2018.