Scala is a general-purpose programming language that was designed to improve upon Java by smoothly integrating aspects of the functional and object-oriented paradigms. It's completely interoperable with Java code and runs on the Java Virtual Machine. Scala is a mature language, first appearing in 2003, but has yet to really catch on in mainstream programming, unlike Ruby and Python, both of which also share many aspects of the functional paradigm. However, Scala's popularity is growing faster by day as distributed systems, parallel programming, and web intelligence technologies become more dominate on the web. LinkedIn and Twitter, for example, are two social networking giants whose infrastructure is built in Scala. If you're currently a Java or C++ programmer, you'll find the transition to Scala to be a seamless one. The syntax is intuitive to the point that you can actually concentrate on learning the language and not learning the syntax. If you're new to functional programming, I'd highly recommend trying it out for some time, as it can give you a whole new perspective on writing code in a concise and expressive manner you never thought was possible. It's actually quite addicting!
Scala can be installed on all major platforms including Windows, Mac OS, and Linux. The distribution can be download here. Scala requires JRE 1.5 or later, which can be download here. To install Scala, visit the official Setup and Getting Started page. This tutorial may be more helpful in getting started quickly.
Scala comes with an interactive REPL (Read-Evaluate-Print-Loop) shell and a script compiler. I recommend using these if you're new to Scala. There are several IDEs that support Scala development including Scala IDE (Eclipse), IntelliJ IDEA, and Netbeans. All plugins support most of what's to be expected from a state-of-the-art IDE such as code completion, syntax highlighting, build and debug tools, formatting, and much more. In addition, Scala IDE comes pre-installed with a really neat feature called a Worksheet, that evaluates your code as you type.
If IDEs aren't your cup of tea, there are numerous text editors with Scala plugins that can be found here. Most popular editors including Emacs, Vim, Notepad++, Scite, Xcode, and gedit have plugins available. And if you just want to test drive the language or you don't feel like firing up your development environment, there's Simply Scala, an on-line REPL, and Ideone.
The Scala API docs are your numero uno source of information regarding Scala library usage. It's a searchable index of the entire class hierarchy that contains all class and method documentation. There's even a full set of official tutorials for learning Scala! The reference manuals, including the full language specification, and programming guides can be found here.
The creator of Scala, Professor Martin Odersky, teaches his Scala course, Functional Programming Principles in Scala, on the Coursera educational platform. Its prerequisite is proficiency in at least one object-oriented language. It's a very good course that teaches the concepts of the functional paradigm, using Scala as a vehicle to do so. By popular request, Professor Odersky will be offering a 2nd segment sometime next year, which covers Scala more in depth.
There are 2 free e-books available for learning Scala: Scala for the Impatient by Cay Horstmann, and Scala by Example (direct PDF link) by Martin Odersky. Professor Odersky has also released his 2nd edition of Programming in Scala, which is available through Amazon. See this for more books on Scala.
The Implementation of Functional Programming languages is another good book to check out if you want to learn the inner workings of functional programming. It's a bit dated but it's free.
As mentioned, Scala is interoperable with existing Java libraries, so you're free to use Swing to develop GUIs. In addition, Scala has wrapped Java's Swing libraries in its own Scala-swing library, which still maintains that natural Scala feel. A quick overview of GUI development using Scala-swing can be found here (direct PDF link).
If you're interested in Web Development, Lift is a highly-scalable, open-source web framework for the Scala language. You can learn more here.
Tutorials and Exercises
Scala Quick Reference
Scala Youtube Tutorials: A comprehensive playlist of video tutorials on basic and intermediate Scala topics.
This post has been edited by blackcompe: 18 January 2013 - 06:36 AM