ABSTRACT
Tierless programming languages enable developing the typical server, client and database tiers of a web application as a single mono-linguistic program. This development style is in stark contrast to the current practice which requires combining multiple technologies and programming languages. A myriad of tierless programming languages has already been proposed, often featuring a JavaScript-like syntax. Instead of introducing yet another, we advocate that it should be possible to develop tierless web applications in existing general-purpose languages. This not only reduces the complexity that developers are exposed to, but also precludes the need for new development tools. We concretize this novel approach to tierless programming by discussing requirements on its future instantiations. We explore the design space of the program analysis for determining and the program transformation for realizing the tier split respectively. The former corresponds to new adaptations of an old familiar, program slicing, for tier splitting. The latter includes several strategies for handling cross-tier function calls and data accesses. Using a prototype instantiation for JavaScript, we demonstrate the feasibility of our approach on an example web application. We conclude with a discussion of open questions and challenges for future research.
- S. Burckhardt, M. Fähndrich, D. Leijen, and B. P. Wood. Cloud Types for Eventual Consistency. In ECOOP'12, pages 283--307, Berlin, Heidelberg, 2012. Springer-Verlag. ISBN 978-3-642-31056-0. Google ScholarDigital Library
- E. Cooper, S. Lindley, P. Wadler, and J. Yallop. Links: Web programming Without Tiers. In FMCO. Springer-Verlag, 2006. Google ScholarDigital Library
- F. Kereki. Essential GWT: Building for the Web with Google Web Toolkit 2. Addison-Wesley Professional, 1st edition, 2010. ISBN 0321705149, 9780321705143. Google ScholarDigital Library
- D. Leijen. Koka: Programming with Row-Polymorphic Effect Types. Technical report, Microsoft Research, 2013.Google Scholar
- D. Manolescu, B. Beckman, and B. Livshits. Volta: Developing Distributed Applications by Recompiling. IEEE Softw., 25 (5): 53--59, Sept. 2008. ISSN 0740-7459. Google ScholarDigital Library
- J. Maras, J. Carlson, and I. Crnkovic. Client-side web application slicing. In ASE, pages 504--507, 2011. Google ScholarDigital Library
- D. P. Mohapatra, R. Mall, and R. Kumar. A Novel Approach for Dynamic Slicing of Distributed Object-oriented Programs. In ICDCIT'04, pages 304--309, Berlin, Heidelberg, 2004. Springer-Verlag. ISBN 3-540-24075-6, 978-3-540-24075-4. Google ScholarDigital Library
- J. Nicolay, C. Noguera, C. De Roover, and W. De Meuter. Determining Coupling In JavaScript Using Object Type Inference. In SCAM13, 2013.Google ScholarCross Ref
- F. Ricca and P. Tonella. Web application slicing. In Proceedings of the IEEE International Conference on Software Maintenance (ICSM'01), ICSM '01, pages 148--, Washington, DC, USA, 2001. IEEE Computer Society. ISBN 0-7695-1189-9. 10.1109/ICSM.2001.972725. Google ScholarDigital Library
- M. Serrano, E. Gallesio, and F. Loitsch. Hop: a Language for Programming the Web 2.0. In OOPSLA Companion, pages 975--985, 2006.Google ScholarDigital Library
- E. Tilevich and Y. Smaragdakis. J-orchestra: Automatic java application partitioning. In Proceedings of the 16th European Conference on Object-Oriented Programming, ECOOP '02, pages 178--204, London, UK, UK, 2002. Springer-Verlag. ISBN 3-540-43759-2. URL http://dl.acm.org/citation.cfm?id=646159.680022. Google ScholarDigital Library
- N. Tillmann, M. Moskal, J. de Halleux, and M. Fahndrich. Touchdevelop: Programming cloud-connected mobile devices via touchscreen. In Proceedings of the 10th SIGPLAN Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software, ONWARD '11, pages 49--60, New York, NY, USA, 2011. ACM. ISBN 978-1-4503-0941-7. 10.1145/2048237.2048245. URL http://doi.acm.org/10.1145/2048237.2048245. Google ScholarDigital Library
- P. Tonella and F. Ricca. Web application slicing in presence of dynamic code generation. Automated Software Engg., 12 (2): 259--288, Apr. 2005. ISSN 0928-8910. 10.1007/s10515-005-6208-8. Google ScholarDigital Library
- M. Weiser. Program slicing. IEEE Trans. Software Eng., 10 (4): 352--357, 1984. Google ScholarDigital Library
Index Terms
- Towards Tierless Web Development without Tierless Languages
Recommendations
Could Tierless Languages Reduce IoT Development Grief?
Internet of Things (IoT) software is notoriously complex, conventionally comprising multiple tiers. Traditionally an IoT developer must use multiple programming languages and ensure that the components interoperate correctly. A novel alternative is to use ...
Tierless Web Programming in the Large
WWW '18: Companion Proceedings of the The Web Conference 2018Tierless Web programming languages allow combining client-side and server-side programming in a single program. This allows defining expressions with both client and server parts, and at the same time provides good static guarantees regarding client-...
Tiered versus tierless IoT stacks: comparing smart campus software architectures
IoT '20: Proceedings of the 10th International Conference on the Internet of ThingsInternet of Things (IoT) software stacks are notoriously complex, conventionally comprising multiple tiers/components and requiring that the developer not only uses multiple programming languages, but also correctly interoperate the components. A novel ...
Comments