From Java to Java.Next – Quick Review of Scala

To start this quick review about Scala as Java.Next, let us see an interesting perceptive observation from Martin Fowler about Java and its legacy as follows.

“The legacy of Java will be the platform, not the language”

This statement is interested since more than 200 languages run on Java Virtual Machine (JVM) nowadays [1]. This condition emerges since Oracle hosted the annual JVM Language Summit in 2008, which has given implementers of alternative languages on the JVM an opportunity to collaborate openly with Java platform engineers. For example, let us consider Clojure, Groovy, Scala, and the new one, Kotlin. Each language brings interesting new capabilities beyond of Java language itself. In general, two initial significant advantages that these languages tend to provide are reducing the amount of verbosity in code. Hence it allows us to focus on the essence of problem solving. The second advantage is enabling some degree of functional programming styles [2]. This short review will be limited to Scala as an alternative programming language of Java.

As introduced in their official website [3], Scala is an elegant and concise programming language that integrates both functional and object-oriented paradigms smoothly. This enabling programmers to be more productive while retaining full interoperability with Java and taking advantage of modern multicore hardware. It is statically typed and well found with an expressive type system, which supports: generic classes, variance annotations, upper and lower type bounds, inner classes and abstract types as object members, compound types, explicitly typed self references, views, and polymorphic methods.
Continue reading “From Java to Java.Next – Quick Review of Scala”