Sponsored Link •
Scala is a modern object-oriented programming language that blends imperative and functional programming styles. Scala is designed to integrate easily with applications that run on modern virtual machines, primarily the Java virtual machine (JVM). The main Scala compiler, scalac, generates Java class files that can be run on the JVM. However, another Scala compiler exists that generates binaries that can be run on the .NET CLR, as Scala is designed to integrate with both the Java and .NET worlds. In the Java world, the Scala language can be used alongside the Java language—or as an alternative to Java—to build applications that run on the JVM.
Scala was developed from 2003 by Martin Odersky's group at EPFL,
Lausanne, Switzerland. Previously, Martin had been active in the Java
field. He co-designed the first version of Java generics and was the
original author of the current
javac compiler. The work on Scala was
motivated by the desire to overcome limitations imposed by backwards
compatibility with Java. So Scala is not a superset of Java, but it
retains seamless interoperability.
One reason you might want to use Scala is that it allows you to increase your productivity while leveraging your existing investments in code, knowledge, and the vast array of APIs available for the JVM. It has the conciseness of a dynamic language like Ruby or Python, but it is statically typed, like Java. Another reason is that Scala comes with an Erlang-like Actors library that greatly simplifies concurrent programming.
We launched ScalaZine because we believe that:
Initially, we will focus the articles we publish in ScalaZine towards building a tutorial of the Scala language to teach the basics and details of how to program in Scala. Longer term, we have several goals. One of our larger goals is to help programmers comfortable with imperative-style programming learn about and become effective with functional styles, using Scala as the vehicle. Scala has some innovations in non-functional areas as well, such as new object-oriented approaches, and we want to explain those. But beyond simply describing Scala's various abstractions exist in Scala, we want to explain when to use them and how to combine them.
Scala allows you to easily and naturally combine functional and object-oriented idioms in the same program. Well-designed Scala code chooses the right abstractions and composition principles for the task at hand. But knowing when to use which style, and how to combine them, may not be obvious to programmers whose primary experience is with just one style. One of our goals, therefore, is to provide guidance in that area, and moreover to explore how a fusion of functional and imperative programming can produce new and interesting programming patterns.
Lastly, given the present trend towards multi-core processors, concurrent programming is becoming increasingly important. Scala includes an Actors model for concurrent programming, similar in spirit to the Actors model of Erlang. We believe concurrent programming may be an important use case for Scala, and therefore plan to publish articles showing how Scala can be leveraged for concurrent programming.