What is scala ?
Scala is a relativ new compiled programming language that takes a lot of ideas from python, ruby and others. From the scala homepage:
Scala is a general purpose programming language designed to express common programming patterns in a concise, elegant, and type-safe way. It smoothly integrates features of object-oriented and functional languages, enabling Java and other programmers to be more productive. Code sizes are typically reduced by a factor of two to three when compared to an equivalent Java application.
Why do we need another programming language ?
I mean, there are a wealth of different languages that created quite a buzz recently like ruby, python, c#. Why do you need scala ? For one, scala is a compliled language unlike ruby and python. The scala compliler generates java-bytecode that is compatible with the java jre.
This looks like a small feature but it is really one of the most interesting features of scala:
Seamles Integration in java
You can directly use java objects in scala and vice versa. Scala directly compiles to java .class files. You can deploy scala applications to your J2EE container. Which means if you are a java shop you can use your existing tools and servers to deploy scala applications. No need for a new application server, JBoss, websphere and others will work fine.
This is a very important point for larger companies. Changes in these companies can only happen graduately, so you can keep your existing knowledge and workers. The server administrators still only need to maintain the same application server they’ve been knowing for years. You even can continue to use your own libraries you’ve developed in java over the years. These points are very important if you want to make a successfull migration towards scala.
Why use Scala over Java ?
If scala is fully compatible with java, why use it ? Why learn a new language when the old one seems good enough ?
- Scala corrects many of javas mistakes
- Everything is an Object in scala
- Type inference -> only need to declare the type on the right side of the assignment (i.e. var dummy= Map[String,Int]() )
- True Mixins
- Scala is both, a object oriented and a functional programming language
- Fresh start
- Clean Language, nothing feels like an addon (like generics for example)
- much more compact, like no need for getters and setters
- No semicolons
Hello World in scala
Enough of the theory. How does a typical scala program look like ?
object HelloWorld { def main(args: Array[String]) { println("Hello, world!") } }