Skip to content

Latest commit

 

History

History
642 lines (535 loc) · 44.4 KB

OPENJDK.md

File metadata and controls

642 lines (535 loc) · 44.4 KB

OpenJDK and Scala 3 on Windows

OpenJDK is an open-source project initiated by Oracle in 2010. Java 8 is the first LTS version of Java to be released both as a commercial product (Oracle Java SE 8 ) and as an open-source product (Temurin OpenJDK 8) 1.
In the following we focus on OpenJDK 11 and OpenJDK 17, the current LTS version of Java.

This document is part of a series of topics related to Scala 3 on Windows:

Ada, Akka, C++, Deno, Flix, Golang, GraalVM, Haskell, Kotlin, LLVM, Node.js, Rust, Spark, Spring, TruffleSqueak and WiX Toolset are other trending topics we are currently monitoring.

Project dependencies

This project depends on several external software for the Microsoft Windows platform:

The above implementations of OpenJDK differ in several ways:

  • they are tested and certified for JCK 2 compliance excepted for Trava OpenJDK.
  • they include different backports of fixes from OpenJDK 12 or newer (eg. Corretto).
  • they include additional modules (eg. Device IO API on Linux ARMv7) or integrate special tools (eg. HotswapAgent in Trava).
  • they support different sets of platform architectures (eg. SapMachine x64 only, BellSoft also Raspberry Pi 2 & 3).

Installation policy
When possible we install software from a a Zip archive rather than via a Windows installer. In our case we defined C:\opt\ as the installation directory for optional software tools (in reference to the /opt/ directory on Unix).

For instance our development environment looks as follows (November 2023) 3:

C:\opt\jdk-bellsoft-11.0.21\              (303 MB)
C:\opt\jdk-bellsoft-17.0.9\               (310 MB)
C:\opt\jdk-bellsoft-21.0.1\               (262 MB)
C:\opt\jdk-bellsoft-nik-java11-22.0.0.2\  (596 MB)
C:\opt\jdk-bellsoft-nik-java17-22.0.0.2\  (657 MB)
C:\opt\jdk-corretto-11.0.20_9\            (293 MB)
C:\opt\jdk-corretto-17.0.9_8\             (299 MB)
C:\opt\jdk-dcevm-11.0.15_1\               (313 MB)
C:\opt\jdk-dragonwell-11.0.20.17_8\       (290 MB)
C:\opt\jdk-dragonwell-17.0.7.0.7_7\       (299 MB)
C:\opt\jdk-graalvm-ce-17.0.8_7.1\         (591 MB)
C:\opt\jdk-graalvm-ce-20.0.2_9.1\         (624 MB)
C:\opt\jdk-graalvm-ce-21-dev_30.1\        (632 MB)
C:\opt\jdk-microsoft-11.0.20_8\           (292 MB)
C:\opt\jdk-microsoft-17.0.9_8\            (300 MB)
C:\opt\jdk-microsoft-21.0.1_12\           (325 MB)
C:\opt\jdk-openj9-11.0.20.1_1\            (326 MB)
C:\opt\jdk-openj9-17.0.8.1_1\             (334 MB)
C:\opt\jdk-redhat-11.0.20.8-1\            (364 MB)
C:\opt\jdk-redhat-17.0.8.0.7-1\           (377 MB)
C:\opt\jdk-sapmachine-11.0.21\            (316 MB)
C:\opt\jdk-sapmachine-17.0.9\             (325 MB)
C:\opt\jdk-sapmachine-21.0.1\             (353 MB)
C:\opt\jdk-temurin-11.0.21_9\             (300 MB)
C:\opt\jdk-temurin-17.0.9_9\              (299 MB)
C:\opt\jdk-temurin-21.0.1_12\             (326 MB)
C:\opt\jdk-zulu-11.0.19-win_x64\          (302 MB)
C:\opt\jdk-zulu-17.0.8-win_x64\           (306 MB)

Scala 3 build times

We perform a quick comparison of the execution times to build the Scala 3 software distribution available as the following two archive files :

dist\target\scala3-3.3.1-RC1-bin-SNAPSHOT.tar.gz
dist\target\scala3-3.3.1-RC1-bin-SNAPSHOT.zip

🔎 Scala nightly builds are published on Maven as individual Java archive files, e.g.

We ideally would run the command build archives to generate the above files (presuming all tests were successful).

Unfortunately a few tests still fail on Windows, so need to proceed in two steps, running the command build boot & build arch-only, in order to achieve our goal.

Let's compare the build times for Java 8, Java 11 and Java 17 on a Win10 laptop with an i7-8550U (1.8 GHz) processor and 16 Go of memory 4 (entries come from the log file snapshot_log.txt):

8u345 Build time 11.0.16 Build time 17.0.4 Build time
Corretto
(Amazon)
27:00
27:27
Corretto
(Amazon)
30:49
30:42
Corretto
(Amazon)
n.a.
DCEVM
(Trava)
n.a. DCEVM
(Trava) a)
31:10
30:28
DCEVM
(Trava)
n.a.
Dragonwell
(Alibaba)
31:54
32:01
Dragonwell
(Alibaba)
30:41
30:44
Dragonwell
(Alibaba)
n.a.
GraalVM
(Oracle)
26:09
26:11
GraalVM
(Oracle)
31:34
33:11
GraalVM
(Oracle)
33:30
 
Liberica
(BellSoft)
25:10
25:41
Liberica
(BellSoft)
31:04
30:33
Liberica
(BellSoft)
29:38
31:17
Liberica NIK
(BellSoft)
n.a. Liberica NIK
(BellSoft) b)
31:29 Liberica NIK
(BellSoft)
todo
Microsoft n.a. Microsoft 30:16
30:37
Microsoft 29:41
31:52
OpenJ9
(IBM)
33:30
33:47
OpenJ9
(IBM)
39:04
39:17
OpenJ9
(IBM)
todo
RedHat 26:01
26:09
RedHat 30:16
30:51
RedHat c) todo
SapMachine
(SAP)
n.a. SapMachine
(SAP)
31:33
30:52
SapMachine
(SAP)
28:43
28:27
Temurin
(Eclipse)
25:46
25:47
Temurin
(Eclipse)
29:59
31:19
Temurin
(Eclipse)
28:52
29:04
Zulu
(Azul)
25:39
25:44
Zulu
(Azul)
31:38
30:49
Zulu
(Azul)
28:59
28:41
a) Version 11.0.15 instead of 11.0.16.
b) NIK = Native Image Kit.
c) Version 17.0.3 instead of 17.0.4.

Here are two observations about the above results :

  • Build times are ~10% longer with OpenJ9 JDK (for Java 8 and Java 11).
  • Build times are significantly slower for Java 11 than for Java 8.

Scala 3 build errors

Build errors encountered on MS Windows on July 31, 2021, are :

Failing tests
   JVM 8
ClasspathTests CompilationTests FromTastyTests ZipArchiveTests
bellsoft-08 Failed OK Failed OK
corretto-08 Failed OK Failed OK
dragonwell-08 Failed OK Failed OK
openj9-08 Failed Failed Failed Failed
openjdk-08 Failed OK Failed OK
redhat-08 Failed OK Failed OK
zulu-08 Failed OK Failed OK
Failing tests
   JVM 11
ClasspathTests FromTastyTests
bellsoft-11 Failed Failed
bellsoft-nik-11 Failed Failed
corretto-11 Failed Failed
dragonwell-11 Failed Failed
microsoft-11 Failed Failed
openj9-11 Failed Failed
redhat-11 Failed Failed
sapmachine-11 Failed Failed
temurin-11 Failed Failed
zulu-11 Failed Failed
Failing tests
   JVM 17
ClasspathTests FromTastyTests
bellsoft-17 Failed Failed
bellsoft-nik-17 Failed Failed
microsoft-17 Failed Failed
sapmachine-17 Failed Failed
temurin-17 Failed Failed
zulu-17 Failed Failed

Data sharing

This section supplements my writing from page Data Sharing and Scala 3 on Windows.

Data Sharing and OpenJDK 17
Data sharing is enabled by default starting with OpenJDK 17.

An OpenJDK installation contains the file <install_dir>\lib\classlist. For instance we proceed as follows to check if data sharing is enabled in Temurin OpenJDK 11 :

  1. Command java.exe -version displays the OpenJDK version amongst other information; in particular, the last output line ends with
    • ((build 11.0.14+9, mixed mode, sharing) if data sharing is enabled
    • (build 11.0.14+9, mixed mode) otherwise.
  2. Command java.exe -Xshare:dump generates the 17.3 Mb Java shared archive <install_dir>\bin\server\classes.jsa from file <install_dir>\lib\classlist.
  3. We go back to step 1 to verify that flag sharing is present.

Corretto OpenJDK 11

> c:\opt\jdk-corretto-11.0.17_8\bin\java -version
openjdk version "11.0.17" 2022-10-18 LTS
OpenJDK Runtime Environment Corretto-11.0.17.8.1 (build 11.0.17+8-LTS)
OpenJDK 64-Bit Server VM Corretto-11.0.17.8.1 (build 11.0.17+8-LTS, mixed mode)

> c:\opt\jdk-corretto-11.0.17_8\bin\java -Xshare:dump
[...]
Number of classes 1217
[...]
> dir c:\opt\jdk-corretto-11.0.17_8\bin\server | findstr jsa
01.08.2022  23:27        11 272 192 classes.jsa

> c:\opt\jdk-corretto-11.0.17_8\bin\java -version
openjdk version "11.0.17" 2022-10-18 LTS
OpenJDK Runtime Environment Corretto-11.0.16.8.1 (build 11.0.16+8-LTS)
OpenJDK 64-Bit Server VM Corretto-11.0.16.8.1 (build 11.0.16+8-LTS, mixed mode, sharing)

🔎 Amazon provides online documentation specific to Corretto 11 (eg. change Log, patches as well as Youtube videos (eg. Devoxx keynotes by Arun Gupta and James Gosling).

Dragonwell OpenJDK 11

> c:\opt\jdk-dragonwell-11.0.16.12_8\bin\java -version
openjdk version "11.0.16.12" 2022-07-19
OpenJDK Runtime Environment (Alibaba Dragonwell)-11.0.16.12+8-GA (build 11.0.16.12+8)
OpenJDK 64-Bit Server VM (Alibaba Dragonwell)-11.0.16.12+8-GA (build 11.0.16.12+8, mixed mode)
 
> c:\opt\jdk-dragonwell-11.0.16.12_8\bin\java -Xshare:dump
[...]
Number of classes 1241
[...]
> dir c:\opt\jdk-dragonwell-11.0.16.12_8\bin\server | findstr jsa
22.05.2022  15:08        17 891 328 classes.jsa
 
> c:\opt\jdk-dragonwell-11.0.16.12_8\bin\java -version
openjdk version "11.0.16.12" 2022-07-19
OpenJDK Runtime Environment (Alibaba Dragonwell)-11.0.16.12+8-GA (build 11.0.16.12+8)
OpenJDK 64-Bit Server VM (Alibaba Dragonwell)-11.0.16.12+8-GA (build 11.0.16.12+8, mixed mode, sharing)

GraalVM OpenJDK 11

GraalVM is a universal virtual machine supporting the interaction between JVM-based languages like Java, Scala, Groovy, Kotlin, Clojure and native languages like C, C++, JavaScript, Python, R, Ruby.

> c:\opt\graalvm-ce-java11-22.1.0\bin\java -version
openjdk version "11.0.15" 2022-04-19
OpenJDK Runtime Environment GraalVM CE 22.1.0 (build 11.0.15+10-jvmci-22.1-b06)
OpenJDK 64-Bit Server VM GraalVM CE 22.1.0 (build 11.0.15+10-jvmci-22.1-b06, mixed mode, sharing)
 
> dir c:\opt\graalvm-ce-java11-22.1.0\bin\server | findstr jsa
08.05.2022  15:00        17 760 256 classes.jsa

We observe that GraalVM is the only OpenJDK implementation to come with class sharing enabled by default.

Liberica OpenJDK 11

Liberica OpenJDK 11 is available both as a "regular" and as a "lite" version (no JavaFX modules, compressed modules). BellSoft currently provides binaries suitable for different hardware and OS combinations, eg. Windows x86_64 and Windows x86.

🔎 Bellsoft also offers a native image based JDK distributions.

In the following we work with the "regular" version of Liberica OpenJDK 11.

> c:\opt\jdk-bellsoft-11.0.15\bin\java -version
openjdk version "11.0.15" 2022-04-19 LTS
OpenJDK Runtime Environment (build 11.0.15+10-LTS)
OpenJDK 64-Bit Server VM (build 11.0.15+10-LTS, mixed mode)

> c:\opt\jdk-bellsoft-11.0.15\bin\java -Xshare:dump
[...]
Number of classes 1258
[...]
> dir c:\opt\jdk-bellsoft-11.0.15\bin\server | findstr jsa
22.05.2022  15:32        18 022 400 classes.jsa

> c:\opt\jdk-bellsoft-11.0.15\bin\java -version
openjdk version "11.0.15" 2022-04-19 LTS
OpenJDK Runtime Environment (build 11.0.15+10-LTS)
OpenJDK 64-Bit Server VM (build 11.0.15+10-LTS, mixed mode, sharing)

Microsoft OpenJDK 11

> c:\opt\jdk-microsoft-11.0.16_8\bin\java -version
openjdk version "11.0.15" 2022-04-19 LTS
OpenJDK Runtime Environment Microsoft-32930 (build 11.0.15+10-LTS)
OpenJDK 64-Bit Server VM Microsoft-32930 (build 11.0.15+10-LTS, mixed mode)

> c:\opt\jdk-microsoft-11.0.16_8\bin\java -Xshare:dump
[...]
Number of classes 1220
[...]
> dir c:\opt\jdk-microsoft-11.0.16_8\bin\server | findstr jsa
22.05.2022  15:33        17 694 720 classes.jsa

> c:\opt\jdk-microsoft-11.0.16_8\bin\java -version
openjdk version "11.0.16" 2022-04-19 LTS
OpenJDK Runtime Environment Microsoft-32930 (build 11.0.15+10-LTS)
OpenJDK 64-Bit Server VM Microsoft-32930 (build 11.0.15+10-LTS, mixed mode, sharing)

OpenJ9 OpenJDK 11

Compared to the other OpenJDK distributions OpenJ9 OpenJDK 11 provides advanced settings to manage shared data; it uses option -Xshareclasses:<params> instead of -Xshare:<param>.

🔎 Execute java -Xshareclasses:help to list the settings.

> c:\opt\jdk-openj9-11.0.16_8\bin\java -version
openjdk version "11.0.16" 2022-07-19
IBM Semeru Runtime Open Edition 11.0.16.0 (build 11.0.16+8)
Eclipse OpenJ9 VM 11.0.16.0 (build openj9-0.33.0, JRE 11 Windows 10 amd64-64-Bit Compressed References 20220804_420 (JIT enabled, AOT enabled)
OpenJ9   - 04a55b45b
OMR      - b58aa2708
JCL      - ab74d97849 based on jdk-11.0.16+8)

[XXXXXXXXXX -Xshareclasses:name= ##########]

RedHat OpenJDK 11

> c:\opt\jdk-redhat-11.0.15.9-3\bin\java -version
openjdk version "11.0.15" 2022-04-19 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.15+9-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.15+9-LTS, mixed mode)

> c:\opt\jdk-redhat-11.0.15.9-3\bin\java -Xshare:dump
[...]
Number of classes 1229
[...]
> dir c:\opt\jdk-redhat-11.0.15.9-3\bin\server | findstr jsa
22.05.2022  15:38        17 760 256 classes.jsa

> c:\opt\jdk-redhat-11.0.15.9-3\bin\java -version
openjdk version "11.0.15" 2022-04-19 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.15+9-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.15+9-LTS, mixed mode, sharing)

SapMachine OpenJDK 11

GitHub project repository is SAP/SapMachine.

> c:\opt\jdk-sapmachine-11.0.20\bin\java -version
openjdk version "11.0.20-ea" 2023-07-18
OpenJDK Runtime Environment SapMachine (build 11.0.20-ea+4-sapmachine)
OpenJDK 64-Bit Server VM SapMachine (build 11.0.20-ea+4-sapmachine, mixed mode)
 
> c:\opt\jdk-sapmachine-11.0.20\bin\java -Xshare:dump
[...]
Number of classes 1222
[...]
> dir c:\opt\jdk-sapmachine-11.0.20\bin\server | findstr jsa
05/29/2023  10:49 PM        11,337,728 classes.jsa
 
> c:\opt\jdk-sapmachine-11.0.20\bin\java -version
openjdk version "11.0.20-ea" 2023-07-18
OpenJDK Runtime Environment SapMachine (build 11.0.20-ea+4-sapmachine)
OpenJDK 64-Bit Server VM SapMachine (build 11.0.20-ea+4-sapmachine, mixed mode, sharing)

🔎 SAP provides online documentation specific to SapMachine 11, e.g. Differences between SapMachine and OpenJDK.

🔎 SAP blog announcements:

Temurin OpenJDK 11

Temurin OpenJDK is the reference implementation; the other OpenJDK distributions are derived from it.

> c:\opt\jdk-temurin-11.0.19_7\bin\java -version
openjdk version "11.0.19" 2023-04-18
OpenJDK Runtime Environment Temurin-11.0.19+7 (build 11.0.19+7)
OpenJDK 64-Bit Server VM Temurin-11.0.19+7 (build 11.0.19+7, mixed mode)
 
> c:\opt\jdk-temurin-11.0.19_7\bin\java -Xshare:dump
[...]
Number of classes 1217
[...]
> dir c:\opt\jdk-temurin-11.0.19_7\bin\server | findstr jsa
05/29/2023  10:50 PM        11,272,192 classes.jsa
 
> c:\opt\jdk-temurin-11.0.19_7\bin\java -version
openjdk version "11.0.19" 2023-04-18
OpenJDK Runtime Environment Temurin-11.0.19+7 (build 11.0.19+7)
OpenJDK 64-Bit Server VM Temurin-11.0.19+7 (build 11.0.19+7, mixed mode, sharing)

Trava OpenJDK 11

> c:\opt\jdk-dcevm-11.0.15_1\bin\java -version
openjdk version "11.0.15" 2022-04-19
OpenJDK Runtime Environment AdoptOpenJDK-dcevm-11.0.15+1-202204281500 (build 11.0.15+1-202204281500)
Dynamic Code Evolution 64-Bit Server VM AdoptOpenJDK-dcevm-11.0.15+1-202204281500 (build 11.0.15+1-202204281500, mixed mode)

> c:\opt\jdk-dcevm-11.0.15_1\bin\java -Xshare:dump
[...]
Number of classes 1221
[...]
> dir c:\opt\jdk-dcevm-11.0.15_1\bin\server | findstr jsa
22.05.2022  15:42        18 022 400 classes.jsa

> c:\opt\jdk-dcevm-11.0.15_1\bin\java -version
openjdk version "11.0.15" 2022-04-19
OpenJDK Runtime Environment AdoptOpenJDK-dcevm-11.0.15+1-202204281500 (build 11.0.15+1-202204281500)
Dynamic Code Evolution 64-Bit Server VM AdoptOpenJDK-dcevm-11.0.15+1-202204281500 (build 11.0.15+1-202204281500, mixed mode, sharing)

🔎 Trava OpenJDK is not intended to be used as 'main' JDK, since the integrated HotswapAgent is enabled by default and it uses serial GC by default. The default behaviour can be changed as follows:

> c:\opt\jdk-dcevm-11.0.11_1\bin\java -XX:+DisableHotswapAgent -XX:+UseConcMarkSweepGC -version
Dynamic Code Evolution 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
openjdk version "11.0.9" 2020-10-20
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.10+4-202010241925)
Dynamic Code Evolution 64-Bit Server VM AdoptOpenJDK (build 11.0.10+4-202010241925, mixed mode, sharing)

Trava OpenJDK only supports the serial and CMS garbage collectors (ie. options -XX:+UseParallelGC and -XX:+UseG1GC are not supported).

Starting with version 11.0.9 of the Trava OpenJDK the compiler option -XX:+DisableHotswapAgent is replaced by option -XX:HotswapAgent:<disabled|fatjar|core|external>.

Zulu OpenJDK 11

> c:\opt\jdk-zulu-11.0.19-win_x64\bin\java -version
openjdk version "11.0.19" 2023-04-18 LTS
OpenJDK Runtime Environment Zulu11.64+19-CA (build 11.0.19+7-LTS)
OpenJDK 64-Bit Server VM Zulu11.64+19-CA (build 11.0.19+7-LTS, mixed mode)
 
> c:\opt\jdk-zulu-11.0.19-win_x64\bin\java -Xshare:dump
[...]
Number of classes 1223
[...]
> dir c:\opt\jdk-zulu-11.0.19-win_x64\bin\server | findstr jsa
05/29/2023  10:52 PM        11,534,336 classes.jsa
 
> c:\opt\jdk-zulu-11.0.19-win_x64\bin\java -version
openjdk version "11.0.19" 2023-04-18 LTS
OpenJDK Runtime Environment Zulu11.64+19-CA (build 11.0.19+7-LTS)
OpenJDK 64-Bit Server VM Zulu11.64+19-CA (build 11.0.19+7-LTS, mixed mode, sharing)

Related reading

2018

IBM Developer: Class sharing in Eclipse OpenJ9
by Ben Corrie, Hang Shao (2018-06-06)
Reduce your memory footprint and improve startup performance with the shared class feature.

2017

JavaOne 2017: Eclipse OpenJ9: Under the hood of the JVM
by Dan Heidinga (2017-10-10)
Dan Heiding presents an updated version of my "OpenJ9: Under the hood of the next open source JVM" that covers where it was open sourced (github.com/eclipse/openj9), how to build it, and then deep dives into the ROM/RAM divide before touching on interpreter, JIT and AOT.

2016

IBM: OpenJ9: Under the hood of the next open source JVM
by Dan Heidinga (2016-09-21)
Dan Heidinga gives a description of how bytecodes are loaded into the J9VM and how bytecode execution occurs, plus IBM's plans to open source J9.

Footnotes

[1] Oracle JDK vs OpenJDK

Oracle's release notes for Java version 11 gives several Differences between Oracle JDK and OpenJDK.

[2] JCK Compliance (2018-04-06)

The JCK is a proprietary test suite, accessible under license from Oracle.
The role of the JCK is not to determine quality, but rather to provide a binary indication of compatibility with the Java SE specification. As such, the JCK only tests functional behaviour, and only such functional behaviour that is given in the Java specification.
(see issue 19 from OpenJDK TSC)

[3] Downloads

In our case we downloaded the following installation files (see section 1):
Alibaba_Dragonwell_Standard_11.0.19.15.7_x64_windows.zip       (186 MB)
amazon-corretto-11.0.16.9.1-windows-x64-jdk.zip                (178 MB)
bellsoft-jdk11.0.19+7-windows-amd64.zip                        (186 MB)
bellsoft-liberica-vm-openjdk11.0.19+7-22.3.2+1-windows-amd64.zip  (329 MB)
graalvm-ce-java11-windows-amd64-22.2.0.zip                     (335 MB)
ibm-semeru-open-jdk_x64_windows_11.0.16_8_openj9-0.33.0.zip    (198 MB)
java-11-openjdk-11.0.16.8-1.windows.redhat.x86_64.zip          (242 MB)
microsoft-jdk-11.0.19-windows-x64.zip                          (178 MB)
Openjdk11u-dcevm-windows-x64.zip                               (187 MB)
OpenJDK11U-jdk_x64_windows_hotspot_11.0.17_8.zip               (190 MB)
sapmachine-jdk-11.0.20-ea.4_windows-x64_bin.zip                (189 MB)
zulu11.64.19-ca-jdk11.0.19-win_x64.zip                         (187 MB)

[4] Snapshot builds

We run the batch file snapshot.bat (which calls build.bat) to generate 26 Scala 3 software distributions based on 8, 11 and 17 OpenJDK implementations (see also snyk report "JVM Ecosystem report 2021").
> dir /b __SNAPSHOT_LOCAL\*.zip
scala3-3.3.1-RC1-bin-SNAPSHOT-bellsoft-08.zip
scala3-3.3.1-RC1-bin-SNAPSHOT-bellsoft-11.zip
scala3-3.3.1-RC1-bin-SNAPSHOT-bellsoft-17.zip
scala3-3.3.1-RC1-bin-SNAPSHOT-bellsoft-nik-11.zip
scala3-3.3.1-RC1-bin-SNAPSHOT-bellsoft-nik-17.zip
scala3-3.3.1-RC1-bin-SNAPSHOT-corretto-11.zip
scala3-3.3.1-RC1-bin-SNAPSHOT-corretto-17.zip
scala3-3.3.1-RC1-bin-SNAPSHOT-dcevm-11.zip
scala3-3.3.1-RC1-bin-SNAPSHOT-dragonwell-08.zip
scala3-3.3.1-RC1-bin-SNAPSHOT-dragonwell-11.zip
scala3-3.3.1-RC1-bin-SNAPSHOT-graalvm-ce-08.zip
scala3-3.3.1-RC1-bin-SNAPSHOT-graalvm-ce-11.zip
scala3-3.3.1-RC1-bin-SNAPSHOT-graalvm-ce-17.zip
scala3-3.3.1-RC1-bin-SNAPSHOT-microsoft-11.zip
scala3-3.3.1-RC1-bin-SNAPSHOT-microsoft-17.zip
scala3-3.3.1-RC1-bin-SNAPSHOT-openj9-08.zip
scala3-3.3.1-RC1-bin-SNAPSHOT-openj9-11.zip
scala3-3.3.1-RC1-bin-SNAPSHOT-redhat-08.zip
scala3-3.3.1-RC1-bin-SNAPSHOT-redhat-11.zip
scala3-3.3.1-RC1-bin-SNAPSHOT-sapmachine-11.zip
scala3-3.3.1-RC1-bin-SNAPSHOT-sapmachine-17.zip
scala3-3.3.1-RC1-bin-SNAPSHOT-temurin-08.zip
scala3-3.3.1-RC1-bin-SNAPSHOT-temurin-11.zip
scala3-3.3.1-RC1-bin-SNAPSHOT-temurin-17.zip
scala3-3.3.1-RC1-bin-SNAPSHOT-zulu-08.zip
scala3-3.3.1-RC1-bin-SNAPSHOT-zulu-11.zip
scala3-3.3.1-RC1-bin-SNAPSHOT-zulu-17.zip

mics/May 2024