Channels ▼

JVM Languages

Scala 2.10 Programming Language Arrives

This week sees the release of version 2.10 of the Scala programming language. Key new elements and improvements in this iteration include a mature programming model for async as well as reduction of boilerplate work through macros and dynamic types.

Scala finds itself at the intersection of "once-again-trendy" functional programming and proven object-oriented programming. It is also part of the increasingly popular movement to languages other than Java on the JVM.

Its developers now "anticipate and expect" Scala to make some serious inroads into the enterprise space as well as give Groovy/Grails a run for their money.

This release tackles "developer challenges" ranging from the syntactic nicety of String Interpolation, to expressing massive asynchronous computations in sequential code style.

The Play Framework harnesses Scala 2.10's new asynchronous programming model to compose services. The development team reports that library developers are using Scala 2.10's experimental Macros and Reflection features to further reduce complexity in applications. Even String Interpolation is now extensible by library developers in Scala 2.10.

According to the Scala program team, "Often times a developer needs to compose strings of text by substituting values for place holders. Scala 2.10 adds a new String Interpolation library that works with the power of compile-time type checking in Scala."

The Scala team at EPFL and the Akka team collaborated on a new API, which standardizes the API for asynchronous programming using the Future and Promise paradigms. With input from many developers building massively asynchronous systems, the result is said to be a very convenient API for expressing powerful asynchronous computations.

According to Adriaan Moors (Scala tech lead at Typesafe), "Developers who are building complex integration apps with Play and Akka are raving about the new Scala 2.10 Future API because it allows them to fire off hundreds of HTTP calls, then compose the results and render a web page. Composing numerous asynchronous calls in Scala 2.10 using a for-comprehension provides a concise programming model that feels natural but also manages resources efficiently and deals with errors gracefully."

Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.