[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
research-article

Flapjax: a programming language for Ajax applications

Published: 25 October 2009 Publication History

Abstract

This paper presents Flapjax, a language designed for contemporary Web applications. These applications communicate with servers and have rich, interactive interfaces. Flapjax provides two key features that simplify writing these applications. First, it provides event streams, a uniform abstraction for communication within a program as well as with external Web services. Second, the language itself is reactive: it automatically tracks data dependencies and propagates updates along those dataflows. This allows developers to write reactive interfaces in a declarative and compositional style.
Flapjax is built on top of JavaScript. It runs on unmodified browsers and readily interoperates with existing JavaScript code. It is usable as either a programming language (that is compiled to JavaScript) or as a JavaScript library, and is designed for both uses. This paper presents the language, its design decisions, and illustrative examples drawn from several working Flapjax applications.

References

[1]
Atul Adya, Jon Howell, Marvin Theimer, William J. Bolosky, and John R. Douceur. Cooperative task management without manual stack management. In Proceedings of the 2002 Usenix Annual Technical Conference, 2002.
[2]
OpenAjax Alliance. Successful deployment of Ajax and OpenAjax. http://www.openajax.org/whitepapers/Successful Deployment of Ajax and OpenAjax.php.
[3]
Alan Hamilton Borning. The programming language aspects of ThingLab, a constraint-oriented simulation laboratory. ACM Transactions on Programming Languages and Systems, 3(4):353--387, 1981.
[4]
Kimberley Burchett, Gregory H. Cooper, and Shriram Krishnamurthi. Lowering: A static optimization technique for transparent functional reactivity. In ACM SIGPLAN Symposium on Partial Evaluation and Semantics-Based Program Manipulation, pages 71--80, 2007.
[5]
Don Carney, Ugur Çetintemel, Mitch Cherniack, Christian Convey, Sangdon Lee, Greg Seidman, Michael Stonebraker, Nesime Tatbul, and Stan Zdonik. Monitoring streams - a new class of data management applications. In International Conference on Very Large Databases, pages 215--226, 2002.
[6]
Paul Caspi, D. Pilaud, N. Halbwachs, and J. A. Plaice. LUSTRE: A declarative language for programming synchronous systems. In ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 178--188, 1987.
[7]
Mitch Cherniack, Hari Balakrishnan, Magdalena Balazinska, Don Carney, Ugur Çetintemel, Ying Xing, and Stan Zdonik. Scalable distributed stream processing. In First Biennial Conference on Innovative Data Systems Research, 2003.
[8]
Ezra Cooper, Sam Lindley, Philip Wadler, and Jeremy Yallop. Links: Web programming without tiers. In Formal Methods for Components and Objects, 2006.
[9]
Ezra Cooper, Sam Lindley, Philip Wadler, and Jeremy Yallop. The essence of form abstraction. In Asian Symposium on Programming Languages and Systems, 2008.
[10]
Gregory H. Cooper. Integrating Dataflow Evaluation into a Practical Higher-Order Call-by-Value Language. PhD thesis, Brown University, 2008.
[11]
Gregory H. Cooper and Shriram Krishnamurthi. Embedding dynamic dataflow in a call-by-value language. In European Symposium on Programming, pages 294--308, March 2006.
[12]
Antony Courtney. Frappé: Functional reactive programming in Java. In Practical Aspects of Declarative Languages. Springer-Verlag, March 2001.
[13]
Daniel Myers and Jennifer Carlisle and James Cowling and Barbara Liskov. MapJAX: Data Structure Abstractions for Asynchronous Web Applications. In Proceedings of the 2007 USENIX Annual Technical Conference, June 2007.
[14]
Conal Elliott and Paul Hudak. Functional reactive animation. In ACM SIGPLAN International Conference on Functional Programming, pages 263--277, 1997.
[15]
J. Nathan Foster, Michael B. Greenwald, Jonathan T. Moore, Benjamin C. Pierce, and Alan Schmitt. Combinators for bidirectional tree transformations: A linguistic approach to the view update problem. ACM Transactions on Programming Languages and Systems, 29(3), May 2007.
[16]
Bjorn N. Freeman-Benson and Alan Borning. Integrating constraints with an object-oriented language. In European Conference on Object-Oriented Programming, pages 268--286. Springer-Verlag, 1992.
[17]
Jesse James Garrett. Ajax: A new approach to web applications. www.adaptivepath.com/ideas/essays/archives/000385.php.
[18]
Arjun Guha, Shriram Krishnamurthi, and Trevor Jim. Using static analysis for Ajax intrusion detection. In International World Wide Web Conference, April 2009.
[19]
Arjun Guha, Jacob Matthews, Robert Bruce Findler, and Shriram Krishnamurthi. Relationally-parametric polymorphic contracts. In Dynamic Languages Symposium, October 2007.
[20]
Daniel Ignatoff, Gregory H. Cooper, and Shriram Krishnamurthi. Crossing state lines: Adapting object-oriented frameworks to functional reactive languages. In International Symposium on Functional and Logic Programming, pages 259--276, 2006.
[21]
Christopher Grant Jones, Rose Liu, Leo Meyerovich, Krste Asanovic, and Rastislav Bodik. Parallelizing the web browser. In Proceedings of the First USENIX Workshop on Hot Topics in Parallelism, April 2009.
[22]
Yit Phang Khoo, Michael Hicks, Jeffrey S. Foster, and Vibha Sazawal. Directing JavaScript with Arrows. In ACM SIGPLAN Dynamic Languages Symposium, 2009.
[23]
Daniel R. Licata and Shriram Krishnamurthi. Verifying interactive Web programs. In IEEE International Symposium on Automated Software Engineering, pages 164--173, September 2004.
[24]
Lambert Meertens. Designing constraint maintainers for user interaction, 1998. ftp://ftp.kestrel.edu/pub/papers/meertens/dcm.ps.
[25]
Brad A. Myers. Separating application code from toolkits: Eliminating the spaghetti of call-backs. In ACM Symposium on User Interface Software and Technology, pages 211--220, November 1991.
[26]
Brad A. Myers, Dario A. Giuse, Roger B. Dannenberg, David S. Kosbie, Edward Pervin, Andrew Mickish, Brad Vander Zanden, and Philippe Marchal. Garnet: Comprehensive support for graphical, highly interactive user interfaces. IEEE Computer, 23(11):71--85, 1990.
[27]
Brad A. Myers, Richard G. McDaniel, Robert C. Miller, Alan S. Ferrency, Andrew Faulring, Bruce D. Kyle, Andrew Mickish, Alex Klimovitski, and Patrick Doane. The Amulet environment: New models for effective user interface software development. IEEE Transactions on Software Engineering, 23(6):347--365, 1997.
[28]
Henrik Nilsson, Antony Courtney, and John Peterson. Functional reactive programming, continued. In ACM SIGPLAN Workshop on Haskell, pages 51--64, 2002.
[29]
David A. Patterson. The parallel computing landscape: a Berkeley view. In International Symposium on Low Power Electronics and Design, 2007.
[30]
Manuel Serrano, Erick Gallesio, and Florian Loitsch. Hop: A language for programming the Web 2.0. In ACM SIGPLAN Dynamic Languages Symposium, October 2006.
[31]
David Tarditi, Peter Lee, and Anurag Acharya. No assembly required: compiling Standard ML to C. ACM Letters on Programming Languages and Systems, 1(2):161--177, 1992.
[32]
William Thies, Michal Karczmarek, and Saman Amarasinghe. StreamIt: A language for streaming applications. In International Conference on Compiler Construction, pages 179--196, 2002.
[33]
W. W. Wadge and E. A. Ashcroft. Lucid, the dataflow programming language. Academic Press U.K., 1985.

Cited By

View all
  • (2024)Current Trends of the Soft Development Activity Through the Implementation of Reactive ProgrammingReimagining Capitalism in a Post-Globalization World10.1007/978-3-031-59858-6_32(481-495)Online publication date: 1-Sep-2024
  • (2023)An expressive and modular layer activation mechanism for Context-Oriented ProgrammingInformation and Software Technology10.1016/j.infsof.2022.107132156(107132)Online publication date: Apr-2023
  • (2022)Software-Defined Networking: Categories, Analysis, and Future DirectionsSensors10.3390/s2215555122:15(5551)Online publication date: 25-Jul-2022
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM SIGPLAN Notices
ACM SIGPLAN Notices  Volume 44, Issue 10
OOPSLA '09
October 2009
554 pages
ISSN:0362-1340
EISSN:1558-1160
DOI:10.1145/1639949
Issue’s Table of Contents
  • cover image ACM Conferences
    OOPSLA '09: Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
    October 2009
    590 pages
    ISBN:9781605587660
    DOI:10.1145/1640089
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]

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 25 October 2009
Published in SIGPLAN Volume 44, Issue 10

Check for updates

Author Tags

  1. functional reactive programming
  2. javascript
  3. web programming

Qualifiers

  • Research-article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)19
  • Downloads (Last 6 weeks)3
Reflects downloads up to 22 Dec 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Current Trends of the Soft Development Activity Through the Implementation of Reactive ProgrammingReimagining Capitalism in a Post-Globalization World10.1007/978-3-031-59858-6_32(481-495)Online publication date: 1-Sep-2024
  • (2023)An expressive and modular layer activation mechanism for Context-Oriented ProgrammingInformation and Software Technology10.1016/j.infsof.2022.107132156(107132)Online publication date: Apr-2023
  • (2022)Software-Defined Networking: Categories, Analysis, and Future DirectionsSensors10.3390/s2215555122:15(5551)Online publication date: 25-Jul-2022
  • (2020)A Semantic Framework for the Design of Distributed Reactive Real-Time Languages and ApplicationsIEEE Access10.1109/ACCESS.2020.30106978(143862-143880)Online publication date: 2020
  • (2019)Concurrency control of JavaScript with arrowsProceedings of the 6th ACM SIGPLAN International Workshop on Reactive and Event-Based Languages and Systems10.1145/3358503.3361273(1-10)Online publication date: 21-Oct-2019
  • (2019)FortunettesProceedings of the ACM on Human-Computer Interaction10.1145/33311623:EICS(1-20)Online publication date: 13-Jun-2019
  • (2019)An extensible approach to implicit incremental model analysesSoftware and Systems Modeling (SoSyM)10.1007/s10270-019-00719-y18:5(3151-3187)Online publication date: 1-Oct-2019
  • (2018)AsyncRFJProceedings of the XXII Brazilian Symposium on Programming Languages10.1145/3264637.3264642(35-42)Online publication date: 20-Sep-2018
  • (2018)IdyllProceedings of the 31st Annual ACM Symposium on User Interface Software and Technology10.1145/3242587.3242600(977-989)Online publication date: 11-Oct-2018
  • (2018)Reactive programming experience with REScalaCompanion Proceedings of the 2nd International Conference on the Art, Science, and Engineering of Programming10.1145/3191697.3214337(105-112)Online publication date: 9-Apr-2018
  • 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

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media