Scala no longer compiles to Java 5 (from 2.10 onwards)
The Scala community continues to be a thriving hub of discussion. Next on the agenda, Java 1.5 and the state of Helium – Scala’s IDE
After last week’s discussion over where Scala was going ahead of Scala 3, their Google Groups message board continues to be a hive of activity – with more major announcements made.
Firstly the state of Helium, the Scala IDE for Eclipse. We, of course, saw a Release Candidate at the end of last week for it and everything seemed to be coming together swimmingly, but we noticed that the team were behind schedule in terms of meeting the stringent deadlines they’d put in place.
Iulian Dragos informed us that there were indeed delays for mid-March’s first milestone and that this was down to ‘keeping the IDE on top of trunk.’ By doing this, the team behind the huge project have ensured stable and smooth IDE support once Scala 2.10 comes out, but in exchange for a reduced amount of features.
But we should take value from the good news that there is indeed a milestone out. Big steps have been made such as including Scala debugger, implicit highlighter and semantic highlighting. The team expects this milestone to be available at the beginning of April, which is great news.
Combined with this, there will be an important bugfix release, 2.0.1, based on the upcoming 2.9.2 Scala release, meaning everyone can upgrade as soon as possible. The team says they are only waiting for the green light from the Scala team.
Speaking of which, there’s interesting change of direction from the main Scala team themselves – Scala 2.10 will no longer by byte code compatible with Java 1.5.
The decision was taken for the following reasons:
- As of October 2009, Java 5 has completed its End of Life period (it is no longer officially supported).
- The limitations of concurrency in Java 1.5 cause a knock-on effect for Scala’s concurrency libraries (Parallel Collections, scala.concurrent, and Actors).
- It greatly complicates the Scala build and test suite.
- Companies with a large, slow-moving, code base that are still running on Java 5 are less likely to move to Scala 2.10.0 in the near future.
This seems pretty logical, with Java 6 being the de-facto choice for most enterprises. But as noted by some commenters, there could be issue for other avenues such as Android development. Martin Kneissel notes that ‘a large fraction of the Android devices in the wild is using Android 2.2 or below (approx 30%)’ and asked the Scala team to consider breaking compatibility in that case.
Whilst Martin may be in the minority, it’s still worth considering. He reiterates that he’s ‘glad that Scala moves forward’ and ‘shouldn’t get stuck the way Java is’ but warned them that not all Android developers were up-to-speed with the multi-core server revolution.
As you can see, Scala is once again thinking about the future way in advance.