Is graal a driver for Java 8 support?

Given the following past announcement - 22.0.0

Java 8 seems like it will be around for a long time but some Java libraries have moved on the 11 and Java 17 seems to be a better runtime than 8 or 11.

Are there advantages to Scala to drop older JVMs?

1 Like

That is an excellent question. Worth mentioning that Oracle is even dropping the support for JDK 11 in the next GraalVM 23 (Add support for JDK19 and retire JDK11 support · Issue #5063 · oracle/graal · GitHub).
The JDK 17 LTS is a reasonable goal now.

While it’s probably a factor, I suspect that graal is far less of a factor than slow-moving enterprises are. There are a fair number of companies that rarely upgrade the JVM (because it is baked into their build and deploy process); they’re probably the biggest consideration.

That said, I have no idea how much of a fraction of the Scala audience they are, or how recently we’ve done a survey of who is on which JVM version. It would be worth knowing more concretely.

1 Like

The recent (about to be published) results of the State of Scala 2022 say that 37% of users are still on JDK 8.


The result though is multiple and if you ignore the 4% “I don’t know” and 1.2% “Other” you get 155% total. If you normalize then you get 24%. I know I answered that I use Java 8 but only because I use it in CI because we support Java 8 - not sure but others could have answered like that too.

Of course 24% is a pretty big chunk and not sure what percentage of that number is in the category of just for testing purposes.

Scala’s ongoing support for Java 8 has something to do with users still using JDK 8, but it also has a lot to do with the lack of any great compelling benefit to the project to drop it. If we felt that dropping 8 would really speed up our development work or would allow us to offer really enticing benefits to users, I think we’d strongly consider it. But for the time being anyway, the question isn’t so much “why not drop 8”, it’s more “why drop 8”.

1 Like

users still using JDK 8, but it also has a lot to do with the lack of any great compelling benefit to the project to drop it.

There’s a good reason. A growing number of Java and Scala libraries that dropped JDK8 already and the minimum is 11. If there’s a vulnerability to fix, a project using old JDK is not able to patch it. All should use at least JDK11 due to security reasons. So, there’s no big motivation IMO to support 8 in Scala if a big amount of libraries in the Scala ecosystem already dropped it.

Btw. I also voted as a user of 8 in the mentioned poll while I’m supporting the idea of moving forward.

1 Like

Being a modern language available on JDK 8 is one of Scala’s strongest selling points. I wouldn’t give up on it so easily.

1 Like

why do you think java 8 doesn’t get security updates? java 8 still gets public updates for free. just not straight from oracle (i.e. the oracle builds are paid). you can get free openjdk 8 updates from other vendors, e.g. - java 8 will be supported “at least until nov 2026” - that’s almost 4 more years from now.

1 Like

I haven’t said anything like that. Please re-read the sentences quoted by you. It might be unclear, so please let me phrase it more precisely.

What I meant, is if a project is stuck in JDK 8, it is not able to get the latest versions of many Java and Scala libraries. Now, imagine there’s a critical vulnerability in one of these libraries.

The number of libraries requiring the minimum JDK at 11 is growing. Also, for bug fixes or new features, one might prefer to use more recent versions of various libraries.

1 Like

ok. now i get it. however, “many” and “growing” are not numbers. i have an impression that requiring jdk 9+ is still rarity among scala libraries. maybe adding minimum supported jvm version to scaladex metadata would clarify things?

is java 8 support holding back scala progress? if yes, how?