Web Browser as a Computation Container
No Thumbnail Available
Date
Authors
Journal Title
Journal ISSN
Volume Title
Publisher
Abstract
With new developments in JavaScript engines and the introduction of WebAssembly, web
applications can execute CPU-intensive tasks at 0.9 the speed of C/C++. Dozens of natively
implemented APIs such as WebGL and Audio API are now exposed to JavaScript through
the browser. With the help of these APIs, we see more and more web-based applications
and games.
As browsers are the most ubiquitous software, it is now possible to build universal applications that run on every machine that has a web browser installed on it.
In this dissertation, we investigated the possibility of using web browsers as computation containers that make applications universal. As progressive web applications gained
tremendous popularity in recent years, their performance still worries developers. Therefore, in the first part of this dissertation, we concentrated on the performance aspect of web
applications. We discovered that the computation in the browser has improved to reach 0.7
to 0.9 the speed of native code. We conducted our performance evaluation using real-world
applications and benchmarking. We evaluated the performance of WebAssembly on different platforms such as Windows 10, Ubuntu 18.04, macOS Catalina, iOS 13.6, and Android
iv
10. We ran WebAssembly in Google Chrome and Firefox on all these operating systems
and compared its performance to the performance of the native code.
In the second part of this dissertation, we implemented a design to build web applications
that take advantage of the new performance capabilities in the browser. This design aims to
push some of the computation to the client-side. We validated that powerful client machines
can be used to improve the overall performance of web applications. We implemented this
design in a form of a lightweight benchmark that runs upon page startup. We called it a
decider since it decides either to run computation at the client-side or at the server-side.
We also implemented this design and showed that it improved the overall performance of
web applications in our experiment. We learned that this decider was able to improve the
performance of applications that require moving files to the cloud for computation. We also
evaluated the effect of this design in reducing the cost of back-end operation. In addition,
we evaluated how this design effect RTA ( Real-time Applications).
The third part of this dissertation presents a novel design to get the most out of web technologies in the browser. It aims to bring freedom of the web to desktop applications.
Developers will never need to use proprietary programming languages or frameworks to
implement their ideas. Even with existing cross-platform frameworks, there is still a learning curve that developers need to go through. However, in this design, the development of
desktop applications is done entirely using standardized web technologies. We called this
design CPWA ( Cross-platform Web Applications). In CPWA, the memory footprint of the
same application was about 42% less than ElectronJS version and 51% less NW.js version.