DOI

In the state-of-practice, developing web applications requires dealing with multiple programming languages or codebases. To address this issue, researchers have proposed multi-tier languages such as Hop or Links that support client and server development in a single language and in one codebase. Even if such multi-tier languages are often strongly based on an existing language - for instance Hop is based on Scheme - they are new languages, and require a new compiler. The objective of this paper is to define a multi-tier language as a library-based Scala DSL. Scala already supports compilation to both the Java VM and to JavaScript. The multi-tier language we propose in this paper, Scalagna, combines the existing Scala JVM and JavaScript ecosystems into a single programming model without requiring changes to, or rewrites of the existing Scala compilers. We discuss how this is possible using Scala's excellent support for definining DSLs, and the experimental Scala macro system. We show that Scalagna has reasonable performance, and by porting an existing Eliom application, we provide evidence that Scalagna is as expressive as other established and existing multi-tier languages.

Original languageEnglish
Title of host publicationProgramming 2018 Companion - Conference Companion of the 2nd International Conference on Art, Science, and Engineering of Programming
PublisherAssociation for Computing Machinery (ACM)
Pages69-74
Number of pages6
VolumePart F137691
ISBN (Print)9781450355131
DOIs
Publication statusPublished - 9 Apr 2018
Event2nd International Conference on Art, Science, and Engineering of Programming, Programming 2018 - Nice, France
Duration: 9 Apr 201812 Apr 2018

Publication series

NameConference Companion of the 2Nd International Conference on Art, Science, and Engineering of Programming

Conference

Conference2nd International Conference on Art, Science, and Engineering of Programming, Programming 2018
CountryFrance
CityNice
Period9/04/1812/04/18

    Research areas

  • Multi-tier, Scala, Web programming

ID: 39983917