You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Scala's primary platform is the Java Virtual Machine (JVM). (Other supported platforms: [Scala.js](https://www.scala-js.org/), [Scala Native](https://scala-native.org/).)
7
+
Scala's primary platform is the Java Virtual Machine (JVM). Other supported platforms are [Scala.js](https://www.scala-js.org/) and [Scala Native](https://scala-native.org/).
8
8
9
9
Sometimes new JVM and JDK (Java Development Kit) versions require us to update Scala to remain compatible.
10
10
11
-
## Scala compatibility table
11
+
## Scala 3 compatibility
12
12
13
-
Minimum Scala versions:
13
+
Scala 3 versions from 3.3 LTS through Scala 3.7 support JDK 8 and above.
@@ -50,11 +75,11 @@ Using a different build tool, such as Gradle or Maven? We invite pull requests a
50
75
51
76
## Running versus compiling
52
77
53
-
JDK 8, 11, 17, 21, and 25 are all reasonable choices both for *compiling* and *running* Scala code.
78
+
JDK 17, 21, and 25 are all good choices both for *compiling* and *running* Scala code.
54
79
55
-
Since the JVM is normally backwards compatible, it is usually safe to use a newer JVM for *running* your code than the one it was compiled on, especially if you are not using JVM features designated "experimental" or "unsafe".
80
+
JDK 8 and 11 are also possible choices. As of 2025, these versions remain in use at some shops, but usage has declined greatly and many projects are dropping support. If you compile on JDK 17+ but want to allow your users to stay on 8, use `--release 8` to avoid using APIs and features that don't exist in 8. Another option is to use a newer JDK for your daily work but do release builds on JDK 8.
56
81
57
-
JDK 8 remains in use at some shops (as of 2023), but usage is declining and some projects are dropping support. If you compile on JDK 11+ but want to allow your users to stay on 8, additional care is needed to avoid using APIs and features that don't exist in 8. (For this reason, some Scala developers use a newer JDK for their daily work but do release builds on JDK 8.)
82
+
Since the JVM is normally backwards compatible, it is usually safe to use a newer JVM for *running* your code than the one it was compiled on, especially if you are not using JVM features designated "experimental" or "unsafe".
58
83
59
84
As per [this blog post](https://www.scala-lang.org/news/next-scala-lts-jdk.html), Scala 3.8 will have a new minimum JDK version of 17.
60
85
@@ -74,15 +99,13 @@ In almost every case, you're free to use the JDK and JVM of your choice.
74
99
75
100
JDK 8 users typically use the Oracle JDK or some flavor of OpenJDK.
76
101
77
-
Most JDK 11+ users are using OpenJDK, or GraalVM which runs in the context of OpenJDK. GraalVM performs well on the Scala benchmarks, and it benefits from GraalVM runtime and runs faster too.
78
-
79
102
OpenJDK comes in various flavors, offered by different providers. We typically build and test Scala using [Temurin](https://adoptium.net) or [Zulu](https://www.azul.com/downloads/), but the differences are unlikely to matter to most users.
80
103
81
104
## JDK 11 compatibility notes
82
105
83
106
The Scala test suite and Scala community build are green on JDK 11.
84
107
85
-
In general, Scala works on JDK 11+, including GraalVM, but may not take special advantage of features that were added after JDK 8.
108
+
In general, Scala works on JDK 11+, but may not take special advantage of features that were added after JDK 8.
86
109
87
110
For example, the Scala compiler does not enforce the restrictions of the Java Platform Module System, which means that code that typechecks may incur linkage errors at runtime. Scala 2.13.x will eventually provide [rudimentary support](https://github.com/scala/scala/pull/7218) for this (perhaps only in nightlies built on JDK 11).
88
111
@@ -132,8 +155,6 @@ For information on timing of the forthcoming release, see:
<!-- TODO For sbt users, sbt 1.9.0 is the first version to support JDK 21.-->
136
-
137
158
For possible Scala 3 issues, see the [area:jdk](https://github.com/scala/scala3/labels/area%3Ajdk) and [compat:java](https://github.com/scala/scala3/labels/compat%3Ajava) labels in [the Scala 3 issue tracker](https://github.com/scala/scala3/issues).
138
159
139
160
For possible Scala 2 issues, see the [jdk11](https://github.com/scala/bug/labels/jdk11), [jdk17](https://github.com/scala/bug/labels/jdk17), [jdk21](https://github.com/scala/bug/labels/jdk21), and [jdk25](https://github.com/scala/bug/labels/jdk25) labels in [the Scala 2 bug tracker](https://github.com/scala/bug/issues).
@@ -147,10 +168,3 @@ A few sbt plugins are offering support for GraalVM Native Image compilation:
0 commit comments