Scala runs on the JVM and its classes are ultimately JVM classes. Hence, you can easily create Java objects, call their methods, inherit from Java classes from Scala or reference Scala classes and objects from Java code.
You can fully take advantage of Scala compiler’s ability to determine your variable types thanks to its powerful type inference that will automatically figure them out. You can also use data parallel operations on your collections, use actors for distribution and concurrency or futures for asynchronous programming.
Thanks to Scala you can couple the power of classes with the Java-style interfaces’ flexibility and combine multiple traits into a single class in order to mix their behavior with their interface. Scala is very similar to a scripting language and its syntax is concise and low ceremony.
Scala supports advanced component architectures over traits and classes, and every value is an object while every operation is a method-call. On top of that, you can add various operations to exiting classes, regardless of their source, Scala or Java.
Scala also comes with first-class functions, a general preferences of immutability over mutation and a library with efficient immutable data structures. What is more, you can progressively move towards a more functional style. Thus, you can gradually remove mutable state from your apps and phase into safe functional composition patterns.
Reviewed by George Popescu, last updated on July 27th, 2014
In a hurry? Add it to your Download Basket!
- Several issues in the collections library were resolved, most notably equality on ranges (SI-8738).
- The optimizer no longer eliminates division instructions that may throw an ArithmeticException (SI-7607).
- The -Xlint compiler flag is now parameterized by individual warnings. This is intended to replace the -Ywarn-... options, for instance, -Xlint:nullary-unit is equivalent to -Ywarn-nullary-unit. Run scalac -Xlint:help to see all available options. Kudos to @som-snytt!
Application descriptionScala is a programming language designed for general purpose programming capable of expressing patterns in a concise, ...