Skip to main content

Links: Web Programming Without Tiers

  • Conference paper

Part of the Lecture Notes in Computer Science book series (LNPSE,volume 4709)

Abstract

Links is a programming language for web applications that generates code for all three tiers of a web application from a single source, compiling into JavaScript to run on the client and into SQL to run on the database. Links supports rich clients running in what has been dubbed ‘Ajax’ style, and supports concurrent processes with statically-typed message passing. Links is scalable in the sense that session state is preserved in the client rather than the server, in contrast to other approaches such as Java Servlets or PLT Scheme. Client-side concurrency in JavaScript and transfer of computation between client and server are both supported by translation into continuation-passing style.

Keywords

  • Regular Expression
  • Message Passing
  • Input Element
  • Event Handler
  • Session State

These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

This is a preview of subscription content, access via your institution.

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • DOI: 10.1007/978-3-540-74792-5_12
  • Chapter length: 31 pages
  • Instant PDF download
  • Readable on all devices
  • Own it forever
  • Exclusive offer for individuals only
  • Tax calculation will be finalised during checkout
eBook
USD   74.99
Price excludes VAT (USA)
  • ISBN: 978-3-540-74792-5
  • Instant PDF download
  • Readable on all devices
  • Own it forever
  • Exclusive offer for individuals only
  • Tax calculation will be finalised during checkout
Softcover Book
USD   99.00
Price excludes VAT (USA)

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Atkins, D.L., Ball, T., Bruns, G., Cox, K.C.: Mawl: A domain-specific language for form-based services. Software Engineering 25(3), 334–346 (1999)

    CrossRef  Google Scholar 

  2. Armstrong, J.: Concurrency oriented programming in Erlang. Invited talk, FFG (2003)

    Google Scholar 

  3. Balat, V.: Ocsigen: typing web interaction with objective Caml. In: Proceedings of the 2006 workshop on ML, Portland, Oregon (September 2006)

    Google Scholar 

  4. Benton, N., Cardelli, L., Fournet, C.: Modern concurrency abstractions for C\(\sharp\). TOPLAS 26(5) (2004)

    Google Scholar 

  5. Benton, N., Kennedy, A., Russo, C.: Adventures in interoperability: the SML .NET experience. PPDP (2004)

    Google Scholar 

  6. Bierman, G., Meijer, E., Schulte, W.: Programming with rectangles, triangles, and circles. In: XML Conference (2003)

    Google Scholar 

  7. Buneman, P., Naqvi, S., Tannen, V., Wong, L.: Principles of programming with complex objects and collection types. TCS 149(1) (1995)

    Google Scholar 

  8. Burstall, R., MacQueen, D., Sannella, D.: Hope: An experimental applicative language. In: Lisp Conference (1980)

    Google Scholar 

  9. El-Ansary, S., Grolaux, D., Van Roy, P., Rafea, M.: Overcoming the multiplicity of languages and technologies for web-based development. In: Van Roy, P. (ed.) MOZ 2004. LNCS, vol. 3389, Springer, Heidelberg (2005)

    Google Scholar 

  10. Fournet, C., Gonthier, G.: The Join Calculus: a language for distributed mobile programming. In: Barthe, G., Dybjer, P., Pinto, L., Saraiva, J. (eds.) APPSEM 2000. LNCS, vol. 2395, Springer, Heidelberg (2002)

    CrossRef  Google Scholar 

  11. Garret, J.: Ajax: a new approach to web applications (2005)

    Google Scholar 

  12. Graham, P.: Method for client-server communications through a minimal interface. United States Patent no. 6,205,469 (March 20, 2001)

    Google Scholar 

  13. Graham, P.: Beating the averages (2001)

    Google Scholar 

  14. Graunke, P., Findler, R.B., Krishnamurthi, S., Felleisen, M.: Automatically restructuring programs for the web. ASE (2001)

    Google Scholar 

  15. Graunke, P., Krishnamurthi, S., van der Hoeven, S., Felleisen, M.: Programming the web with high-level programming languages. In: Sands, D. (ed.) ESOP 2001 and ETAPS 2001. LNCS, vol. 2028, Springer, Heidelberg (2001)

    Google Scholar 

  16. Gapeyev, V., Levin, M., Pierce, B., Schmitt, A.: The Xtatic experience. PLAN-X (2005)

    Google Scholar 

  17. labs.google.com/suggest

  18. Microsoft Corporation. DLinq: .NET Language Integrated Query for Relational Data (September 2005)

    Google Scholar 

  19. Møller, A., Schwartzbach, M.: The design space of type checkers for XML transformation languages. In: Eiter, T., Libkin, L. (eds.) ICDT 2005. LNCS, vol. 3363, Springer, Heidelberg (2004)

    Google Scholar 

  20. Niehren, J., Schwinghammer, J., Smolka, G.: A Concurrent Lambda Calculus with Futures. TCS, 364(3) (2006)

    Google Scholar 

  21. Narra, G.: ObjectGraph Dictionary, http://www.objectgraph.com/dictionary/how.html

  22. Odersky, M., et al.: An overview of the Scala programming language. Technical report, EPFL Lausanne (2004)

    Google Scholar 

  23. Plasmeijer, R., Achten, P.: iData For The World Wide Web: Programming Interconnected Web Forms. In: Hagiya, M., Wadler, P. (eds.) FLOPS 2006. LNCS, vol. 3945, Springer, Heidelberg (2006)

    CrossRef  Google Scholar 

  24. Pottier, F., Rémy, D.: The essence of ML type inference. In: Pierce, B. (ed.) Advanced Topics in Types and Programming Languages, ch. 10, pp. 389–489. MIT Press, Cambridge (2005)

    Google Scholar 

  25. Queinnec, C.: Continuations to program web servers. ICFP (2000)

    Google Scholar 

  26. Queinnec, C.: Inverting back the inversion of control or, continuations versus page-centric programming, SIGPLAN Not (2003)

    Google Scholar 

  27. Reynolds, J.: Definitional interpreters for higher-order programming languages. In: ACM ’72: Proceedings of the ACM annual conference (1972)

    Google Scholar 

  28. Ruby on Rails, http://www.rubyonrails.org/

  29. Serrano, M., Gallesio, E., Loitsch, F.: HOP, a language for programming the Web 2.0. In: Proceedings of the First Dynamic Languages Symposium, Portland, Oregon (October 2006)

    Google Scholar 

  30. Syme, D.: F\(\sharp\)web page, research.microsoft.com/projects/ilx/fsharp.aspx

  31. Thiemann, P.: WASH/CGI: server-side web scripting with sessions and typed, compositional forms. In: Krishnamurthi, S., Ramakrishnan, C.R. (eds.) PADL 2002. LNCS, vol. 2257, Springer, Heidelberg (2002)

    CrossRef  Google Scholar 

  32. Trevor, J., Swamy, N., Hicks, M.: Defeating Script Injection Attacks with Browser-Enforced Embedded Policies. World Wide Web (May 2007)

    Google Scholar 

  33. Van Roy, P.: Convergence in language design: a case of lightning striking four times in the same place. In: Hagiya, M., Wadler, P. (eds.) FLOPS 2006. LNCS, vol. 3945, Springer, Heidelberg (2006)

    CrossRef  Google Scholar 

  34. Wan, Z., Hudak, P.: Functional reactive programming from first principles. In: PLDI ’00: Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation, Vancouver, British Columbia, Canada (2000)

    Google Scholar 

  35. Wiederman, B., Cook, W.: Extracting queries by static analysis of transparent persistence. POPL (2007)

    Google Scholar 

  36. Wong, L.: Kleisli, a functional query system. JFP, 10(1) (2000)

    Google Scholar 

  37. XML Query and XSL Working Groups. XQuery 1.0: An XML Query Language, W3C Working Draft (2005)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and Permissions

Copyright information

© 2007 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Cooper, E., Lindley, S., Wadler, P., Yallop, J. (2007). Links: Web Programming Without Tiers. In: de Boer, F.S., Bonsangue, M.M., Graf, S., de Roever, WP. (eds) Formal Methods for Components and Objects. FMCO 2006. Lecture Notes in Computer Science, vol 4709. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-74792-5_12

Download citation

  • DOI: https://doi.org/10.1007/978-3-540-74792-5_12

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-74791-8

  • Online ISBN: 978-3-540-74792-5

  • eBook Packages: Computer ScienceComputer Science (R0)