Scala (Scalable Language)

Contributor(s): Jack Vaughan

Scala (Scalable Language) is a software programming language that mixes object-oriented methods with functional programming capabilities that support a more concise style of programming than other general-purpose languages like Java, reducing the amount of code developers have to write. Another benefit of the combined object-functional approach is that features that work well in small programs tend to scale up efficiently when run in larger environments.

First released publicly in 2004, Scala also incorporates some imperative, statement-oriented programming capabilities. In addition, it supports static typing, in which computations are formed as statements that change program state at compile time, an approach that can provide improved runtime efficiencies. It is typically implemented on a Java virtual machine (JVM), which opens up the language for mixed use with Java objects, classes and methods, as well as JVM runtime optimizations.

Scala also includes its own interpreter, which can be used to execute instructions directly, without previous compiling. Another key feature in Scala is a "parallel collections" library designed to help developers address parallel programming problems. Pattern matching is among the application areas in which such parallel capabilities have proved to be especially useful.

Scala was originally written by Martin Odersky, a professor at the Ecole Polytechnique Federale de Lausanne, in Switzerland. His previous work included creation of the Funnel language, which shared some traits with Scala but didn't employ JVMs as an execution engine. Odersky began work on Scala in 2001 and continues to play a lead role in its development; he also co-founded Scala development tools maker Typesafe Inc. in 2011 and is the San Francisco company's chairman and chief architect.

Updates to the Java language have added functional programming traits somewhat akin to Scala's. One prominent Scala user, LinkedIn Corp., indicated in early 2015 that it planned to reduce its reliance on the language and focus more on Java 8 and other languages. But Scala continues to be one of the major tools for building software infrastructure at a number of other high-profile companies, including Twitter Inc. and local-search app developer Foursquare Labs Inc.

Apache Spark, an open source data processing engine for batch processing, machine learning, data streaming and other types of analytics applications, is very significant example of Scala usage. Spark is written in Scala, and the language is central to its support for distributed data sets that are handled as collective software objects to help boost resiliency. However, Spark applications can be programmed in Java and the Python language in addition to Scala.

This was last updated in May 2015

Continue Reading About Scala (Scalable Language)

Dig Deeper on Predictive analytics

Join the conversation


Send me notifications when other members comment.

Please create a username to comment.

What factors drive you to learn a new programming language?
If I am learning primarily for professional reasons, I am driven to learn a language if the companies and projects I want to work with are using the language. When it comes to personal projects, I am more driven by the ease of learning the language and availability of affordable resources to teach me.
Primarily, I look to see what the languages our company is using and that I am not familiar with, but also to se what languages I would like to learn even if I wasn't working with the current technology stack my company is using. 
Sometimes I want to learn a new language, because it has something that I can't do in a language I already know.  Maybe I'm learning it because it allows me to play in a different eco system.  But let's not forget the best reason.  Sometimes learning a new language is fun, and may teach you things about programming that a simple text may not present.
I've taken three or four cracks at ruby and this crack seems to finally be sticking. The big thing for me is the compelling power of new development - ruby felt, to me, like an incremental improvement over perl until I really started to build things in an OO way.

Another motivator is the way the world is going. I think the explosion of javascript frameworks makes responsive-design front-end work a "new language", especially compared to the HTML4 web. The world is going so developing an old website makes you look like geocities -- so it's time to get on the bus and learn some new tech, I think. (The same ideas applied, at some point, for CSS)