ABSTRACT
Modern Web 2.0 applications, such as GMail, Live Maps, Face-book and many others, use a combination of Dynamic HTML, JavaScript and other Web browser technologies commonly referred to as AJAX to push application execution to the client web browser. This improves the responsiveness of these network-bound applications, but the shift of application execution from a back-end server to the client also often dramatically increases the amount of code that must first be downloaded to the browser. This creates an unfortunate Catch-22: to create responsive distributed Web 2.0 applications developers move code to the client, but for an application to be responsive, the code must first be transferred there, which takes time.
In this paper, we present Doloto, an optimization tool for Web 2.0 applications. Doloto analyzes application workloads and automatically rewrites the existing application code to introduce dynamic code loading. After being processed by Doloto, an application will initially transfer only the portion of code necessary for application initialization. The rest of the application's code is replaced by short stubs---their actual implementations are transfered lazily in the background or, at the latest, on-demand on first execution of a particular application feature. Moreover, code that is rarely executed is rarely downloaded to the user browser. Because Doloto significantly speeds up the application startup and since subsequent code download is interleaved with application execution, applications rewritten with Doloto appear much more responsive to the end-user.
To demonstrate the effectiveness of Doloto in practice, we have performed experiments on five large widely-used Web 2.0 applications. Doloto reduces the size of application code download by hundreds of kilobytes or as much as 50% of the original download size. The time to download and begin interacting with large applications is reduced by 20--40% depending on the application and wide-area network conditions. Doloto especially shines on wireless and mobile connections, which are becoming increasingly important in today's computing environments.
- A. V. Aho, M. Lam, R. Sethi, and J. D. Ullman. Compilers: Principles, Techniques, and Tools. Addison-Wesley, 2007. Google ScholarDigital Library
- Dojo Foundation. Dojo, the JavaScript toolkit. http://dojotoolkit.org, 2007.Google Scholar
- M. Franz. Dynamic linking of software components. Computer, 30(3):74--81, Mar 1997. Google ScholarDigital Library
- Google Web toolkit. http://code.google.com/webtoolkit.Google Scholar
- G. Hunt and M. Scott. Coign automatic distributed partitioning system. In Proceedings of the Symposium on Operating System Design and Implementation, 1999. Google ScholarDigital Library
- T. Jensen, D. L. Métayer, and T. Thorn. Security and dynamic class loading in Java: A formalization. In Proceedings of the International Conference on Computer Languages, page 4, 1998. Google ScholarDigital Library
- E. Kiciman and B. Livshits. AjaxScope: a platform for remotely monitoring the client-side behavior of Web 2.0 applications. In Proceedings of Symposium on Operating Systems Principles, Oct. 2007. Google ScholarDigital Library
- C. Krintz, B. Calder, and U. Hölzle. Reducing transfer delay using Java class file splitting and prefetching. In OOPSLA, pages 276--291, 1999. Google ScholarDigital Library
- E. Lawrence. Fiddler: Web debugging proxy. http://www.fiddlertool.com/fiddler/, 2007.Google Scholar
- S. Liang and G. Bracha. Dynamic class loading in the Java virtual machine. In Proceedings of the Conference on Object-Oriented Programming, Systems, Languages, and Applications, pages 36--44, 1998. Google ScholarDigital Library
- Microsoft Corporation. Microsoft live labs volta. http://labs.live.com/volta/, 2007.Google Scholar
- Microsoft Corporation. Silverlight. http://silverlight.net, 2007.Google Scholar
- D. S. Myers, J. N. Carlisle, J. A. Cowling, and B. H. Liskov. MapJAX: Data structure abstractions for asynchronous Web applications. In Proceedings of the Usenix Technical Conference, June 2007. Google ScholarDigital Library
- G. Pacifici, M. Spreitzer, A. Tantawi, and A. Youssef. Performance management for cluster based Web services. Technical report, IBM Research, 2003.Google Scholar
- Pew Internet and American Project. Home broadband adoption 2007. http://www.pewinternet.org/pdfs/PIP_Broadband\%202007.pdf, 2007.Google Scholar
- C. Reis, J. Dunagan, H. Wang, O. Dubrovsky, and S. Esmeir. BrowserShield: Vulnerability-driven filtering of dynamic HTML. In Proc. OSDI, 2006. Google ScholarDigital Library
- S. Souders. High performance Web sites. www.stevesouders.com/docs/fowa.ppt, 2007. Google ScholarDigital Library
- S. Souders. High Performance Web Sites: Essential Knowledge for Front-End Engineers. O'Reilly Media, Inc., 2007. Google ScholarDigital Library
- Squid developers. Squid Web proxy cache. http://www.squid-cache.org, 2006.Google Scholar
- C. Stewart and K. Shen. Performance modeling and system management for multi-component online services. In USENIX Symposium on Networked Systems Design and Implementation, 2005. Google ScholarDigital Library
- C. Tang, M. Steinder, M. Spreitzer, and G. Pacifici. A scalable application placement controller enterprise data centers. In WWW 2007: Track: Performance and Scalability, May 2007. Google ScholarDigital Library
- E. Tilevich and Y. Smaragdakis. J-orchestra: Automatic Java application partitioning. In Proceedings of the European Conference on Object-Oriented Programming, June 2002. Google ScholarDigital Library
- F. Tip, P. F. Sweeney, and C. Laffra. Extracting library-based Java applications. Commun. ACM, 46(8):35--40, 2003. Google ScholarDigital Library
- F. Tip, P. F. Sweeney, C. Laffra, A. Eisma, and D. Streeter. Practical extraction techniques for Java. ACM Transactions of Programming Languages and Systems, 24(6):625--666, 2002. Google ScholarDigital Library
- Wikipedia. XMLHttpRequest. http://en.wikipedia.org/wiki/XMLHttpRequest.Google Scholar
- D. Yu, A. Chander, N. Islam, and I. Serikov. JavaScript instrumentation for browser security. In Proceedings of the Conference on the Principle of Programming Languages, Jan. 2007. Google ScholarDigital Library
Index Terms
- Doloto: code splitting for network-bound web 2.0 applications
Recommendations
A Model-Based Approach for Crawling Rich Internet Applications
New Web technologies, like AJAX, result in more responsive and interactive Web applications, sometimes called Rich Internet Applications (RIAs). Crawling techniques developed for traditional Web applications are not sufficient for crawling RIAs. The ...
A glimpse of Hopjs
ICFP '16Hop.js is a multitier programming environment for JavaScript. It allows a single JavaScript program to describe the client-side and the server-side components of a web application. Its runtime environment ensures consistent executions of the ...
Rapid Web Application Development: A Ruby on Rails Tutorial
Ruby on Rails is a powerful Web application development framework based on the dynamic object-oriented programming language Ruby. With several popular Web sites based on it, its prominence is rapidly rising. Ruby on Rails fully supports Web 2.0 and Web ...
Comments