Definitions
Scala
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.
Overview
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...
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
References
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-181673
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-y
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.2742797
Boykin PO, Ritchie S, O’Connell I, Lin JJ (2014) Summingbird: a framework for integrating batch and online mapreduce computations. PVLDB 7(13):1441–1451
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
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.99392
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–38
Coppel Y, Odersky M, Dubochet G (2008) Reflecting scala. Semester project report, Laboratory for Programming Methods Ecole Polytechnique Federale de Lausanne, Lausanne
Gibbons J, Wu N (2014) Folding domain-specific languages: deep and shallow embeddings (functional pearl). In: ICFP. ACM, pp 339–347
Odersky M (2006) A brief history of scala. Blog Post. http://www.artima.com/scalazine/articles/origins_of_scala.html
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.2998400
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/3158130
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/3158101
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.2984008
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.1868314
Schelter S, Palumbo A, Quinn S, Marthi S, Musselman A (2016) Samsara: declarative machine learning on distributed dataflow systems. In: NIPS workshop MLSystems
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/2584665
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, Boston
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2019 Springer Nature Switzerland AG
About this entry
Cite this entry
Alexandrov, A. (2019). Scala. In: Sakr, S., Zomaya, A.Y. (eds) Encyclopedia of Big Data Technologies. Springer, Cham. https://doi.org/10.1007/978-3-319-77525-8_306
Download citation
DOI: https://doi.org/10.1007/978-3-319-77525-8_306
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-77524-1
Online ISBN: 978-3-319-77525-8
eBook Packages: Computer ScienceReference Module Computer Science and Engineering