skip to main content
10.1145/2594291.2594293acmconferencesArticle/Chapter ViewAbstractPublication PagespldiConference Proceedingsconference-collections
research-article

Doppio: breaking the browser language barrier

Published: 09 June 2014 Publication History

Abstract

Web browsers have become a de facto universal operating system, and JavaScript its instruction set. Unfortunately, running other languages in the browser is not generally possible. Translation to JavaScript is not enough because browsers are a hostile environment for other languages. Previous approaches are either non-portable or require extensive modifications for programs to work in a browser.
This paper presents Doppio, a JavaScript-based runtime system that makes it possible to run unaltered applications written in general-purpose languages directly inside the browser. Doppio provides a wide range of runtime services, including a file system that enables local and external (cloud-based) storage, an unmanaged heap, sockets, blocking I/O, and multiple threads. We demonstrate DOPPIO's usefulness with two case studies: we extend Emscripten with Doppio, letting it run an unmodified C++ application in the browser with full functionality, and present DoppioJVM, an interpreter that runs unmodified JVM programs directly in the browser. While substantially slower than a native JVM (between 24X and 42X slower on CPU-intensive benchmarks in Google Chrome), DoppioJVM makes it feasible to directly reuse existing, non compute-intensive code.

References

[1]
A. Adya, J. Howell, M. Theimer, W. J. Bolosky, and J. R. Douceur. Cooperative task management without manual stack management. In USENIX Annual Technical Conference, General Track, pages 289--302, 2002.
[2]
J. Ansel, P. Marchenko, Ú. Erlingsson, E. Taylor, B. Chen, D. L. Schuff, D. Sehr, C. Biffle, and B. Yee. Language-independent sandboxing of just-in-time compilation and self-modifying code. In M. W. Hall and D. A. Padua, editors, PLDI, pages 355--366. ACM, 2011.
[3]
P. Bright. Internet Explorer 10 share doubles again on the back of Windows 7. http://goo.gl/hLYPa5.
[4]
David Herman and Luke Wagner and Alon Zakai. asm.js. http://asmjs.org/spec/latest/.
[5]
J. R. Douceur, J. Elson, J. Howell, and J. R. Lorch. Leveraging legacy code to deploy desktop applications on the web. In R. Draves and R. van Renesse, editors, OSDI, pages 339--354. USENIX Association, 2008.
[6]
C. Fournet, N. Swamy, J. Chen, P.-É. Dagand, P.-Y. Strub, and B. Livshits. Fully abstract compilation to JavaScript. In POPL, pages 371--384, 2013.
[7]
Google. Dart: Structured web apps. http://www.dartlang.org/.
[8]
Google. JRE Emulation Reference - Google Web Toolkit - Google Developers. https://developers.google.com/web-toolkit/doc/latest/RefJreEmulation.
[9]
Google. NaCl and PNaCl. https://developers.google.com/native-client/pnacl-preview/nacl-and-pnacl.
[10]
Google. WebRTC. http://www.webrtc.org/.
[11]
Google Web Toolkit Community. Google web toolkit. https://developers.google.com/web-toolkit/.
[12]
A. Guha, C. Saftoiu, and S. Krishnamurthi. The essence of JavaScript. In ECOOP, pages 126--150, 2010.
[13]
Jeremy Ashkenas. CoffeeScript. http://coffeescript.org/.
[14]
Khronos Group. WebGL - OpenGL ES 2.0 for the Web. http://www.khronos.org/webgl/.
[15]
T. Lindholm and F. Yellin. The Java virtual machine specification. Java series. Addison-Wesley, 1999.
[16]
J. Martin. kanaka/websockify. https://github.com/kanaka/websockify.
[17]
Microsoft Corporation. IL2JS - an intermediate language to JavaScript compiler. https://github.com/Reactive-Extensions/IL2JS.
[18]
Microsoft Corporation. setImmediate API. http://ie.microsoft.com/testdrive/Performance/setImmediateSorting/Default.html.
[19]
Microsoft Corporation. Welcome to TypeScript. http://www.typescriptlang.org.
[20]
R. Sasse, S. T. King, J. Meseguer, and S. Tang. Ibos: A correct-by-construction modular browser. In C. S. Pasareanu and G. Salaün, editors, FACS, volume 7684 of Lecture Notes in Computer Science, pages 224--241. Springer, 2012.
[21]
University of Illinois. Code Moo -- A playful way to learn programming. http://www.codemoo.com/index2.html.
[22]
W3C Working Group. 6. Web application APIs. http://www.w3.org/TR/html5/webappapis.html#timers.
[23]
B. Yee, D. Sehr, G. Dardyk, J. B. Chen, R. Muth, T. Ormandy, S. Okasaka, N. Narula, and N. Fullagar. Native client: a sandbox for portable, untrusted x86 native code. Commun. ACM, 53(1):91--99, 2010.
[24]
D. Yoo, E. Schanzer, S. Krishnamurthi, and K. Fisler. Wescheme: the browser is your programming environment. In G. Rößling, T. L. Naps, and C. Spannagel, editors, ITiCSE, pages 163--167. ACM, 2011.
[25]
A. Zakai. Porting "Me & My Shadow" to the Web. http://mzl.la/17Mujzr.
[26]
A. Zakai. Emscripten: an LLVM-to-JavaScript compiler. In OOPSLA Companion, pages 301--312, 2011.

Cited By

View all
  • (2020)BrowserVM: Running Unmodified Operating Systems and Applications in Browsers2020 IEEE International Conference on Web Services (ICWS)10.1109/ICWS49710.2020.00070(473-480)Online publication date: Oct-2020
  • (2018)Putting in all the stops: execution control for JavaScriptACM SIGPLAN Notices10.1145/3296979.319237053:4(30-45)Online publication date: 11-Jun-2018
  • (2018)Putting in all the stops: execution control for JavaScriptProceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation10.1145/3192366.3192370(30-45)Online publication date: 11-Jun-2018
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
PLDI '14: Proceedings of the 35th ACM SIGPLAN Conference on Programming Language Design and Implementation
June 2014
619 pages
ISBN:9781450327848
DOI:10.1145/2594291
  • cover image ACM SIGPLAN Notices
    ACM SIGPLAN Notices  Volume 49, Issue 6
    PLDI '14
    June 2014
    598 pages
    ISSN:0362-1340
    EISSN:1558-1160
    DOI:10.1145/2666356
    • Editor:
    • Andy Gill
    Issue’s Table of Contents
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 09 June 2014

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. JVM
  2. JavaScript
  3. browsers
  4. operating systems
  5. programming languages
  6. web

Qualifiers

  • Research-article

Conference

PLDI '14
Sponsor:

Acceptance Rates

PLDI '14 Paper Acceptance Rate 52 of 287 submissions, 18%;
Overall Acceptance Rate 406 of 2,067 submissions, 20%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)20
  • Downloads (Last 6 weeks)1
Reflects downloads up to 19 Feb 2025

Other Metrics

Citations

Cited By

View all
  • (2020)BrowserVM: Running Unmodified Operating Systems and Applications in Browsers2020 IEEE International Conference on Web Services (ICWS)10.1109/ICWS49710.2020.00070(473-480)Online publication date: Oct-2020
  • (2018)Putting in all the stops: execution control for JavaScriptACM SIGPLAN Notices10.1145/3296979.319237053:4(30-45)Online publication date: 11-Jun-2018
  • (2018)Putting in all the stops: execution control for JavaScriptProceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation10.1145/3192366.3192370(30-45)Online publication date: 11-Jun-2018
  • (2017)Collapsing towers of interpretersProceedings of the ACM on Programming Languages10.1145/31581402:POPL(1-33)Online publication date: 27-Dec-2017
  • (2016)Mocks, Proxies, and Transpilation as Development Strategies for Web DevelopmentProceedings of the 11th edition of the International Workshop on Smalltalk Technologies10.1145/2991041.2991051(1-6)Online publication date: 23-Aug-2016
  • (2015)Java-to-JavaScript translation via structured control flow reconstruction of compiler IRACM SIGPLAN Notices10.1145/2936313.281671551:2(91-103)Online publication date: 21-Oct-2015
  • (2015)Java-to-JavaScript translation via structured control flow reconstruction of compiler IRProceedings of the 11th Symposium on Dynamic Languages10.1145/2816707.2816715(91-103)Online publication date: 21-Oct-2015
  • (2015)Typed JS: A Lightweight Typed JavaScript Engine for Mobile DevicesMobile Computing, Applications, and Services10.1007/978-3-319-29003-4_7(107-121)Online publication date: 2015
  • (2024)A Next Generation Web Browser Execution Environment2024 IEEE International Conference on Data and Software Engineering (ICoDSE)10.1109/ICoDSE63307.2024.10829873(1-6)Online publication date: 30-Oct-2024
  • (2024)Os noise mitigations for benchmarking web browser execution environment performanceDiscover Computing10.1007/s10791-024-09471-427:1Online publication date: 29-Oct-2024
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media