Encyclopedia of Big Data Technologies

2019 Edition
| Editors: Sherif Sakr, Albert Y. Zomaya


  • Alexander AlexandrovEmail author
Reference work entry
DOI: https://doi.org/10.1007/978-3-319-77525-8_306



is a statically typed General-purpose Programming Language (GPL) which blends object-oriented and functional programming features. Scala source code compiles to bytecode that runs on the Java Virtual Machine (JVM) and is fully interoperable with code written in Java.


Scala was designed by Martin Odersky at the École polytechnique fédérale de Lausanne (EPFL) in 2001 and first released in 2003 (Odersky 2006). The original design goal was to combine features from object-oriented and functional programming in a programming language that can be used in practice. The following paragraphs summarize the main features of Scala in comparison to Java.

Objects and Classes

Scala distinguishes between classes – which can be instantiated multiple times using the newkeyword (as in Java) – and objects, which can be understood as a singleton instance of an implicitly derived class definition. An object and a class that share the same name are called companions. Methods and...

This is a preview of subscription content, log in to check access.


  1. Ackermann S, Jovanovic V, Rompf T, Odersky M (2012) Jet: an embedded DSL for high performance big data processing. In: International workshop on end-to-end management of Big Data (BigData 2012), EPFL-CONF-181673Google Scholar
  2. Alexandrov A, Bergmann R, Ewen S, Freytag J, Hueske F, Heise A, Kao O, Leich M, Leser U, Markl V, Naumann F, Peters M, Rheinländer A, Sax MJ, Schelter S, Höger M, Tzoumas K, Warneke D (2014) The stratosphere platform for big data analytics. VLDB J 23(6):939–964.  https://doi.org/10.1007/s00778-014-0357-yCrossRefGoogle Scholar
  3. Armbrust M, Xin RS, Lian C, Huai Y, Liu D, Bradley JK, Meng X, Kaftan T, Franklin MJ, Ghodsi A, Zaharia M (2015) Spark SQL: relational data processing in spark. In: Sellis TK, Davidson SB, Ives ZG (eds) Proceedings of the 2015 ACM SIGMOD international conference on management of data, 31 May–4 June 2015. ACM, Melbourne, pp 1383–1394.  https://doi.org/10.1145/2723372.2742797Google Scholar
  4. Boykin PO, Ritchie S, O’Connell I, Lin JJ (2014) Summingbird: a framework for integrating batch and online mapreduce computations. PVLDB 7(13):1441–1451Google Scholar
  5. Burmako E (2013) Scala macros: let our powers combine! On how rich syntax and static types work with metaprogramming. In: Proceedings of the 4th workshop on scala, SCALA@ECOOP, 2 July 2013. ACM, Montpellier, pp 3:1–3:10.  https://doi.org/10.1145/2489837.2489840
  6. Canning PS, Cook WR, Hill WL, Olthoff WG, Mitchell JC (1989) F-bounded polymorphism for object-oriented programming. In: Stoy JE (ed) Proceedings of the fourth international conference on functional programming languages and computer architecture, FPCA, 11–13 Sept 1989. ACM, London, pp 273–280.  https://doi.org/10.1145/99370.99392CrossRefGoogle Scholar
  7. Carbone P, Katsifodimos A, Ewen S, Markl V, Haridi S, Tzoumas K (2015) Apache flink™: stream and batch processing in a single engine. IEEE Data Eng Bull 38(4):28–38Google Scholar
  8. Coppel Y, Odersky M, Dubochet G (2008) Reflecting scala. Semester project report, Laboratory for Programming Methods Ecole Polytechnique Federale de Lausanne, LausanneGoogle Scholar
  9. Gibbons J, Wu N (2014) Folding domain-specific languages: deep and shallow embeddings (functional pearl). In: ICFP. ACM, pp 339–347zbMATHGoogle Scholar
  10. Odersky M (2006) A brief history of scala. Blog Post. http://www.artima.com/scalazine/articles/origins_of_scala.htmlGoogle Scholar
  11. Odersky M, Martres G, Petrashko D (2016) Implementing higher-kinded types in dotty. In: Biboudis A, Jonnalagedda M, Stucki S, Ureche V (eds) Proceedings of the 7th ACM SIGPLAN symposium on scala, SCALA@SPLASH 2016, 30 Oct–4 Nov 2016. ACM, Amsterdam, pp 51–60.  https://doi.org/10.1145/2998392.2998400CrossRefGoogle Scholar
  12. Odersky M, Blanvillain O, Liu F, Biboudis A, Miller H, Stucki S (2018) Simplicitly: foundations and applications of implicit function types. PACMPL 2(POPL):42:1–42:29.  https://doi.org/10.1145/3158130CrossRefGoogle Scholar
  13. Parreaux L, Voizard A, Shaikhha A, Koch CE (2018) Unifying analytic and statically-typed quasiquotes. PACMPL 2(POPL):13:1–13:33.  https://doi.org/10.1145/3158101CrossRefGoogle Scholar
  14. Rompf T, Amin N (2016) Type soundness for dependent object types (DOT). In: Visser E, Smaragdakis Y (eds) Proceedings of the 2016 ACM SIGPLAN international conference on object-oriented programming, systems, languages, and applications, OOPSLA 2016, part of SPLASH 2016, 30 Oct–4 Nov 2016. ACM, Amsterdam, pp 624–641.  https://doi.org/10.1145/2983990.2984008Google Scholar
  15. Rompf T, Odersky M (2010) Lightweight modular staging: a pragmatic approach to runtime code generation and compiled DSLs. In: Visser E, Järvi J (eds) Generative programming and component engineering, proceedings of the ninth international conference on generative programming and component engineering, GPCE 2010, 10–13 Oct 2010. ACM, Eindhoven, pp 127–136.  https://doi.org/10.1145/1868294.1868314Google Scholar
  16. Schelter S, Palumbo A, Quinn S, Marthi S, Musselman A (2016) Samsara: declarative machine learning on distributed dataflow systems. In: NIPS workshop MLSystemsGoogle Scholar
  17. Sujeeth AK, Brown KJ, Lee H, Rompf T, Chafi H, Odersky M, Olukotun K (2014) Delite: a compiler architecture for performance-oriented embedded domain-specific languages. ACM Trans Embedded Comput Syst 13(4s):134:1–134:25.  https://doi.org/10.1145/2584665CrossRefGoogle Scholar
  18. Zaharia M, Chowdhury M, Franklin MJ, Shenker S, Stoica I (2010) Spark: cluster computing with working sets. In: Nahum EM, Xu D (eds) 2nd USENIX workshop on hot topics in cloud computing, HotCloud’10, 22 June 2010. USENIX Association, BostonGoogle Scholar

Copyright information

© Springer Nature Switzerland AG 2019

Authors and Affiliations

  1. 1.Database Systems and Information Management Group (DIMA)Technische Universität BerlinBerlinGermany