In some ways, Scala is the functional improvement over Java that Swift is to Objective-C.
- Based on functional concepts, when the previous language was primarily OO.
- Updated, modern, compact syntax.
- Strongly typed, but with type inference, so complex type declarations can be omitted.
- Compiler much slower, since it is doing more.
- Strong interop with legacy code.
In other ways, though, Java to Scala is more like the transition from C to Objective-C:
- Standard types taken from previous language.
- Runtime taken from previous language.
- Compromises made in language design to accommodate previous language’s content.
Both Objective-C and Scala were languages invented outside the nurturing environment of a flagship corporation. They couldn’t reinvent the wheel. They didn’t have the resources. (Same could be said for C++.) So they had to find a “host”.
Java and Swift, on the other hand, had serious money behind them, and could do everything from scratch if they wanted. They could think big.
I believe you need both to make progress.
Apple is taking dramatic steps now. But they will eventually finish all the large-scale, cutting-edge elements they’re willing to sponsor for their business, and the pace of change will slow.
And then, once again, we’ll have to look outside of Apple for language innovation.