├── .github
├── CODEOWNERS
├── dependabot.yml
└── workflows
│ ├── jenkins-security-scan.yml
│ └── cd.yaml
├── .mvn
├── maven.config
└── extensions.xml
├── src
├── test
│ ├── resources
│ │ ├── __files
│ │ │ ├── Win.zip
│ │ │ ├── Mac.tar.gz
│ │ │ └── Linux.tar.gz
│ │ ├── io
│ │ │ └── jenkins
│ │ │ │ └── plugins
│ │ │ │ └── adoptopenjdk
│ │ │ │ ├── alpine-os-release
│ │ │ │ └── ubuntu-os-release
│ │ └── io.jenkins.plugins.adoptopenjdk.AdoptOpenJDKInstaller
│ └── java
│ │ └── io
│ │ └── jenkins
│ │ └── plugins
│ │ └── adoptopenjdk
│ │ ├── AdoptOpenJDKInstallerAlpineTest.java
│ │ └── AdoptOpenJDKInstallerTest.java
└── main
│ ├── resources
│ ├── index.jelly
│ └── io
│ │ └── jenkins
│ │ └── plugins
│ │ └── adoptopenjdk
│ │ ├── AdoptOpenJDKInstaller
│ │ ├── help.html
│ │ └── config.jelly
│ │ └── Messages.properties
│ ├── webapp
│ └── version.html
│ └── java
│ └── io
│ └── jenkins
│ └── plugins
│ └── adoptopenjdk
│ └── AdoptOpenJDKInstaller.java
├── .gitignore
├── Jenkinsfile
├── LICENSE.txt
├── pom.xml
└── README.md
/.github/CODEOWNERS:
--------------------------------------------------------------------------------
1 | * @jenkinsci/adoptopenjdk-plugin-developers
2 |
--------------------------------------------------------------------------------
/.mvn/maven.config:
--------------------------------------------------------------------------------
1 | -Pconsume-incrementals
2 | -Pmight-produce-incrementals
3 | -Dchangelist.format=%d.v%s
4 |
--------------------------------------------------------------------------------
/src/test/resources/__files/Win.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/adoptopenjdk-plugin/master/src/test/resources/__files/Win.zip
--------------------------------------------------------------------------------
/src/test/resources/__files/Mac.tar.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/adoptopenjdk-plugin/master/src/test/resources/__files/Mac.tar.gz
--------------------------------------------------------------------------------
/src/test/resources/__files/Linux.tar.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/adoptopenjdk-plugin/master/src/test/resources/__files/Linux.tar.gz
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | target
2 |
3 | # mvn hpi:run
4 | work
5 |
6 | # IntelliJ IDEA project files
7 | *.iml
8 | *.iws
9 | *.ipr
10 | .idea
11 |
12 | # Eclipse project files
13 | .settings
14 | .classpath
15 | .project
16 |
--------------------------------------------------------------------------------
/Jenkinsfile:
--------------------------------------------------------------------------------
1 | /*
2 | * See the documentation for more options:
3 | * https://github.com/jenkins-infra/pipeline-library/
4 | */
5 | buildPlugin(useContainerAgent: true, configurations: [
6 | [ platform: 'linux', jdk: 25 ],
7 | [ platform: 'windows', jdk: 21 ],
8 | ])
9 |
--------------------------------------------------------------------------------
/src/test/resources/io/jenkins/plugins/adoptopenjdk/alpine-os-release:
--------------------------------------------------------------------------------
1 | NAME="Alpine Linux"
2 | ID=alpine
3 | VERSION_ID=3.22.0
4 | PRETTY_NAME="Alpine Linux v3.22"
5 | HOME_URL="https://alpinelinux.org/"
6 | BUG_REPORT_URL="https://gitlab.alpinelinux.org/alpine/aports/-/issues"
7 |
--------------------------------------------------------------------------------
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | # https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuring-dependabot-version-updates
2 | ---
3 | version: 2
4 | updates:
5 | - package-ecosystem: maven
6 | directory: /
7 | schedule:
8 | interval: monthly
9 | - package-ecosystem: github-actions
10 | directory: /
11 | schedule:
12 | interval: monthly
13 |
--------------------------------------------------------------------------------
/.mvn/extensions.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | io.jenkins.tools.incrementals
4 | git-changelist-maven-extension
5 | 1.13
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/test/resources/io/jenkins/plugins/adoptopenjdk/ubuntu-os-release:
--------------------------------------------------------------------------------
1 | PRETTY_NAME="Ubuntu 24.04.2 LTS"
2 | NAME="Ubuntu"
3 | VERSION_ID="24.04"
4 | VERSION="24.04.2 LTS (Noble Numbat)"
5 | VERSION_CODENAME=noble
6 | ID=ubuntu
7 | ID_LIKE=debian
8 | HOME_URL="https://www.ubuntu.com/"
9 | SUPPORT_URL="https://help.ubuntu.com/"
10 | BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
11 | PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
12 | UBUNTU_CODENAME=noble
13 | LOGO=ubuntu-logo
14 |
--------------------------------------------------------------------------------
/.github/workflows/jenkins-security-scan.yml:
--------------------------------------------------------------------------------
1 | # Jenkins Security Scan
2 | # For more information, see: https://www.jenkins.io/doc/developer/security/scan/
3 |
4 | name: Jenkins Security Scan
5 |
6 | on:
7 | push:
8 | branches:
9 | - master
10 | pull_request:
11 | types: [opened, synchronize, reopened]
12 | workflow_dispatch:
13 |
14 | permissions:
15 | security-events: write
16 | contents: read
17 | actions: read
18 |
19 | jobs:
20 | security-scan:
21 | uses: jenkins-infra/jenkins-security-scan/.github/workflows/jenkins-security-scan.yaml@v2
22 | with:
23 | java-cache: 'maven' # Optionally enable use of a build dependency cache. Specify 'maven' or 'gradle' as appropriate.
24 | # java-version: 21 # Optionally specify what version of Java to set up for the build, or remove to use a recent default.
25 |
--------------------------------------------------------------------------------
/LICENSE.txt:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2016 - 2019, Mads Mohr Christensen
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in
13 | all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | THE SOFTWARE.
22 |
--------------------------------------------------------------------------------
/src/main/resources/index.jelly:
--------------------------------------------------------------------------------
1 |
26 |
27 |
27 | This installation method relies on a third-party service and may
28 | break at any time without notice. Instead, consider preinstalling a JDK on
29 | agents, using images that already include a JDK, or downloading the desired
30 | JDK manually and configuring the Extract *.zip/*.tar.gz
installer.
31 |
--------------------------------------------------------------------------------
/.github/workflows/cd.yaml:
--------------------------------------------------------------------------------
1 | # Note: additional setup is required, see https://www.jenkins.io/redirect/continuous-delivery-of-plugins
2 | #
3 | # Please find additional hints for individual trigger use case
4 | # configuration options inline this script below.
5 | #
6 | ---
7 | name: cd
8 | on:
9 | workflow_dispatch:
10 | inputs:
11 | validate_only:
12 | required: false
13 | type: boolean
14 | description: |
15 | Run validation with release drafter only
16 | → Skip the release job
17 | # Note: Change this default to true,
18 | # if the checkbox should be checked by default.
19 | default: false
20 | # If you don't want any automatic trigger in general, then
21 | # the following check_run trigger lines should all be commented.
22 | # Note: Consider the use case #2 config for 'validate_only' below
23 | # as an alternative option!
24 | check_run:
25 | types:
26 | - completed
27 |
28 | permissions:
29 | checks: read
30 | contents: write
31 |
32 | jobs:
33 | maven-cd:
34 | uses: jenkins-infra/github-reusable-workflows/.github/workflows/maven-cd.yml@v1
35 | with:
36 | # Comment / uncomment the validate_only config appropriate to your preference:
37 | #
38 | # Use case #1 (automatic release):
39 | # - Let any successful Jenkins build trigger another release,
40 | # if there are merged pull requests of interest
41 | # - Perform a validation only run with drafting a release note,
42 | # if manually triggered AND inputs.validate_only has been checked.
43 | #
44 | validate_only: ${{ inputs.validate_only == true }}
45 | #
46 | # Alternative use case #2 (no automatic release):
47 | # - Same as use case #1 - but:
48 | # - Let any check_run trigger a validate_only run.
49 | # => enforce the release job to be skipped.
50 | #
51 | #validate_only: ${{ inputs.validate_only == true || github.event_name == 'check_run' }}
52 | secrets:
53 | MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }}
54 | MAVEN_TOKEN: ${{ secrets.MAVEN_TOKEN }}
55 |
--------------------------------------------------------------------------------
/src/main/resources/io/jenkins/plugins/adoptopenjdk/AdoptOpenJDKInstaller/config.jelly:
--------------------------------------------------------------------------------
1 |
26 |
27 | singletonList(installer))));
82 | jenkinsRule.jenkins.getJDKs().add(testJdk);
83 |
84 | // download releases from mock
85 | DownloadService.Downloadable jdkDl = DownloadService.Downloadable.get(AdoptOpenJDKInstaller.class.getName());
86 | String releases = IOUtils.toString(
87 | getClass().getResourceAsStream("/" + AdoptOpenJDKInstaller.class.getName()), StandardCharsets.UTF_8);
88 | jdkDl.getDataFile().write(releases.replaceAll("https://github.com", wireMockExtension.baseUrl()));
89 |
90 | setupStub(".*linux.*", "Linux.tar.gz");
91 | setupStub(".*win.*", "Win.zip");
92 | setupStub(".*mac.*", "Mac.tar.gz");
93 | }
94 |
95 | @Test
96 | void configRoundtrip() throws Exception {
97 | jenkinsRule.submit(jenkinsRule.createWebClient().goTo("configureTools").getFormByName("config"));
98 |
99 | JDK jdk = jenkinsRule.jenkins.getJDK(testJdk.getName());
100 | InstallSourceProperty isp = jdk.getProperties().get(InstallSourceProperty.class);
101 | assertEquals(1, isp.installers.size());
102 | jenkinsRule.assertEqualBeans(installer, isp.installers.get(AdoptOpenJDKInstaller.class), "id");
103 | }
104 |
105 | @Test
106 | void installFromCache() throws Exception {
107 | FreeStyleProject freeStyleProject = jenkinsRule.createFreeStyleProject();
108 | freeStyleProject.setAssignedNode(agent);
109 | freeStyleProject.setJDK(testJdk);
110 | freeStyleProject
111 | .getBuildersList()
112 | .add(isWindows() ? new BatchFile("java -version") : new Shell("java -version"));
113 |
114 | // start initial build to initialize the cache on master
115 | FilePath cacheDir = jenkinsRule.jenkins.getRootPath().child("caches/adoptopenjdk");
116 | assertFalse(cacheDir.exists());
117 | FreeStyleBuild freeStyleBuild1 = scheduleBuild(freeStyleProject);
118 | jenkinsRule.assertLogContains(wireMockExtension.baseUrl(), freeStyleBuild1);
119 | jenkinsRule.assertLogNotContains(cacheDir.getRemote(), freeStyleBuild1);
120 | assertTrue(cacheDir.exists());
121 |
122 | // use installation on agent
123 | FreeStyleBuild freeStyleBuild2 = scheduleBuild(freeStyleProject);
124 | jenkinsRule.assertLogNotContains(wireMockExtension.baseUrl(), freeStyleBuild2);
125 | jenkinsRule.assertLogNotContains(cacheDir.getRemote(), freeStyleBuild2);
126 |
127 | // delete installation on agent
128 | FilePath jdkInstallation =
129 | Objects.requireNonNull(agent.getRootPath()).child("tools/hudson.model.JDK/" + testJdk.getName());
130 | assertTrue(jdkInstallation.exists());
131 | jdkInstallation.deleteRecursive();
132 | assertFalse(jdkInstallation.exists());
133 |
134 | // build again to install from cache on master
135 | FreeStyleBuild freeStyleBuild3 = scheduleBuild(freeStyleProject);
136 | jenkinsRule.assertLogContains(cacheDir.getRemote(), freeStyleBuild3);
137 | jenkinsRule.assertLogNotContains(wireMockExtension.baseUrl(), freeStyleBuild3);
138 | }
139 |
140 | private void setupStub(String urlRegex, String bodyFile) {
141 | wireMockExtension.stubFor(get(urlMatching(urlRegex))
142 | .willReturn(aResponse()
143 | .withHeader("Content-Type", "application/octet-stream")
144 | .withBodyFile(bodyFile)));
145 | }
146 |
147 | private FreeStyleBuild scheduleBuild(FreeStyleProject freeStyleProject) throws Exception {
148 | FreeStyleBuild freeStyleBuild = jenkinsRule.assertBuildStatusSuccess(freeStyleProject.scheduleBuild2(0));
149 | assertEquals(agent, freeStyleBuild.getBuiltOn());
150 | jenkinsRule.assertLogContains("mock install", freeStyleBuild);
151 | return freeStyleBuild;
152 | }
153 | }
154 |
--------------------------------------------------------------------------------
/src/main/java/io/jenkins/plugins/adoptopenjdk/AdoptOpenJDKInstaller.java:
--------------------------------------------------------------------------------
1 | package io.jenkins.plugins.adoptopenjdk;
2 |
3 | /*
4 | * #%L
5 | * Eclipse Temurin installer Plugin
6 | * %%
7 | * Copyright (C) 2016 - 2019 Mads Mohr Christensen
8 | * %%
9 | * Permission is hereby granted, free of charge, to any person obtaining a copy
10 | * of this software and associated documentation files (the "Software"), to deal
11 | * in the Software without restriction, including without limitation the rights
12 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13 | * copies of the Software, and to permit persons to whom the Software is
14 | * furnished to do so, subject to the following conditions:
15 | *
16 | * The above copyright notice and this permission notice shall be included in
17 | * all copies or substantial portions of the Software.
18 | *
19 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
25 | * THE SOFTWARE.
26 | * #L%
27 | */
28 |
29 | import edu.umd.cs.findbugs.annotations.NonNull;
30 | import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
31 | import hudson.Extension;
32 | import hudson.FilePath;
33 | import hudson.model.DownloadService;
34 | import hudson.model.JDK;
35 | import hudson.model.Node;
36 | import hudson.model.TaskListener;
37 | import hudson.remoting.VirtualChannel;
38 | import hudson.tools.ToolInstallation;
39 | import hudson.tools.ToolInstaller;
40 | import hudson.tools.ToolInstallerDescriptor;
41 | import hudson.tools.ZipExtractionInstaller;
42 | import java.io.File;
43 | import java.io.IOException;
44 | import java.io.InputStream;
45 | import java.io.OutputStream;
46 | import java.nio.charset.Charset;
47 | import java.nio.file.Files;
48 | import java.nio.file.Path;
49 | import java.nio.file.StandardCopyOption;
50 | import java.util.Arrays;
51 | import java.util.List;
52 | import java.util.Locale;
53 | import java.util.stream.Stream;
54 | import jenkins.model.Jenkins;
55 | import jenkins.security.MasterToSlaveCallable;
56 | import net.sf.json.JSONObject;
57 | import org.apache.commons.io.input.CountingInputStream;
58 | import org.jenkinsci.Symbol;
59 | import org.kohsuke.stapler.DataBoundConstructor;
60 |
61 | /**
62 | * Install OpenJDK from Adoptium
63 | * Based on Oracle Java SE Development Kit Installer
64 | */
65 | public class AdoptOpenJDKInstaller extends ToolInstaller {
66 |
67 | private static boolean DISABLE_CACHE = Boolean.getBoolean(AdoptOpenJDKInstaller.class.getName() + ".cache.disable");
68 |
69 | /**
70 | * Eclipse Temurin release id
71 | */
72 | public final String id;
73 |
74 | @DataBoundConstructor
75 | public AdoptOpenJDKInstaller(String id) {
76 | super(null);
77 | this.id = id;
78 | }
79 |
80 | @NonNull
81 | private static AdoptOpenJDKFamilyList getAdoptOpenJDKFamilyList() throws IOException {
82 | AdoptOpenJDKList list = AdoptOpenJDKList.all().get(AdoptOpenJDKList.class);
83 | if (list == null) {
84 | throw new IOException(Messages.AdoptOpenJDKInstaller_getAdoptOpenJDKFamilyList_NoDownloadable());
85 | }
86 | return list.toList();
87 | }
88 |
89 | @Override
90 | public FilePath performInstallation(ToolInstallation tool, Node node, TaskListener log)
91 | throws IOException, InterruptedException {
92 | FilePath expected = preferredLocation(tool, node);
93 |
94 | try {
95 | // already installed?
96 | FilePath marker = expected.child(".installedByJenkins");
97 | if (marker.exists() && marker.readToString().equals(id)) {
98 | return expected;
99 | }
100 | expected.deleteRecursive();
101 | expected.mkdirs();
102 |
103 | AdoptOpenJDKFamilyList jdkFamilyList = getAdoptOpenJDKFamilyList();
104 | if (jdkFamilyList.isEmpty()) {
105 | throw new IOException(Messages.AdoptOpenJDKInstaller_performInstallation_emptyJdkFamilyList());
106 | }
107 | AdoptOpenJDKRelease release = jdkFamilyList.getRelease(id);
108 | if (release == null) {
109 | throw new IOException(Messages.AdoptOpenJDKInstaller_performInstallation_releaseNotFound(id));
110 | }
111 |
112 | Platform p = Platform.of(node);
113 | CPU c = CPU.of(node);
114 |
115 | AdoptOpenJDKFile binary = release.getBinary(p, c);
116 | if (binary == null) {
117 | throw new IOException(
118 | Messages.AdoptOpenJDKInstaller_performInstallation_binaryNotFound(id, p.name(), c.name()));
119 | }
120 | File cache = getLocalCacheFile(p, c);
121 | if (!DISABLE_CACHE && cache.exists()) {
122 | try (InputStream in = cache.toURI().toURL().openStream()) {
123 | CountingInputStream cis = new CountingInputStream(in);
124 | try {
125 | log.getLogger()
126 | .println(Messages.AdoptOpenJDKInstaller_performInstallation_fromCache(
127 | cache, expected, node.getDisplayName()));
128 | // the zip contains already the directory so we unzip to parent directory
129 | FilePath parent = expected.getParent();
130 | if (parent != null) {
131 | parent.unzipFrom(cis);
132 | } else {
133 | throw new NullPointerException("Parent directory of " + expected + " is null");
134 | }
135 | } catch (IOException e) {
136 | throw new IOException(
137 | Messages.AdoptOpenJDKInstaller_performInstallation_failedToUnpack(
138 | cache.toURI().toURL(), cis.getByteCount()),
139 | e);
140 | }
141 | }
142 | } else {
143 | String url = binary.binary_link;
144 | ZipExtractionInstaller zipExtractionInstaller = new ZipExtractionInstaller(null, url, null);
145 | FilePath installation = zipExtractionInstaller.performInstallation(tool, node, log);
146 | installation.child(".timestamp").delete(); // we don't use the timestamp
147 | FilePath base = findPullUpDirectory(installation, p);
148 | if (base != null && base != expected) {
149 | base.moveAllChildrenTo(expected);
150 | }
151 | marker.write(id, null);
152 | if (!DISABLE_CACHE) {
153 | // update the local cache on master
154 | // download to a temporary file and rename it in to handle concurrency and failure correctly,
155 | Path tmp = new File(cache.getPath() + ".tmp").toPath();
156 | try {
157 | Path tmpParent = tmp.getParent();
158 | if (tmpParent != null) {
159 | Files.createDirectories(tmpParent);
160 | }
161 | try (OutputStream out = Files.newOutputStream(tmp)) {
162 | expected.zip(out);
163 | }
164 | Files.move(tmp, cache.toPath(), StandardCopyOption.REPLACE_EXISTING);
165 | } finally {
166 | Files.deleteIfExists(tmp);
167 | }
168 | }
169 | }
170 | } catch (DetectionFailedException e) {
171 | log.getLogger().println(Messages.AdoptOpenJDKInstaller_performInstallation_JdkSkipped(e.getMessage()));
172 | }
173 |
174 | return expected;
175 | }
176 |
177 | private File getLocalCacheFile(Platform platform, CPU cpu) {
178 | // we force .zip file
179 | return new File(Jenkins.get().getRootDir(), "caches/adoptopenjdk/" + platform + "/" + cpu + "/" + id + ".zip");
180 | }
181 |
182 | /**
183 | * Often an archive contains an extra top-level directory that's unnecessary when extracted on the disk
184 | * into the expected location. If your installation sources provide that kind of archives, override
185 | * this method to find the real root location.
186 | *
187 | *
188 | * The caller will "pull up" the discovered real root by throw away the intermediate directory,
189 | * so that the user-configured "tool home" directory contains the right files.
190 | *
191 | *
192 | * The default implementation applies some heuristics to auto-determine if the pull up is necessary.
193 | * This should work for typical archive files.
194 | *
195 | * @param root The directory that contains the extracted archive. This directory contains nothing but the
196 | * extracted archive. For example, if the user installed
197 | * jakarta-ant-1.1.zip, this directory would contain
198 | * a single directory "jakarta-ant".
199 | * @param platform The platform for which to find pull up directory for.
200 | * @return Return the real top directory inside {@code root} that contains the meat. In the above example,
201 | * {@code root.child("jakarta-ant")} should be returned. If there's no directory to pull up, return null.
202 | * @throws IOException Signals that an I/O exception of some sort has occurred.
203 | * @throws InterruptedException Thrown when a thread is interrupted.
204 | */
205 | protected FilePath findPullUpDirectory(FilePath root, Platform platform) throws IOException, InterruptedException {
206 | // if the directory just contains one directory and that alone, assume that's the pull up subject
207 | // otherwise leave it as is.
208 | List children = root.listDirectories();
209 | if (children.size() != 1) return null;
210 |
211 | // Since the MacOS tar.gz file uses a different layout we need to handle this platform differently
212 | // https://blog.adoptopenjdk.net/2018/10/macos-binary-changes
213 | if (platform == Platform.MACOS) {
214 | FilePath contents = children.get(0).child("Contents/Home");
215 | if (contents.exists() && contents.isDirectory()) return contents;
216 | }
217 | return children.get(0);
218 | }
219 |
220 | /**
221 | * Supported platform
222 | */
223 | public enum Platform {
224 | LINUX("linux"),
225 | ALPINE_LINUX("alpine-linux"),
226 | WINDOWS("windows"),
227 | MACOS("mac"),
228 | SOLARIS("solaris"),
229 | AIX("aix");
230 |
231 | private final String id;
232 |
233 | Platform(String id) {
234 | this.id = id;
235 | }
236 |
237 | public static Platform of(Node n) throws IOException, InterruptedException, DetectionFailedException {
238 | VirtualChannel channel = n.getChannel();
239 | if (channel == null) {
240 | throw new IOException(Messages.AdoptOpenJDKInstaller_Platform_nullChannel(n.getDisplayName()));
241 | }
242 | return channel.call(new Platform.GetCurrentPlatform());
243 | }
244 |
245 | public static Platform current() throws DetectionFailedException {
246 | String arch = System.getProperty("os.name").toLowerCase(Locale.ENGLISH);
247 | if (arch.contains("linux")) return isAlpineLinux() ? ALPINE_LINUX : LINUX;
248 | if (arch.contains("windows")) return WINDOWS;
249 | if (arch.contains("sun") || arch.contains("solaris")) return SOLARIS;
250 | if (arch.contains("mac")) return MACOS;
251 | if (arch.contains("aix")) return AIX;
252 | throw new DetectionFailedException(Messages.AdoptOpenJDKInstaller_Platform_unknownPlatform(arch));
253 | }
254 |
255 | // Package protected so that tests can modify it
256 | static String osReleaseLocation = "/etc/os-release";
257 |
258 | // Package protected so that it can be tested
259 | static boolean isAlpineLinux() {
260 | File osRelease = new File(osReleaseLocation);
261 | try (Stream lines = Files.lines(osRelease.toPath(), Charset.defaultCharset())) {
262 | return lines.anyMatch("ID=alpine"::equalsIgnoreCase);
263 | } catch (IOException ioe) {
264 | return false; // Do not fail OS detection if osReleaseLocation does not exist
265 | }
266 | }
267 |
268 | public String getId() {
269 | return id;
270 | }
271 |
272 | static class GetCurrentPlatform extends MasterToSlaveCallable {
273 | private static final long serialVersionUID = 1L;
274 |
275 | public Platform call() throws DetectionFailedException {
276 | return current();
277 | }
278 | }
279 | }
280 |
281 | /**
282 | * Supported CPU architecture
283 | */
284 | public enum CPU {
285 | i386,
286 | amd64,
287 | Sparc,
288 | s390x,
289 | ppc64,
290 | arm;
291 |
292 | public static CPU of(Node n) throws IOException, InterruptedException, DetectionFailedException {
293 | VirtualChannel channel = n.getChannel();
294 | if (channel == null) {
295 | throw new IOException(Messages.AdoptOpenJDKInstaller_CPU_nullChannel(n.getDisplayName()));
296 | }
297 | return channel.call(new CPU.GetCurrentCPU());
298 | }
299 |
300 | public static CPU current() throws DetectionFailedException {
301 | String arch = System.getProperty("os.arch").toLowerCase(Locale.ENGLISH);
302 | if (arch.contains("sparc")) return Sparc;
303 | if (arch.contains("amd64") || arch.contains("86_64")) return amd64;
304 | if (arch.contains("86")) return i386;
305 | if (arch.contains("s390x")) return s390x;
306 | if (arch.contains("ppc64")) return ppc64;
307 | if (arch.contains("arm") || arch.contains("aarch64")) return arm;
308 | throw new DetectionFailedException(Messages.AdoptOpenJDKInstaller_CPU_unknownCpu(arch));
309 | }
310 |
311 | static class GetCurrentCPU extends MasterToSlaveCallable {
312 | private static final long serialVersionUID = 1L;
313 |
314 | public CPU call() throws DetectionFailedException {
315 | return current();
316 | }
317 | }
318 | }
319 |
320 | @Extension
321 | @Symbol("adoptOpenJdkInstaller")
322 | public static class DescriptorImpl extends ToolInstallerDescriptor {
323 |
324 | @NonNull
325 | @Override
326 | public String getDisplayName() {
327 | return Messages.AdoptOpenJDKInstaller_DescriptorImpl_DisplayName();
328 | }
329 |
330 | @Override
331 | public boolean isApplicable(Class extends ToolInstallation> toolType) {
332 | return toolType == JDK.class;
333 | }
334 |
335 | public List getInstallableJDKs() throws IOException {
336 | return Arrays.asList(getAdoptOpenJDKFamilyList().data);
337 | }
338 | }
339 |
340 | @Extension
341 | @Symbol("adoptOpenJdk")
342 | public static final class AdoptOpenJDKList extends DownloadService.Downloadable {
343 | public AdoptOpenJDKList() {
344 | super(AdoptOpenJDKInstaller.class);
345 | }
346 |
347 | public AdoptOpenJDKFamilyList toList() throws IOException {
348 | JSONObject d = getData();
349 | if (d == null) return new AdoptOpenJDKFamilyList();
350 | return (AdoptOpenJDKFamilyList) JSONObject.toBean(d, AdoptOpenJDKFamilyList.class);
351 | }
352 | }
353 |
354 | private static final class DetectionFailedException extends Exception {
355 | private DetectionFailedException(String message) {
356 | super(message);
357 | }
358 | }
359 |
360 | @SuppressFBWarnings(
361 | value = "NP_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD",
362 | justification = "Field initialized during deserialization from JSON object")
363 | public static final class AdoptOpenJDKFamilyList {
364 | public AdoptOpenJDKFamily[] data = new AdoptOpenJDKFamily[0];
365 | public int version;
366 |
367 | public boolean isEmpty() {
368 | for (AdoptOpenJDKFamily f : data) {
369 | if (f.releases.length > 0) {
370 | return false;
371 | }
372 | }
373 | return true;
374 | }
375 |
376 | public AdoptOpenJDKRelease getRelease(String productCode) {
377 | for (AdoptOpenJDKFamily f : data) {
378 | for (AdoptOpenJDKRelease r : f.releases) {
379 | if (r.matchesId(productCode)) {
380 | return r;
381 | }
382 | }
383 | }
384 | return null;
385 | }
386 | }
387 |
388 | @SuppressFBWarnings(
389 | value = {"UUF_UNUSED_PUBLIC_OR_PROTECTED_FIELD", "UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD"},
390 | justification = "Field initialized during deserialization from JSON object")
391 | public static final class AdoptOpenJDKFamily {
392 | public String name;
393 | public AdoptOpenJDKRelease[] releases;
394 | }
395 |
396 | @SuppressFBWarnings(
397 | value = {"UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD", "NP_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD"},
398 | justification = "Field initialized during deserialization from JSON object")
399 | public static final class AdoptOpenJDKRelease {
400 | public AdoptOpenJDKFile[] binaries;
401 | public String release_name;
402 | public String openjdk_impl;
403 |
404 | public boolean matchesId(String rhs) {
405 | return rhs != null && rhs.equals(release_name);
406 | }
407 |
408 | public AdoptOpenJDKFile getBinary(Platform platform, CPU cpu) throws IOException {
409 | for (AdoptOpenJDKFile f : binaries) {
410 | if (!platform.getId().equals(f.os) || !openjdk_impl.equals(f.openjdk_impl)) {
411 | continue;
412 | }
413 | switch (cpu) {
414 | case i386:
415 | if (f.architecture.equals("x32")) return f;
416 | break;
417 | case amd64:
418 | if (f.architecture.equals("x64")) return f;
419 | break;
420 | case Sparc:
421 | if (f.architecture.equals("sparcv9")) return f;
422 | break;
423 | case ppc64:
424 | if (f.architecture.equals("ppc64") || f.architecture.equals("ppc64le")) return f;
425 | break;
426 | case s390x:
427 | if (f.architecture.equals("s390x")) return f;
428 | break;
429 | case arm:
430 | if (f.architecture.equals("arm") || f.architecture.equals("aarch64")) return f;
431 | break;
432 | default:
433 | throw new IOException(
434 | Messages.AdoptOpenJDKInstaller_AdoptOpenJDKRelease_usupportedCpu(cpu.name()));
435 | }
436 | }
437 | return null;
438 | }
439 | }
440 |
441 | @SuppressFBWarnings(
442 | value = "UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD",
443 | justification = "Field initialized during deserialization from JSON object")
444 | public static final class AdoptOpenJDKFile {
445 | public String architecture;
446 | public String os;
447 | public String openjdk_impl;
448 | public String binary_link;
449 | }
450 | }
451 |
--------------------------------------------------------------------------------
/src/test/resources/io.jenkins.plugins.adoptopenjdk.AdoptOpenJDKInstaller:
--------------------------------------------------------------------------------
1 | {
2 | "data": [
3 | {
4 | "name": "OpenJDK 8 - HotSpot",
5 | "releases": [
6 | {
7 | "binaries": [
8 | {
9 | "architecture": "x64",
10 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u345-b01/OpenJDK8U-jdk_x64_linux_hotspot_8u345b01.tar.gz",
11 | "openjdk_impl": "hotspot",
12 | "os": "linux"
13 | },
14 | {
15 | "architecture": "aarch64",
16 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u345-b01/OpenJDK8U-jdk_aarch64_linux_hotspot_8u345b01.tar.gz",
17 | "openjdk_impl": "hotspot",
18 | "os": "linux"
19 | },
20 | {
21 | "architecture": "x64",
22 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u345-b01/OpenJDK8U-jdk_x64_alpine-linux_hotspot_8u345b01.tar.gz",
23 | "openjdk_impl": "hotspot",
24 | "os": "alpine-linux"
25 | },
26 | {
27 | "architecture": "ppc64le",
28 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u345-b01/OpenJDK8U-jdk_ppc64le_linux_hotspot_8u345b01.tar.gz",
29 | "openjdk_impl": "hotspot",
30 | "os": "linux"
31 | },
32 | {
33 | "architecture": "x64",
34 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u345-b01/OpenJDK8U-jdk_x64_mac_hotspot_8u345b01.tar.gz",
35 | "openjdk_impl": "hotspot",
36 | "os": "mac"
37 | },
38 | {
39 | "architecture": "x64",
40 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u345-b01/OpenJDK8U-jdk_x64_solaris_hotspot_8u345b01.tar.gz",
41 | "openjdk_impl": "hotspot",
42 | "os": "solaris"
43 | },
44 | {
45 | "architecture": "arm",
46 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u345-b01/OpenJDK8U-jdk_arm_linux_hotspot_8u345b01.tar.gz",
47 | "openjdk_impl": "hotspot",
48 | "os": "linux"
49 | },
50 | {
51 | "architecture": "x64",
52 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u345-b01/OpenJDK8U-jdk_x64_windows_hotspot_8u345b01.zip",
53 | "openjdk_impl": "hotspot",
54 | "os": "windows"
55 | },
56 | {
57 | "architecture": "x32",
58 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u345-b01/OpenJDK8U-jdk_x86-32_windows_hotspot_8u345b01.zip",
59 | "openjdk_impl": "hotspot",
60 | "os": "windows"
61 | },
62 | {
63 | "architecture": "ppc64",
64 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u345-b01/OpenJDK8U-jdk_ppc64_aix_hotspot_8u345b01.tar.gz",
65 | "openjdk_impl": "hotspot",
66 | "os": "aix"
67 | },
68 | {
69 | "architecture": "sparcv9",
70 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u345-b01/OpenJDK8U-jdk_sparcv9_solaris_hotspot_8u345b01.tar.gz",
71 | "openjdk_impl": "hotspot",
72 | "os": "solaris"
73 | }
74 | ],
75 | "openjdk_impl": "hotspot",
76 | "release_name": "jdk8u345-b01"
77 | },
78 | {
79 | "binaries": [
80 | {
81 | "architecture": "x64",
82 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u342-b07.1/OpenJDK8U-jdk_x64_windows_hotspot_8u342b07.zip",
83 | "openjdk_impl": "hotspot",
84 | "os": "windows"
85 | }
86 | ],
87 | "openjdk_impl": "hotspot",
88 | "release_name": "jdk8u342-b07.1"
89 | },
90 | {
91 | "binaries": [
92 | {
93 | "architecture": "x64",
94 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u342-b07/OpenJDK8U-jdk_x64_linux_hotspot_8u342b07.tar.gz",
95 | "openjdk_impl": "hotspot",
96 | "os": "linux"
97 | },
98 | {
99 | "architecture": "x64",
100 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u342-b07/OpenJDK8U-jdk_x64_windows_hotspot_8u342b07.zip",
101 | "openjdk_impl": "hotspot",
102 | "os": "windows"
103 | },
104 | {
105 | "architecture": "ppc64le",
106 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u342-b07/OpenJDK8U-jdk_ppc64le_linux_hotspot_8u342b07.tar.gz",
107 | "openjdk_impl": "hotspot",
108 | "os": "linux"
109 | },
110 | {
111 | "architecture": "x64",
112 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u342-b07/OpenJDK8U-jdk_x64_alpine-linux_hotspot_8u342b07.tar.gz",
113 | "openjdk_impl": "hotspot",
114 | "os": "alpine-linux"
115 | },
116 | {
117 | "architecture": "aarch64",
118 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u342-b07/OpenJDK8U-jdk_aarch64_linux_hotspot_8u342b07.tar.gz",
119 | "openjdk_impl": "hotspot",
120 | "os": "linux"
121 | },
122 | {
123 | "architecture": "x32",
124 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u342-b07/OpenJDK8U-jdk_x86-32_windows_hotspot_8u342b07.zip",
125 | "openjdk_impl": "hotspot",
126 | "os": "windows"
127 | },
128 | {
129 | "architecture": "ppc64",
130 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u342-b07/OpenJDK8U-jdk_ppc64_aix_hotspot_8u342b07.tar.gz",
131 | "openjdk_impl": "hotspot",
132 | "os": "aix"
133 | },
134 | {
135 | "architecture": "arm",
136 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u342-b07/OpenJDK8U-jdk_arm_linux_hotspot_8u342b07.tar.gz",
137 | "openjdk_impl": "hotspot",
138 | "os": "linux"
139 | }
140 | ],
141 | "openjdk_impl": "hotspot",
142 | "release_name": "jdk8u342-b07"
143 | },
144 | {
145 | "binaries": [
146 | {
147 | "architecture": "x64",
148 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u332-b09/OpenJDK8U-jdk_x64_linux_hotspot_8u332b09.tar.gz",
149 | "openjdk_impl": "hotspot",
150 | "os": "linux"
151 | },
152 | {
153 | "architecture": "aarch64",
154 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u332-b09/OpenJDK8U-jdk_aarch64_linux_hotspot_8u332b09.tar.gz",
155 | "openjdk_impl": "hotspot",
156 | "os": "linux"
157 | },
158 | {
159 | "architecture": "x64",
160 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u332-b09/OpenJDK8U-jdk_x64_mac_hotspot_8u332b09.tar.gz",
161 | "openjdk_impl": "hotspot",
162 | "os": "mac"
163 | },
164 | {
165 | "architecture": "x64",
166 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u332-b09/OpenJDK8U-jdk_x64_solaris_hotspot_8u332b09.tar.gz",
167 | "openjdk_impl": "hotspot",
168 | "os": "solaris"
169 | },
170 | {
171 | "architecture": "x64",
172 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u332-b09/OpenJDK8U-jdk_x64_alpine-linux_hotspot_8u332b09.tar.gz",
173 | "openjdk_impl": "hotspot",
174 | "os": "alpine-linux"
175 | },
176 | {
177 | "architecture": "ppc64le",
178 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u332-b09/OpenJDK8U-jdk_ppc64le_linux_hotspot_8u332b09.tar.gz",
179 | "openjdk_impl": "hotspot",
180 | "os": "linux"
181 | },
182 | {
183 | "architecture": "arm",
184 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u332-b09/OpenJDK8U-jdk_arm_linux_hotspot_8u332b09.tar.gz",
185 | "openjdk_impl": "hotspot",
186 | "os": "linux"
187 | },
188 | {
189 | "architecture": "x64",
190 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u332-b09/OpenJDK8U-jdk_x64_windows_hotspot_8u332b09.zip",
191 | "openjdk_impl": "hotspot",
192 | "os": "windows"
193 | },
194 | {
195 | "architecture": "x32",
196 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u332-b09/OpenJDK8U-jdk_x86-32_windows_hotspot_8u332b09.zip",
197 | "openjdk_impl": "hotspot",
198 | "os": "windows"
199 | },
200 | {
201 | "architecture": "ppc64",
202 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u332-b09/OpenJDK8U-jdk_ppc64_aix_hotspot_8u332b09.tar.gz",
203 | "openjdk_impl": "hotspot",
204 | "os": "aix"
205 | },
206 | {
207 | "architecture": "sparcv9",
208 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u332-b09/OpenJDK8U-jdk_sparcv9_solaris_hotspot_8u332b09.tar.gz",
209 | "openjdk_impl": "hotspot",
210 | "os": "solaris"
211 | }
212 | ],
213 | "openjdk_impl": "hotspot",
214 | "release_name": "jdk8u332-b09"
215 | },
216 | {
217 | "binaries": [
218 | {
219 | "architecture": "x64",
220 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u322-b06/OpenJDK8U-jdk_x64_mac_hotspot_8u322b06.tar.gz",
221 | "openjdk_impl": "hotspot",
222 | "os": "mac"
223 | },
224 | {
225 | "architecture": "x64",
226 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u322-b06/OpenJDK8U-jdk_x64_windows_hotspot_8u322b06.zip",
227 | "openjdk_impl": "hotspot",
228 | "os": "windows"
229 | },
230 | {
231 | "architecture": "x64",
232 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u322-b06/OpenJDK8U-jdk_x64_linux_hotspot_8u322b06.tar.gz",
233 | "openjdk_impl": "hotspot",
234 | "os": "linux"
235 | },
236 | {
237 | "architecture": "aarch64",
238 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u322-b06/OpenJDK8U-jdk_aarch64_linux_hotspot_8u322b06.tar.gz",
239 | "openjdk_impl": "hotspot",
240 | "os": "linux"
241 | },
242 | {
243 | "architecture": "ppc64",
244 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u322-b06/OpenJDK8U-jdk_ppc64_aix_hotspot_8u322b06.tar.gz",
245 | "openjdk_impl": "hotspot",
246 | "os": "aix"
247 | },
248 | {
249 | "architecture": "ppc64le",
250 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u322-b06/OpenJDK8U-jdk_ppc64le_linux_hotspot_8u322b06.tar.gz",
251 | "openjdk_impl": "hotspot",
252 | "os": "linux"
253 | },
254 | {
255 | "architecture": "sparcv9",
256 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u322-b06/OpenJDK8U-jdk_sparcv9_solaris_hotspot_8u322b06.tar.gz",
257 | "openjdk_impl": "hotspot",
258 | "os": "solaris"
259 | },
260 | {
261 | "architecture": "x64",
262 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u322-b06/OpenJDK8U-jdk_x64_solaris_hotspot_8u322b06.tar.gz",
263 | "openjdk_impl": "hotspot",
264 | "os": "solaris"
265 | },
266 | {
267 | "architecture": "x32",
268 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u322-b06/OpenJDK8U-jdk_x86-32_windows_hotspot_8u322b06.zip",
269 | "openjdk_impl": "hotspot",
270 | "os": "windows"
271 | },
272 | {
273 | "architecture": "arm",
274 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u322-b06/OpenJDK8U-jdk_arm_linux_hotspot_8u322b06.tar.gz",
275 | "openjdk_impl": "hotspot",
276 | "os": "linux"
277 | },
278 | {
279 | "architecture": "x64",
280 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u322-b06/OpenJDK8U-jdk_x64_alpine-linux_hotspot_8u322b06.tar.gz",
281 | "openjdk_impl": "hotspot",
282 | "os": "alpine-linux"
283 | }
284 | ],
285 | "openjdk_impl": "hotspot",
286 | "release_name": "jdk8u322-b06"
287 | },
288 | {
289 | "binaries": [
290 | {
291 | "architecture": "x64",
292 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u312-b07/OpenJDK8U-jdk_x64_linux_hotspot_8u312b07.tar.gz",
293 | "openjdk_impl": "hotspot",
294 | "os": "linux"
295 | },
296 | {
297 | "architecture": "x64",
298 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u312-b07/OpenJDK8U-jdk_x64_windows_hotspot_8u312b07.zip",
299 | "openjdk_impl": "hotspot",
300 | "os": "windows"
301 | },
302 | {
303 | "architecture": "aarch64",
304 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u312-b07/OpenJDK8U-jdk_aarch64_linux_hotspot_8u312b07.tar.gz",
305 | "openjdk_impl": "hotspot",
306 | "os": "linux"
307 | },
308 | {
309 | "architecture": "x64",
310 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u312-b07/OpenJDK8U-jdk_x64_mac_hotspot_8u312b07.tar.gz",
311 | "openjdk_impl": "hotspot",
312 | "os": "mac"
313 | },
314 | {
315 | "architecture": "ppc64",
316 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u312-b07/OpenJDK8U-jdk_ppc64_aix_hotspot_8u312b07.tar.gz",
317 | "openjdk_impl": "hotspot",
318 | "os": "aix"
319 | },
320 | {
321 | "architecture": "x32",
322 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u312-b07/OpenJDK8U-jdk_x86-32_windows_hotspot_8u312b07.zip",
323 | "openjdk_impl": "hotspot",
324 | "os": "windows"
325 | },
326 | {
327 | "architecture": "ppc64le",
328 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u312-b07/OpenJDK8U-jdk_ppc64le_linux_hotspot_8u312b07.tar.gz",
329 | "openjdk_impl": "hotspot",
330 | "os": "linux"
331 | },
332 | {
333 | "architecture": "arm",
334 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u312-b07/OpenJDK8U-jdk_arm_linux_hotspot_8u312b07.tar.gz",
335 | "openjdk_impl": "hotspot",
336 | "os": "linux"
337 | },
338 | {
339 | "architecture": "sparcv9",
340 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u312-b07/OpenJDK8U-jdk_sparcv9_solaris_hotspot_8u312b07.tar.gz",
341 | "openjdk_impl": "hotspot",
342 | "os": "solaris"
343 | },
344 | {
345 | "architecture": "x64",
346 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u312-b07/OpenJDK8U-jdk_x64_solaris_hotspot_8u312b07.tar.gz",
347 | "openjdk_impl": "hotspot",
348 | "os": "solaris"
349 | }
350 | ],
351 | "openjdk_impl": "hotspot",
352 | "release_name": "jdk8u312-b07"
353 | },
354 | {
355 | "binaries": [
356 | {
357 | "architecture": "x64",
358 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u302-b08.1/OpenJDK8U-jdk_x64_windows_hotspot_8u302b08.zip",
359 | "openjdk_impl": "hotspot",
360 | "os": "windows"
361 | }
362 | ],
363 | "openjdk_impl": "hotspot",
364 | "release_name": "jdk8u302-b08.1"
365 | },
366 | {
367 | "binaries": [
368 | {
369 | "architecture": "x64",
370 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u302-b08/OpenJDK8U-jdk_x64_linux_hotspot_8u302b08.tar.gz",
371 | "openjdk_impl": "hotspot",
372 | "os": "linux"
373 | },
374 | {
375 | "architecture": "x64",
376 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u302-b08/OpenJDK8U-jdk_x64_mac_hotspot_8u302b08.tar.gz",
377 | "openjdk_impl": "hotspot",
378 | "os": "mac"
379 | },
380 | {
381 | "architecture": "x64",
382 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u302-b08/OpenJDK8U-jdk_x64_windows_hotspot_8u302b08.zip",
383 | "openjdk_impl": "hotspot",
384 | "os": "windows"
385 | },
386 | {
387 | "architecture": "aarch64",
388 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u302-b08/OpenJDK8U-jdk_aarch64_linux_hotspot_8u302b08.tar.gz",
389 | "openjdk_impl": "hotspot",
390 | "os": "linux"
391 | },
392 | {
393 | "architecture": "ppc64le",
394 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u302-b08/OpenJDK8U-jdk_ppc64le_linux_hotspot_8u302b08.tar.gz",
395 | "openjdk_impl": "hotspot",
396 | "os": "linux"
397 | },
398 | {
399 | "architecture": "ppc64",
400 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u302-b08/OpenJDK8U-jdk_ppc64_aix_hotspot_8u302b08.tar.gz",
401 | "openjdk_impl": "hotspot",
402 | "os": "aix"
403 | },
404 | {
405 | "architecture": "x32",
406 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u302-b08/OpenJDK8U-jdk_x86-32_windows_hotspot_8u302b08.zip",
407 | "openjdk_impl": "hotspot",
408 | "os": "windows"
409 | },
410 | {
411 | "architecture": "arm",
412 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u302-b08/OpenJDK8U-jdk_arm_linux_hotspot_8u302b08.tar.gz",
413 | "openjdk_impl": "hotspot",
414 | "os": "linux"
415 | },
416 | {
417 | "architecture": "sparcv9",
418 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u302-b08/OpenJDK8U-jdk_sparcv9_solaris_hotspot_8u302b08.tar.gz",
419 | "openjdk_impl": "hotspot",
420 | "os": "solaris"
421 | },
422 | {
423 | "architecture": "x64",
424 | "binary_link": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u302-b08/OpenJDK8U-jdk_x64_solaris_hotspot_8u302b08.tar.gz",
425 | "openjdk_impl": "hotspot",
426 | "os": "solaris"
427 | }
428 | ],
429 | "openjdk_impl": "hotspot",
430 | "release_name": "jdk8u302-b08"
431 | }
432 | ]
433 | },
434 | {
435 | "name": "OpenJDK 11 - HotSpot",
436 | "releases": [
437 | {
438 | "binaries": [
439 | {
440 | "architecture": "x64",
441 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.16.1%2B1/OpenJDK11U-jdk_x64_windows_hotspot_11.0.16.1_1.zip",
442 | "openjdk_impl": "hotspot",
443 | "os": "windows"
444 | },
445 | {
446 | "architecture": "x32",
447 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.16.1%2B1/OpenJDK11U-jdk_x86-32_windows_hotspot_11.0.16.1_1.zip",
448 | "openjdk_impl": "hotspot",
449 | "os": "windows"
450 | },
451 | {
452 | "architecture": "arm",
453 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.16.1%2B1/OpenJDK11U-jdk_arm_linux_hotspot_11.0.16.1_1.tar.gz",
454 | "openjdk_impl": "hotspot",
455 | "os": "linux"
456 | },
457 | {
458 | "architecture": "x64",
459 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.16.1%2B1/OpenJDK11U-jdk_x64_alpine-linux_hotspot_11.0.16.1_1.tar.gz",
460 | "openjdk_impl": "hotspot",
461 | "os": "alpine-linux"
462 | },
463 | {
464 | "architecture": "aarch64",
465 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.16.1%2B1/OpenJDK11U-jdk_aarch64_linux_hotspot_11.0.16.1_1.tar.gz",
466 | "openjdk_impl": "hotspot",
467 | "os": "linux"
468 | },
469 | {
470 | "architecture": "x64",
471 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.16.1%2B1/OpenJDK11U-jdk_x64_linux_hotspot_11.0.16.1_1.tar.gz",
472 | "openjdk_impl": "hotspot",
473 | "os": "linux"
474 | },
475 | {
476 | "architecture": "aarch64",
477 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.16.1%2B1/OpenJDK11U-jdk_aarch64_mac_hotspot_11.0.16.1_1.tar.gz",
478 | "openjdk_impl": "hotspot",
479 | "os": "mac"
480 | },
481 | {
482 | "architecture": "s390x",
483 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.16.1%2B1/OpenJDK11U-jdk_s390x_linux_hotspot_11.0.16.1_1.tar.gz",
484 | "openjdk_impl": "hotspot",
485 | "os": "linux"
486 | },
487 | {
488 | "architecture": "ppc64le",
489 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.16.1%2B1/OpenJDK11U-jdk_ppc64le_linux_hotspot_11.0.16.1_1.tar.gz",
490 | "openjdk_impl": "hotspot",
491 | "os": "linux"
492 | },
493 | {
494 | "architecture": "x64",
495 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.16.1%2B1/OpenJDK11U-jdk_x64_mac_hotspot_11.0.16.1_1.tar.gz",
496 | "openjdk_impl": "hotspot",
497 | "os": "mac"
498 | },
499 | {
500 | "architecture": "ppc64",
501 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.16.1%2B1/OpenJDK11U-jdk_ppc64_aix_hotspot_11.0.16.1_1.tar.gz",
502 | "openjdk_impl": "hotspot",
503 | "os": "aix"
504 | }
505 | ],
506 | "openjdk_impl": "hotspot",
507 | "release_name": "jdk-11.0.16.1+1"
508 | },
509 | {
510 | "binaries": [
511 | {
512 | "architecture": "aarch64",
513 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.16%2B8/OpenJDK11U-jdk_aarch64_linux_hotspot_11.0.16_8.tar.gz",
514 | "openjdk_impl": "hotspot",
515 | "os": "linux"
516 | },
517 | {
518 | "architecture": "x64",
519 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.16%2B8/OpenJDK11U-jdk_x64_linux_hotspot_11.0.16_8.tar.gz",
520 | "openjdk_impl": "hotspot",
521 | "os": "linux"
522 | },
523 | {
524 | "architecture": "x64",
525 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.16%2B8/OpenJDK11U-jdk_x64_windows_hotspot_11.0.16_8.zip",
526 | "openjdk_impl": "hotspot",
527 | "os": "windows"
528 | },
529 | {
530 | "architecture": "x64",
531 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.16%2B8/OpenJDK11U-jdk_x64_alpine-linux_hotspot_11.0.16_8.tar.gz",
532 | "openjdk_impl": "hotspot",
533 | "os": "alpine-linux"
534 | },
535 | {
536 | "architecture": "ppc64le",
537 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.16%2B8/OpenJDK11U-jdk_ppc64le_linux_hotspot_11.0.16_8.tar.gz",
538 | "openjdk_impl": "hotspot",
539 | "os": "linux"
540 | },
541 | {
542 | "architecture": "x64",
543 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.16%2B8/OpenJDK11U-jdk_x64_mac_hotspot_11.0.16_8.tar.gz",
544 | "openjdk_impl": "hotspot",
545 | "os": "mac"
546 | },
547 | {
548 | "architecture": "arm",
549 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.16%2B8/OpenJDK11U-jdk_arm_linux_hotspot_11.0.16_8.tar.gz",
550 | "openjdk_impl": "hotspot",
551 | "os": "linux"
552 | },
553 | {
554 | "architecture": "x32",
555 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.16%2B8/OpenJDK11U-jdk_x86-32_windows_hotspot_11.0.16_8.zip",
556 | "openjdk_impl": "hotspot",
557 | "os": "windows"
558 | },
559 | {
560 | "architecture": "s390x",
561 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.16%2B8/OpenJDK11U-jdk_s390x_linux_hotspot_11.0.16_8.tar.gz",
562 | "openjdk_impl": "hotspot",
563 | "os": "linux"
564 | },
565 | {
566 | "architecture": "ppc64",
567 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.16%2B8/OpenJDK11U-jdk_ppc64_aix_hotspot_11.0.16_8.tar.gz",
568 | "openjdk_impl": "hotspot",
569 | "os": "aix"
570 | },
571 | {
572 | "architecture": "aarch64",
573 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.16%2B8/OpenJDK11U-jdk_aarch64_mac_hotspot_11.0.16_8.tar.gz",
574 | "openjdk_impl": "hotspot",
575 | "os": "mac"
576 | }
577 | ],
578 | "openjdk_impl": "hotspot",
579 | "release_name": "jdk-11.0.16+8"
580 | },
581 | {
582 | "binaries": [
583 | {
584 | "architecture": "x64",
585 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.15%2B10/OpenJDK11U-jdk_x64_linux_hotspot_11.0.15_10.tar.gz",
586 | "openjdk_impl": "hotspot",
587 | "os": "linux"
588 | },
589 | {
590 | "architecture": "x64",
591 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.15%2B10/OpenJDK11U-jdk_x64_windows_hotspot_11.0.15_10.zip",
592 | "openjdk_impl": "hotspot",
593 | "os": "windows"
594 | },
595 | {
596 | "architecture": "x64",
597 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.15%2B10/OpenJDK11U-jdk_x64_mac_hotspot_11.0.15_10.tar.gz",
598 | "openjdk_impl": "hotspot",
599 | "os": "mac"
600 | },
601 | {
602 | "architecture": "aarch64",
603 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.15%2B10/OpenJDK11U-jdk_aarch64_linux_hotspot_11.0.15_10.tar.gz",
604 | "openjdk_impl": "hotspot",
605 | "os": "linux"
606 | },
607 | {
608 | "architecture": "s390x",
609 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.15%2B10/OpenJDK11U-jdk_s390x_linux_hotspot_11.0.15_10.tar.gz",
610 | "openjdk_impl": "hotspot",
611 | "os": "linux"
612 | },
613 | {
614 | "architecture": "x64",
615 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.15%2B10/OpenJDK11U-jdk_x64_alpine-linux_hotspot_11.0.15_10.tar.gz",
616 | "openjdk_impl": "hotspot",
617 | "os": "alpine-linux"
618 | },
619 | {
620 | "architecture": "ppc64le",
621 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.15%2B10/OpenJDK11U-jdk_ppc64le_linux_hotspot_11.0.15_10.tar.gz",
622 | "openjdk_impl": "hotspot",
623 | "os": "linux"
624 | },
625 | {
626 | "architecture": "arm",
627 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.15%2B10/OpenJDK11U-jdk_arm_linux_hotspot_11.0.15_10.tar.gz",
628 | "openjdk_impl": "hotspot",
629 | "os": "linux"
630 | },
631 | {
632 | "architecture": "x32",
633 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.15%2B10/OpenJDK11U-jdk_x86-32_windows_hotspot_11.0.15_10.zip",
634 | "openjdk_impl": "hotspot",
635 | "os": "windows"
636 | },
637 | {
638 | "architecture": "ppc64",
639 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.15%2B10/OpenJDK11U-jdk_ppc64_aix_hotspot_11.0.15_10.tar.gz",
640 | "openjdk_impl": "hotspot",
641 | "os": "aix"
642 | },
643 | {
644 | "architecture": "aarch64",
645 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.15%2B10/OpenJDK11U-jdk_aarch64_mac_hotspot_11.0.15_10.tar.gz",
646 | "openjdk_impl": "hotspot",
647 | "os": "mac"
648 | }
649 | ],
650 | "openjdk_impl": "hotspot",
651 | "release_name": "jdk-11.0.15+10"
652 | },
653 | {
654 | "binaries": [
655 | {
656 | "architecture": "x64",
657 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.14.1%2B1/OpenJDK11U-jdk_x64_mac_hotspot_11.0.14.1_1.tar.gz",
658 | "openjdk_impl": "hotspot",
659 | "os": "mac"
660 | },
661 | {
662 | "architecture": "x64",
663 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.14.1%2B1/OpenJDK11U-jdk_x64_windows_hotspot_11.0.14.1_1.zip",
664 | "openjdk_impl": "hotspot",
665 | "os": "windows"
666 | },
667 | {
668 | "architecture": "x32",
669 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.14.1%2B1/OpenJDK11U-jdk_x86-32_windows_hotspot_11.0.14.1_1.zip",
670 | "openjdk_impl": "hotspot",
671 | "os": "windows"
672 | },
673 | {
674 | "architecture": "aarch64",
675 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.14.1%2B1/OpenJDK11U-jdk_aarch64_linux_hotspot_11.0.14.1_1.tar.gz",
676 | "openjdk_impl": "hotspot",
677 | "os": "linux"
678 | },
679 | {
680 | "architecture": "arm",
681 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.14.1%2B1/OpenJDK11U-jdk_arm_linux_hotspot_11.0.14.1_1.tar.gz",
682 | "openjdk_impl": "hotspot",
683 | "os": "linux"
684 | },
685 | {
686 | "architecture": "ppc64",
687 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.14.1%2B1/OpenJDK11U-jdk_ppc64_aix_hotspot_11.0.14.1_1.tar.gz",
688 | "openjdk_impl": "hotspot",
689 | "os": "aix"
690 | },
691 | {
692 | "architecture": "ppc64le",
693 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.14.1%2B1/OpenJDK11U-jdk_ppc64le_linux_hotspot_11.0.14.1_1.tar.gz",
694 | "openjdk_impl": "hotspot",
695 | "os": "linux"
696 | },
697 | {
698 | "architecture": "s390x",
699 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.14.1%2B1/OpenJDK11U-jdk_s390x_linux_hotspot_11.0.14.1_1.tar.gz",
700 | "openjdk_impl": "hotspot",
701 | "os": "linux"
702 | },
703 | {
704 | "architecture": "x64",
705 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.14.1%2B1/OpenJDK11U-jdk_x64_linux_hotspot_11.0.14.1_1.tar.gz",
706 | "openjdk_impl": "hotspot",
707 | "os": "linux"
708 | },
709 | {
710 | "architecture": "x64",
711 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.14.1%2B1/OpenJDK11U-jdk_x64_alpine-linux_hotspot_11.0.14.1_1.tar.gz",
712 | "openjdk_impl": "hotspot",
713 | "os": "alpine-linux"
714 | }
715 | ],
716 | "openjdk_impl": "hotspot",
717 | "release_name": "jdk-11.0.14.1+1"
718 | },
719 | {
720 | "binaries": [
721 | {
722 | "architecture": "aarch64",
723 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.14%2B9/OpenJDK11U-jdk_aarch64_linux_hotspot_11.0.14_9.tar.gz",
724 | "openjdk_impl": "hotspot",
725 | "os": "linux"
726 | },
727 | {
728 | "architecture": "ppc64",
729 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.14%2B9/OpenJDK11U-jdk_ppc64_aix_hotspot_11.0.14_9.tar.gz",
730 | "openjdk_impl": "hotspot",
731 | "os": "aix"
732 | },
733 | {
734 | "architecture": "x64",
735 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.14%2B9/OpenJDK11U-jdk_x64_linux_hotspot_11.0.14_9.tar.gz",
736 | "openjdk_impl": "hotspot",
737 | "os": "linux"
738 | },
739 | {
740 | "architecture": "x64",
741 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.14%2B9/OpenJDK11U-jdk_x64_mac_hotspot_11.0.14_9.tar.gz",
742 | "openjdk_impl": "hotspot",
743 | "os": "mac"
744 | },
745 | {
746 | "architecture": "x64",
747 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.14%2B9/OpenJDK11U-jdk_x64_windows_hotspot_11.0.14_9.zip",
748 | "openjdk_impl": "hotspot",
749 | "os": "windows"
750 | },
751 | {
752 | "architecture": "ppc64le",
753 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.14%2B9/OpenJDK11U-jdk_ppc64le_linux_hotspot_11.0.14_9.tar.gz",
754 | "openjdk_impl": "hotspot",
755 | "os": "linux"
756 | },
757 | {
758 | "architecture": "x64",
759 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.14%2B9/OpenJDK11U-jdk_x64_alpine-linux_hotspot_11.0.14_9.tar.gz",
760 | "openjdk_impl": "hotspot",
761 | "os": "alpine-linux"
762 | },
763 | {
764 | "architecture": "s390x",
765 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.14%2B9/OpenJDK11U-jdk_s390x_linux_hotspot_11.0.14_9.tar.gz",
766 | "openjdk_impl": "hotspot",
767 | "os": "linux"
768 | },
769 | {
770 | "architecture": "arm",
771 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.14%2B9/OpenJDK11U-jdk_arm_linux_hotspot_11.0.14_9.tar.gz",
772 | "openjdk_impl": "hotspot",
773 | "os": "linux"
774 | },
775 | {
776 | "architecture": "x32",
777 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.14%2B9/OpenJDK11U-jdk_x86-32_windows_hotspot_11.0.14_9.zip",
778 | "openjdk_impl": "hotspot",
779 | "os": "windows"
780 | }
781 | ],
782 | "openjdk_impl": "hotspot",
783 | "release_name": "jdk-11.0.14+9"
784 | },
785 | {
786 | "binaries": [
787 | {
788 | "architecture": "x64",
789 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.13%2B8/OpenJDK11U-jdk_x64_linux_hotspot_11.0.13_8.tar.gz",
790 | "openjdk_impl": "hotspot",
791 | "os": "linux"
792 | },
793 | {
794 | "architecture": "aarch64",
795 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.13%2B8/OpenJDK11U-jdk_aarch64_linux_hotspot_11.0.13_8.tar.gz",
796 | "openjdk_impl": "hotspot",
797 | "os": "linux"
798 | },
799 | {
800 | "architecture": "s390x",
801 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.13%2B8/OpenJDK11U-jdk_s390x_linux_hotspot_11.0.13_8.tar.gz",
802 | "openjdk_impl": "hotspot",
803 | "os": "linux"
804 | },
805 | {
806 | "architecture": "x64",
807 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.13%2B8/OpenJDK11U-jdk_x64_windows_hotspot_11.0.13_8.zip",
808 | "openjdk_impl": "hotspot",
809 | "os": "windows"
810 | },
811 | {
812 | "architecture": "x64",
813 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.13%2B8/OpenJDK11U-jdk_x64_alpine-linux_hotspot_11.0.13_8.tar.gz",
814 | "openjdk_impl": "hotspot",
815 | "os": "alpine-linux"
816 | },
817 | {
818 | "architecture": "x64",
819 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.13%2B8/OpenJDK11U-jdk_x64_mac_hotspot_11.0.13_8.tar.gz",
820 | "openjdk_impl": "hotspot",
821 | "os": "mac"
822 | },
823 | {
824 | "architecture": "arm",
825 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.13%2B8/OpenJDK11U-jdk_arm_linux_hotspot_11.0.13_8.tar.gz",
826 | "openjdk_impl": "hotspot",
827 | "os": "linux"
828 | },
829 | {
830 | "architecture": "ppc64le",
831 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.13%2B8/OpenJDK11U-jdk_ppc64le_linux_hotspot_11.0.13_8.tar.gz",
832 | "openjdk_impl": "hotspot",
833 | "os": "linux"
834 | },
835 | {
836 | "architecture": "x32",
837 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.13%2B8/OpenJDK11U-jdk_x86-32_windows_hotspot_11.0.13_8.zip",
838 | "openjdk_impl": "hotspot",
839 | "os": "windows"
840 | },
841 | {
842 | "architecture": "ppc64",
843 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.13%2B8/OpenJDK11U-jdk_ppc64_aix_hotspot_11.0.13_8.tar.gz",
844 | "openjdk_impl": "hotspot",
845 | "os": "aix"
846 | }
847 | ],
848 | "openjdk_impl": "hotspot",
849 | "release_name": "jdk-11.0.13+8"
850 | },
851 | {
852 | "binaries": [
853 | {
854 | "architecture": "x64",
855 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.12%2B7/OpenJDK11U-jdk_x64_linux_hotspot_11.0.12_7.tar.gz",
856 | "openjdk_impl": "hotspot",
857 | "os": "linux"
858 | },
859 | {
860 | "architecture": "x64",
861 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.12%2B7/OpenJDK11U-jdk_x64_mac_hotspot_11.0.12_7.tar.gz",
862 | "openjdk_impl": "hotspot",
863 | "os": "mac"
864 | },
865 | {
866 | "architecture": "x64",
867 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.12%2B7/OpenJDK11U-jdk_x64_windows_hotspot_11.0.12_7.zip",
868 | "openjdk_impl": "hotspot",
869 | "os": "windows"
870 | },
871 | {
872 | "architecture": "aarch64",
873 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.12%2B7/OpenJDK11U-jdk_aarch64_linux_hotspot_11.0.12_7.tar.gz",
874 | "openjdk_impl": "hotspot",
875 | "os": "linux"
876 | },
877 | {
878 | "architecture": "ppc64le",
879 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.12%2B7/OpenJDK11U-jdk_ppc64le_linux_hotspot_11.0.12_7.tar.gz",
880 | "openjdk_impl": "hotspot",
881 | "os": "linux"
882 | },
883 | {
884 | "architecture": "ppc64",
885 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.12%2B7/OpenJDK11U-jdk_ppc64_aix_hotspot_11.0.12_7.tar.gz",
886 | "openjdk_impl": "hotspot",
887 | "os": "aix"
888 | },
889 | {
890 | "architecture": "s390x",
891 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.12%2B7/OpenJDK11U-jdk_s390x_linux_hotspot_11.0.12_7.tar.gz",
892 | "openjdk_impl": "hotspot",
893 | "os": "linux"
894 | },
895 | {
896 | "architecture": "x32",
897 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.12%2B7/OpenJDK11U-jdk_x86-32_windows_hotspot_11.0.12_7.zip",
898 | "openjdk_impl": "hotspot",
899 | "os": "windows"
900 | },
901 | {
902 | "architecture": "arm",
903 | "binary_link": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.12%2B7/OpenJDK11U-jdk_arm_linux_hotspot_11.0.12_7.tar.gz",
904 | "openjdk_impl": "hotspot",
905 | "os": "linux"
906 | }
907 | ],
908 | "openjdk_impl": "hotspot",
909 | "release_name": "jdk-11.0.12+7"
910 | }
911 | ]
912 | },
913 | {
914 | "name": "OpenJDK 16 - HotSpot",
915 | "releases": [
916 | {
917 | "binaries": [
918 | {
919 | "architecture": "x64",
920 | "binary_link": "https://github.com/adoptium/temurin16-binaries/releases/download/jdk-16.0.2%2B7/OpenJDK16U-jdk_x64_linux_hotspot_16.0.2_7.tar.gz",
921 | "openjdk_impl": "hotspot",
922 | "os": "linux"
923 | },
924 | {
925 | "architecture": "x64",
926 | "binary_link": "https://github.com/adoptium/temurin16-binaries/releases/download/jdk-16.0.2%2B7/OpenJDK16U-jdk_x64_mac_hotspot_16.0.2_7.tar.gz",
927 | "openjdk_impl": "hotspot",
928 | "os": "mac"
929 | },
930 | {
931 | "architecture": "x64",
932 | "binary_link": "https://github.com/adoptium/temurin16-binaries/releases/download/jdk-16.0.2%2B7/OpenJDK16U-jdk_x64_windows_hotspot_16.0.2_7.zip",
933 | "openjdk_impl": "hotspot",
934 | "os": "windows"
935 | },
936 | {
937 | "architecture": "aarch64",
938 | "binary_link": "https://github.com/adoptium/temurin16-binaries/releases/download/jdk-16.0.2%2B7/OpenJDK16U-jdk_aarch64_linux_hotspot_16.0.2_7.tar.gz",
939 | "openjdk_impl": "hotspot",
940 | "os": "linux"
941 | },
942 | {
943 | "architecture": "ppc64le",
944 | "binary_link": "https://github.com/adoptium/temurin16-binaries/releases/download/jdk-16.0.2%2B7/OpenJDK16U-jdk_ppc64le_linux_hotspot_16.0.2_7.tar.gz",
945 | "openjdk_impl": "hotspot",
946 | "os": "linux"
947 | },
948 | {
949 | "architecture": "s390x",
950 | "binary_link": "https://github.com/adoptium/temurin16-binaries/releases/download/jdk-16.0.2%2B7/OpenJDK16U-jdk_s390x_linux_hotspot_16.0.2_7.tar.gz",
951 | "openjdk_impl": "hotspot",
952 | "os": "linux"
953 | },
954 | {
955 | "architecture": "x32",
956 | "binary_link": "https://github.com/adoptium/temurin16-binaries/releases/download/jdk-16.0.2%2B7/OpenJDK16U-jdk_x86-32_windows_hotspot_16.0.2_7.zip",
957 | "openjdk_impl": "hotspot",
958 | "os": "windows"
959 | },
960 | {
961 | "architecture": "x64",
962 | "binary_link": "https://github.com/adoptium/temurin16-binaries/releases/download/jdk-16.0.2%2B7/OpenJDK16U-jdk_x64_alpine-linux_hotspot_16.0.2_7.tar.gz",
963 | "openjdk_impl": "hotspot",
964 | "os": "alpine-linux"
965 | },
966 | {
967 | "architecture": "arm",
968 | "binary_link": "https://github.com/adoptium/temurin16-binaries/releases/download/jdk-16.0.2%2B7/OpenJDK16U-jdk_arm_linux_hotspot_16.0.2_7.tar.gz",
969 | "openjdk_impl": "hotspot",
970 | "os": "linux"
971 | }
972 | ],
973 | "openjdk_impl": "hotspot",
974 | "release_name": "jdk-16.0.2+7"
975 | }
976 | ]
977 | },
978 | {
979 | "name": "OpenJDK 17 - HotSpot",
980 | "releases": [
981 | {
982 | "binaries": [
983 | {
984 | "architecture": "s390x",
985 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.4.1%2B1/OpenJDK17U-jdk_s390x_linux_hotspot_17.0.4.1_1.tar.gz",
986 | "openjdk_impl": "hotspot",
987 | "os": "linux"
988 | },
989 | {
990 | "architecture": "aarch64",
991 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.4.1%2B1/OpenJDK17U-jdk_aarch64_linux_hotspot_17.0.4.1_1.tar.gz",
992 | "openjdk_impl": "hotspot",
993 | "os": "linux"
994 | },
995 | {
996 | "architecture": "x64",
997 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.4.1%2B1/OpenJDK17U-jdk_x64_linux_hotspot_17.0.4.1_1.tar.gz",
998 | "openjdk_impl": "hotspot",
999 | "os": "linux"
1000 | },
1001 | {
1002 | "architecture": "ppc64le",
1003 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.4.1%2B1/OpenJDK17U-jdk_ppc64le_linux_hotspot_17.0.4.1_1.tar.gz",
1004 | "openjdk_impl": "hotspot",
1005 | "os": "linux"
1006 | },
1007 | {
1008 | "architecture": "arm",
1009 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.4.1%2B1/OpenJDK17U-jdk_arm_linux_hotspot_17.0.4.1_1.tar.gz",
1010 | "openjdk_impl": "hotspot",
1011 | "os": "linux"
1012 | },
1013 | {
1014 | "architecture": "x64",
1015 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.4.1%2B1/OpenJDK17U-jdk_x64_alpine-linux_hotspot_17.0.4.1_1.tar.gz",
1016 | "openjdk_impl": "hotspot",
1017 | "os": "alpine-linux"
1018 | },
1019 | {
1020 | "architecture": "aarch64",
1021 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.4.1%2B1/OpenJDK17U-jdk_aarch64_mac_hotspot_17.0.4.1_1.tar.gz",
1022 | "openjdk_impl": "hotspot",
1023 | "os": "mac"
1024 | },
1025 | {
1026 | "architecture": "x64",
1027 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.4.1%2B1/OpenJDK17U-jdk_x64_windows_hotspot_17.0.4.1_1.zip",
1028 | "openjdk_impl": "hotspot",
1029 | "os": "windows"
1030 | },
1031 | {
1032 | "architecture": "x32",
1033 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.4.1%2B1/OpenJDK17U-jdk_x86-32_windows_hotspot_17.0.4.1_1.zip",
1034 | "openjdk_impl": "hotspot",
1035 | "os": "windows"
1036 | },
1037 | {
1038 | "architecture": "x64",
1039 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.4.1%2B1/OpenJDK17U-jdk_x64_mac_hotspot_17.0.4.1_1.tar.gz",
1040 | "openjdk_impl": "hotspot",
1041 | "os": "mac"
1042 | }
1043 | ],
1044 | "openjdk_impl": "hotspot",
1045 | "release_name": "jdk-17.0.4.1+1"
1046 | },
1047 | {
1048 | "binaries": [
1049 | {
1050 | "architecture": "x64",
1051 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.4%2B8/OpenJDK17U-jdk_x64_linux_hotspot_17.0.4_8.tar.gz",
1052 | "openjdk_impl": "hotspot",
1053 | "os": "linux"
1054 | },
1055 | {
1056 | "architecture": "x64",
1057 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.4%2B8/OpenJDK17U-jdk_x64_windows_hotspot_17.0.4_8.zip",
1058 | "openjdk_impl": "hotspot",
1059 | "os": "windows"
1060 | },
1061 | {
1062 | "architecture": "aarch64",
1063 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.4%2B8/OpenJDK17U-jdk_aarch64_linux_hotspot_17.0.4_8.tar.gz",
1064 | "openjdk_impl": "hotspot",
1065 | "os": "linux"
1066 | },
1067 | {
1068 | "architecture": "ppc64le",
1069 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.4%2B8/OpenJDK17U-jdk_ppc64le_linux_hotspot_17.0.4_8.tar.gz",
1070 | "openjdk_impl": "hotspot",
1071 | "os": "linux"
1072 | },
1073 | {
1074 | "architecture": "x64",
1075 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.4%2B8/OpenJDK17U-jdk_x64_alpine-linux_hotspot_17.0.4_8.tar.gz",
1076 | "openjdk_impl": "hotspot",
1077 | "os": "alpine-linux"
1078 | },
1079 | {
1080 | "architecture": "x32",
1081 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.4%2B8/OpenJDK17U-jdk_x86-32_windows_hotspot_17.0.4_8.zip",
1082 | "openjdk_impl": "hotspot",
1083 | "os": "windows"
1084 | },
1085 | {
1086 | "architecture": "arm",
1087 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.4%2B8/OpenJDK17U-jdk_arm_linux_hotspot_17.0.4_8.tar.gz",
1088 | "openjdk_impl": "hotspot",
1089 | "os": "linux"
1090 | },
1091 | {
1092 | "architecture": "s390x",
1093 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.4%2B8/OpenJDK17U-jdk_s390x_linux_hotspot_17.0.4_8.tar.gz",
1094 | "openjdk_impl": "hotspot",
1095 | "os": "linux"
1096 | },
1097 | {
1098 | "architecture": "x64",
1099 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.4%2B8/OpenJDK17U-jdk_x64_mac_hotspot_17.0.4_8.tar.gz",
1100 | "openjdk_impl": "hotspot",
1101 | "os": "mac"
1102 | },
1103 | {
1104 | "architecture": "aarch64",
1105 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.4%2B8/OpenJDK17U-jdk_aarch64_mac_hotspot_17.0.4_8.tar.gz",
1106 | "openjdk_impl": "hotspot",
1107 | "os": "mac"
1108 | }
1109 | ],
1110 | "openjdk_impl": "hotspot",
1111 | "release_name": "jdk-17.0.4+8"
1112 | },
1113 | {
1114 | "binaries": [
1115 | {
1116 | "architecture": "x64",
1117 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.3%2B7/OpenJDK17U-jdk_x64_linux_hotspot_17.0.3_7.tar.gz",
1118 | "openjdk_impl": "hotspot",
1119 | "os": "linux"
1120 | },
1121 | {
1122 | "architecture": "x64",
1123 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.3%2B7/OpenJDK17U-jdk_x64_mac_hotspot_17.0.3_7.tar.gz",
1124 | "openjdk_impl": "hotspot",
1125 | "os": "mac"
1126 | },
1127 | {
1128 | "architecture": "x64",
1129 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.3%2B7/OpenJDK17U-jdk_x64_windows_hotspot_17.0.3_7.zip",
1130 | "openjdk_impl": "hotspot",
1131 | "os": "windows"
1132 | },
1133 | {
1134 | "architecture": "aarch64",
1135 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.3%2B7/OpenJDK17U-jdk_aarch64_linux_hotspot_17.0.3_7.tar.gz",
1136 | "openjdk_impl": "hotspot",
1137 | "os": "linux"
1138 | },
1139 | {
1140 | "architecture": "ppc64le",
1141 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.3%2B7/OpenJDK17U-jdk_ppc64le_linux_hotspot_17.0.3_7.tar.gz",
1142 | "openjdk_impl": "hotspot",
1143 | "os": "linux"
1144 | },
1145 | {
1146 | "architecture": "arm",
1147 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.3%2B7/OpenJDK17U-jdk_arm_linux_hotspot_17.0.3_7.tar.gz",
1148 | "openjdk_impl": "hotspot",
1149 | "os": "linux"
1150 | },
1151 | {
1152 | "architecture": "s390x",
1153 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.3%2B7/OpenJDK17U-jdk_s390x_linux_hotspot_17.0.3_7.tar.gz",
1154 | "openjdk_impl": "hotspot",
1155 | "os": "linux"
1156 | },
1157 | {
1158 | "architecture": "x64",
1159 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.3%2B7/OpenJDK17U-jdk_x64_alpine-linux_hotspot_17.0.3_7.tar.gz",
1160 | "openjdk_impl": "hotspot",
1161 | "os": "alpine-linux"
1162 | },
1163 | {
1164 | "architecture": "x32",
1165 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.3%2B7/OpenJDK17U-jdk_x86-32_windows_hotspot_17.0.3_7.zip",
1166 | "openjdk_impl": "hotspot",
1167 | "os": "windows"
1168 | },
1169 | {
1170 | "architecture": "aarch64",
1171 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.3%2B7/OpenJDK17U-jdk_aarch64_mac_hotspot_17.0.3_7.tar.gz",
1172 | "openjdk_impl": "hotspot",
1173 | "os": "mac"
1174 | }
1175 | ],
1176 | "openjdk_impl": "hotspot",
1177 | "release_name": "jdk-17.0.3+7"
1178 | },
1179 | {
1180 | "binaries": [
1181 | {
1182 | "architecture": "aarch64",
1183 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.2%2B8/OpenJDK17U-jdk_aarch64_mac_hotspot_17.0.2_8.tar.gz",
1184 | "openjdk_impl": "hotspot",
1185 | "os": "mac"
1186 | },
1187 | {
1188 | "architecture": "x64",
1189 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.2%2B8/OpenJDK17U-jdk_x64_mac_hotspot_17.0.2_8.tar.gz",
1190 | "openjdk_impl": "hotspot",
1191 | "os": "mac"
1192 | },
1193 | {
1194 | "architecture": "x64",
1195 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.2%2B8/OpenJDK17U-jdk_x64_windows_hotspot_17.0.2_8.zip",
1196 | "openjdk_impl": "hotspot",
1197 | "os": "windows"
1198 | },
1199 | {
1200 | "architecture": "aarch64",
1201 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.2%2B8/OpenJDK17U-jdk_aarch64_linux_hotspot_17.0.2_8.tar.gz",
1202 | "openjdk_impl": "hotspot",
1203 | "os": "linux"
1204 | },
1205 | {
1206 | "architecture": "x64",
1207 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.2%2B8/OpenJDK17U-jdk_x64_alpine-linux_hotspot_17.0.2_8.tar.gz",
1208 | "openjdk_impl": "hotspot",
1209 | "os": "alpine-linux"
1210 | },
1211 | {
1212 | "architecture": "x64",
1213 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.2%2B8/OpenJDK17U-jdk_x64_linux_hotspot_17.0.2_8.tar.gz",
1214 | "openjdk_impl": "hotspot",
1215 | "os": "linux"
1216 | },
1217 | {
1218 | "architecture": "ppc64le",
1219 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.2%2B8/OpenJDK17U-jdk_ppc64le_linux_hotspot_17.0.2_8.tar.gz",
1220 | "openjdk_impl": "hotspot",
1221 | "os": "linux"
1222 | },
1223 | {
1224 | "architecture": "arm",
1225 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.2%2B8/OpenJDK17U-jdk_arm_linux_hotspot_17.0.2_8.tar.gz",
1226 | "openjdk_impl": "hotspot",
1227 | "os": "linux"
1228 | },
1229 | {
1230 | "architecture": "s390x",
1231 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.2%2B8/OpenJDK17U-jdk_s390x_linux_hotspot_17.0.2_8.tar.gz",
1232 | "openjdk_impl": "hotspot",
1233 | "os": "linux"
1234 | },
1235 | {
1236 | "architecture": "x32",
1237 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.2%2B8/OpenJDK17U-jdk_x86-32_windows_hotspot_17.0.2_8.zip",
1238 | "openjdk_impl": "hotspot",
1239 | "os": "windows"
1240 | }
1241 | ],
1242 | "openjdk_impl": "hotspot",
1243 | "release_name": "jdk-17.0.2+8"
1244 | },
1245 | {
1246 | "binaries": [
1247 | {
1248 | "architecture": "aarch64",
1249 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.1%2B12/OpenJDK17U-jdk_aarch64_linux_hotspot_17.0.1_12.tar.gz",
1250 | "openjdk_impl": "hotspot",
1251 | "os": "linux"
1252 | },
1253 | {
1254 | "architecture": "x64",
1255 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.1%2B12/OpenJDK17U-jdk_x64_linux_hotspot_17.0.1_12.tar.gz",
1256 | "openjdk_impl": "hotspot",
1257 | "os": "linux"
1258 | },
1259 | {
1260 | "architecture": "x64",
1261 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.1%2B12/OpenJDK17U-jdk_x64_mac_hotspot_17.0.1_12.tar.gz",
1262 | "openjdk_impl": "hotspot",
1263 | "os": "mac"
1264 | },
1265 | {
1266 | "architecture": "x64",
1267 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.1%2B12/OpenJDK17U-jdk_x64_windows_hotspot_17.0.1_12.zip",
1268 | "openjdk_impl": "hotspot",
1269 | "os": "windows"
1270 | },
1271 | {
1272 | "architecture": "s390x",
1273 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.1%2B12/OpenJDK17U-jdk_s390x_linux_hotspot_17.0.1_12.tar.gz",
1274 | "openjdk_impl": "hotspot",
1275 | "os": "linux"
1276 | },
1277 | {
1278 | "architecture": "aarch64",
1279 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.1%2B12/OpenJDK17U-jdk_aarch64_mac_hotspot_17.0.1_12.tar.gz",
1280 | "openjdk_impl": "hotspot",
1281 | "os": "mac"
1282 | },
1283 | {
1284 | "architecture": "x32",
1285 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.1%2B12/OpenJDK17U-jdk_x86-32_windows_hotspot_17.0.1_12.zip",
1286 | "openjdk_impl": "hotspot",
1287 | "os": "windows"
1288 | },
1289 | {
1290 | "architecture": "arm",
1291 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.1%2B12/OpenJDK17U-jdk_arm_linux_hotspot_17.0.1_12.tar.gz",
1292 | "openjdk_impl": "hotspot",
1293 | "os": "linux"
1294 | },
1295 | {
1296 | "architecture": "ppc64le",
1297 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.1%2B12/OpenJDK17U-jdk_ppc64le_linux_hotspot_17.0.1_12.tar.gz",
1298 | "openjdk_impl": "hotspot",
1299 | "os": "linux"
1300 | },
1301 | {
1302 | "architecture": "x64",
1303 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.1%2B12/OpenJDK17U-jdk_x64_alpine-linux_hotspot_17.0.1_12.tar.gz",
1304 | "openjdk_impl": "hotspot",
1305 | "os": "alpine-linux"
1306 | }
1307 | ],
1308 | "openjdk_impl": "hotspot",
1309 | "release_name": "jdk-17.0.1+12"
1310 | },
1311 | {
1312 | "binaries": [
1313 | {
1314 | "architecture": "x64",
1315 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17%2B35/OpenJDK17-jdk_x64_linux_hotspot_17_35.tar.gz",
1316 | "openjdk_impl": "hotspot",
1317 | "os": "linux"
1318 | },
1319 | {
1320 | "architecture": "x64",
1321 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17%2B35/OpenJDK17-jdk_x64_mac_hotspot_17_35.tar.gz",
1322 | "openjdk_impl": "hotspot",
1323 | "os": "mac"
1324 | },
1325 | {
1326 | "architecture": "x64",
1327 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17%2B35/OpenJDK17-jdk_x64_windows_hotspot_17_35.zip",
1328 | "openjdk_impl": "hotspot",
1329 | "os": "windows"
1330 | },
1331 | {
1332 | "architecture": "aarch64",
1333 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17%2B35/OpenJDK17-jdk_aarch64_linux_hotspot_17_35.tar.gz",
1334 | "openjdk_impl": "hotspot",
1335 | "os": "linux"
1336 | },
1337 | {
1338 | "architecture": "s390x",
1339 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17%2B35/OpenJDK17-jdk_s390x_linux_hotspot_17_35.tar.gz",
1340 | "openjdk_impl": "hotspot",
1341 | "os": "linux"
1342 | },
1343 | {
1344 | "architecture": "aarch64",
1345 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17%2B35/OpenJDK17-jdk_aarch64_mac_hotspot_17_35.tar.gz",
1346 | "openjdk_impl": "hotspot",
1347 | "os": "mac"
1348 | },
1349 | {
1350 | "architecture": "ppc64le",
1351 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17%2B35/OpenJDK17-jdk_ppc64le_linux_hotspot_17_35.tar.gz",
1352 | "openjdk_impl": "hotspot",
1353 | "os": "linux"
1354 | },
1355 | {
1356 | "architecture": "arm",
1357 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17%2B35/OpenJDK17-jdk_arm_linux_hotspot_17_35.tar.gz",
1358 | "openjdk_impl": "hotspot",
1359 | "os": "linux"
1360 | },
1361 | {
1362 | "architecture": "x32",
1363 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17%2B35/OpenJDK17-jdk_x86-32_windows_hotspot_17_35.zip",
1364 | "openjdk_impl": "hotspot",
1365 | "os": "windows"
1366 | },
1367 | {
1368 | "architecture": "x64",
1369 | "binary_link": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17%2B35/OpenJDK17-jdk_x64_alpine-linux_hotspot_17_35.tar.gz",
1370 | "openjdk_impl": "hotspot",
1371 | "os": "alpine-linux"
1372 | }
1373 | ],
1374 | "openjdk_impl": "hotspot",
1375 | "release_name": "jdk-17+35"
1376 | }
1377 | ]
1378 | },
1379 | {
1380 | "name": "OpenJDK 18 - HotSpot",
1381 | "releases": [
1382 | {
1383 | "binaries": [
1384 | {
1385 | "architecture": "x64",
1386 | "binary_link": "https://github.com/adoptium/temurin18-binaries/releases/download/jdk-18.0.2.1%2B1/OpenJDK18U-jdk_x64_windows_hotspot_18.0.2.1_1.zip",
1387 | "openjdk_impl": "hotspot",
1388 | "os": "windows"
1389 | },
1390 | {
1391 | "architecture": "x32",
1392 | "binary_link": "https://github.com/adoptium/temurin18-binaries/releases/download/jdk-18.0.2.1%2B1/OpenJDK18U-jdk_x86-32_windows_hotspot_18.0.2.1_1.zip",
1393 | "openjdk_impl": "hotspot",
1394 | "os": "windows"
1395 | },
1396 | {
1397 | "architecture": "aarch64",
1398 | "binary_link": "https://github.com/adoptium/temurin18-binaries/releases/download/jdk-18.0.2.1%2B1/OpenJDK18U-jdk_aarch64_mac_hotspot_18.0.2.1_1.tar.gz",
1399 | "openjdk_impl": "hotspot",
1400 | "os": "mac"
1401 | },
1402 | {
1403 | "architecture": "x64",
1404 | "binary_link": "https://github.com/adoptium/temurin18-binaries/releases/download/jdk-18.0.2.1%2B1/OpenJDK18U-jdk_x64_mac_hotspot_18.0.2.1_1.tar.gz",
1405 | "openjdk_impl": "hotspot",
1406 | "os": "mac"
1407 | },
1408 | {
1409 | "architecture": "aarch64",
1410 | "binary_link": "https://github.com/adoptium/temurin18-binaries/releases/download/jdk-18.0.2.1%2B1/OpenJDK18U-jdk_aarch64_linux_hotspot_18.0.2.1_1.tar.gz",
1411 | "openjdk_impl": "hotspot",
1412 | "os": "linux"
1413 | },
1414 | {
1415 | "architecture": "s390x",
1416 | "binary_link": "https://github.com/adoptium/temurin18-binaries/releases/download/jdk-18.0.2.1%2B1/OpenJDK18U-jdk_s390x_linux_hotspot_18.0.2.1_1.tar.gz",
1417 | "openjdk_impl": "hotspot",
1418 | "os": "linux"
1419 | },
1420 | {
1421 | "architecture": "x64",
1422 | "binary_link": "https://github.com/adoptium/temurin18-binaries/releases/download/jdk-18.0.2.1%2B1/OpenJDK18U-jdk_x64_linux_hotspot_18.0.2.1_1.tar.gz",
1423 | "openjdk_impl": "hotspot",
1424 | "os": "linux"
1425 | },
1426 | {
1427 | "architecture": "arm",
1428 | "binary_link": "https://github.com/adoptium/temurin18-binaries/releases/download/jdk-18.0.2.1%2B1/OpenJDK18U-jdk_arm_linux_hotspot_18.0.2.1_1.tar.gz",
1429 | "openjdk_impl": "hotspot",
1430 | "os": "linux"
1431 | },
1432 | {
1433 | "architecture": "ppc64le",
1434 | "binary_link": "https://github.com/adoptium/temurin18-binaries/releases/download/jdk-18.0.2.1%2B1/OpenJDK18U-jdk_ppc64le_linux_hotspot_18.0.2.1_1.tar.gz",
1435 | "openjdk_impl": "hotspot",
1436 | "os": "linux"
1437 | },
1438 | {
1439 | "architecture": "x64",
1440 | "binary_link": "https://github.com/adoptium/temurin18-binaries/releases/download/jdk-18.0.2.1%2B1/OpenJDK18U-jdk_x64_alpine-linux_hotspot_18.0.2.1_1.tar.gz",
1441 | "openjdk_impl": "hotspot",
1442 | "os": "alpine-linux"
1443 | }
1444 | ],
1445 | "openjdk_impl": "hotspot",
1446 | "release_name": "jdk-18.0.2.1+1"
1447 | },
1448 | {
1449 | "binaries": [
1450 | {
1451 | "architecture": "x64",
1452 | "binary_link": "https://github.com/adoptium/temurin18-binaries/releases/download/jdk-18.0.2%2B9/OpenJDK18U-jdk_x64_linux_hotspot_18.0.2_9.tar.gz",
1453 | "openjdk_impl": "hotspot",
1454 | "os": "linux"
1455 | },
1456 | {
1457 | "architecture": "ppc64le",
1458 | "binary_link": "https://github.com/adoptium/temurin18-binaries/releases/download/jdk-18.0.2%2B9/OpenJDK18U-jdk_ppc64le_linux_hotspot_18.0.2_9.tar.gz",
1459 | "openjdk_impl": "hotspot",
1460 | "os": "linux"
1461 | },
1462 | {
1463 | "architecture": "x64",
1464 | "binary_link": "https://github.com/adoptium/temurin18-binaries/releases/download/jdk-18.0.2%2B9/OpenJDK18U-jdk_x64_windows_hotspot_18.0.2_9.zip",
1465 | "openjdk_impl": "hotspot",
1466 | "os": "windows"
1467 | },
1468 | {
1469 | "architecture": "x64",
1470 | "binary_link": "https://github.com/adoptium/temurin18-binaries/releases/download/jdk-18.0.2%2B9/OpenJDK18U-jdk_x64_alpine-linux_hotspot_18.0.2_9.tar.gz",
1471 | "openjdk_impl": "hotspot",
1472 | "os": "alpine-linux"
1473 | },
1474 | {
1475 | "architecture": "aarch64",
1476 | "binary_link": "https://github.com/adoptium/temurin18-binaries/releases/download/jdk-18.0.2%2B9/OpenJDK18U-jdk_aarch64_linux_hotspot_18.0.2_9.tar.gz",
1477 | "openjdk_impl": "hotspot",
1478 | "os": "linux"
1479 | },
1480 | {
1481 | "architecture": "arm",
1482 | "binary_link": "https://github.com/adoptium/temurin18-binaries/releases/download/jdk-18.0.2%2B9/OpenJDK18U-jdk_arm_linux_hotspot_18.0.2_9.tar.gz",
1483 | "openjdk_impl": "hotspot",
1484 | "os": "linux"
1485 | },
1486 | {
1487 | "architecture": "x32",
1488 | "binary_link": "https://github.com/adoptium/temurin18-binaries/releases/download/jdk-18.0.2%2B9/OpenJDK18U-jdk_x86-32_windows_hotspot_18.0.2_9.zip",
1489 | "openjdk_impl": "hotspot",
1490 | "os": "windows"
1491 | },
1492 | {
1493 | "architecture": "s390x",
1494 | "binary_link": "https://github.com/adoptium/temurin18-binaries/releases/download/jdk-18.0.2%2B9/OpenJDK18U-jdk_s390x_linux_hotspot_18.0.2_9.tar.gz",
1495 | "openjdk_impl": "hotspot",
1496 | "os": "linux"
1497 | },
1498 | {
1499 | "architecture": "aarch64",
1500 | "binary_link": "https://github.com/adoptium/temurin18-binaries/releases/download/jdk-18.0.2%2B9/OpenJDK18U-jdk_aarch64_mac_hotspot_18.0.2_9.tar.gz",
1501 | "openjdk_impl": "hotspot",
1502 | "os": "mac"
1503 | },
1504 | {
1505 | "architecture": "x64",
1506 | "binary_link": "https://github.com/adoptium/temurin18-binaries/releases/download/jdk-18.0.2%2B9/OpenJDK18U-jdk_x64_mac_hotspot_18.0.2_9.tar.gz",
1507 | "openjdk_impl": "hotspot",
1508 | "os": "mac"
1509 | }
1510 | ],
1511 | "openjdk_impl": "hotspot",
1512 | "release_name": "jdk-18.0.2+9"
1513 | },
1514 | {
1515 | "binaries": [
1516 | {
1517 | "architecture": "x64",
1518 | "binary_link": "https://github.com/adoptium/temurin18-binaries/releases/download/jdk-18.0.1%2B10/OpenJDK18U-jdk_x64_linux_hotspot_18.0.1_10.tar.gz",
1519 | "openjdk_impl": "hotspot",
1520 | "os": "linux"
1521 | },
1522 | {
1523 | "architecture": "x64",
1524 | "binary_link": "https://github.com/adoptium/temurin18-binaries/releases/download/jdk-18.0.1%2B10/OpenJDK18U-jdk_x64_windows_hotspot_18.0.1_10.zip",
1525 | "openjdk_impl": "hotspot",
1526 | "os": "windows"
1527 | },
1528 | {
1529 | "architecture": "x64",
1530 | "binary_link": "https://github.com/adoptium/temurin18-binaries/releases/download/jdk-18.0.1%2B10/OpenJDK18U-jdk_x64_mac_hotspot_18.0.1_10.tar.gz",
1531 | "openjdk_impl": "hotspot",
1532 | "os": "mac"
1533 | },
1534 | {
1535 | "architecture": "aarch64",
1536 | "binary_link": "https://github.com/adoptium/temurin18-binaries/releases/download/jdk-18.0.1%2B10/OpenJDK18U-jdk_aarch64_linux_hotspot_18.0.1_10.tar.gz",
1537 | "openjdk_impl": "hotspot",
1538 | "os": "linux"
1539 | },
1540 | {
1541 | "architecture": "ppc64le",
1542 | "binary_link": "https://github.com/adoptium/temurin18-binaries/releases/download/jdk-18.0.1%2B10/OpenJDK18U-jdk_ppc64le_linux_hotspot_18.0.1_10.tar.gz",
1543 | "openjdk_impl": "hotspot",
1544 | "os": "linux"
1545 | },
1546 | {
1547 | "architecture": "x64",
1548 | "binary_link": "https://github.com/adoptium/temurin18-binaries/releases/download/jdk-18.0.1%2B10/OpenJDK18U-jdk_x64_alpine-linux_hotspot_18.0.1_10.tar.gz",
1549 | "openjdk_impl": "hotspot",
1550 | "os": "alpine-linux"
1551 | },
1552 | {
1553 | "architecture": "s390x",
1554 | "binary_link": "https://github.com/adoptium/temurin18-binaries/releases/download/jdk-18.0.1%2B10/OpenJDK18U-jdk_s390x_linux_hotspot_18.0.1_10.tar.gz",
1555 | "openjdk_impl": "hotspot",
1556 | "os": "linux"
1557 | },
1558 | {
1559 | "architecture": "arm",
1560 | "binary_link": "https://github.com/adoptium/temurin18-binaries/releases/download/jdk-18.0.1%2B10/OpenJDK18U-jdk_arm_linux_hotspot_18.0.1_10.tar.gz",
1561 | "openjdk_impl": "hotspot",
1562 | "os": "linux"
1563 | },
1564 | {
1565 | "architecture": "x32",
1566 | "binary_link": "https://github.com/adoptium/temurin18-binaries/releases/download/jdk-18.0.1%2B10/OpenJDK18U-jdk_x86-32_windows_hotspot_18.0.1_10.zip",
1567 | "openjdk_impl": "hotspot",
1568 | "os": "windows"
1569 | },
1570 | {
1571 | "architecture": "aarch64",
1572 | "binary_link": "https://github.com/adoptium/temurin18-binaries/releases/download/jdk-18.0.1%2B10/OpenJDK18U-jdk_aarch64_mac_hotspot_18.0.1_10.tar.gz",
1573 | "openjdk_impl": "hotspot",
1574 | "os": "mac"
1575 | }
1576 | ],
1577 | "openjdk_impl": "hotspot",
1578 | "release_name": "jdk-18.0.1+10"
1579 | },
1580 | {
1581 | "binaries": [
1582 | {
1583 | "architecture": "x64",
1584 | "binary_link": "https://github.com/adoptium/temurin18-binaries/releases/download/jdk-18%2B36/OpenJDK18U-jdk_x64_linux_hotspot_18_36.tar.gz",
1585 | "openjdk_impl": "hotspot",
1586 | "os": "linux"
1587 | },
1588 | {
1589 | "architecture": "ppc64le",
1590 | "binary_link": "https://github.com/adoptium/temurin18-binaries/releases/download/jdk-18%2B36/OpenJDK18U-jdk_ppc64le_linux_hotspot_18_36.tar.gz",
1591 | "openjdk_impl": "hotspot",
1592 | "os": "linux"
1593 | },
1594 | {
1595 | "architecture": "aarch64",
1596 | "binary_link": "https://github.com/adoptium/temurin18-binaries/releases/download/jdk-18%2B36/OpenJDK18U-jdk_aarch64_linux_hotspot_18_36.tar.gz",
1597 | "openjdk_impl": "hotspot",
1598 | "os": "linux"
1599 | },
1600 | {
1601 | "architecture": "x64",
1602 | "binary_link": "https://github.com/adoptium/temurin18-binaries/releases/download/jdk-18%2B36/OpenJDK18U-jdk_x64_mac_hotspot_18_36.tar.gz",
1603 | "openjdk_impl": "hotspot",
1604 | "os": "mac"
1605 | },
1606 | {
1607 | "architecture": "x64",
1608 | "binary_link": "https://github.com/adoptium/temurin18-binaries/releases/download/jdk-18%2B36/OpenJDK18U-jdk_x64_windows_hotspot_18_36.zip",
1609 | "openjdk_impl": "hotspot",
1610 | "os": "windows"
1611 | },
1612 | {
1613 | "architecture": "x32",
1614 | "binary_link": "https://github.com/adoptium/temurin18-binaries/releases/download/jdk-18%2B36/OpenJDK18U-jdk_x86-32_windows_hotspot_18_36.zip",
1615 | "openjdk_impl": "hotspot",
1616 | "os": "windows"
1617 | },
1618 | {
1619 | "architecture": "arm",
1620 | "binary_link": "https://github.com/adoptium/temurin18-binaries/releases/download/jdk-18%2B36/OpenJDK18U-jdk_arm_linux_hotspot_18_36.tar.gz",
1621 | "openjdk_impl": "hotspot",
1622 | "os": "linux"
1623 | },
1624 | {
1625 | "architecture": "x64",
1626 | "binary_link": "https://github.com/adoptium/temurin18-binaries/releases/download/jdk-18%2B36/OpenJDK18U-jdk_x64_alpine-linux_hotspot_18_36.tar.gz",
1627 | "openjdk_impl": "hotspot",
1628 | "os": "alpine-linux"
1629 | },
1630 | {
1631 | "architecture": "s390x",
1632 | "binary_link": "https://github.com/adoptium/temurin18-binaries/releases/download/jdk-18%2B36/OpenJDK18U-jdk_s390x_linux_hotspot_18_36.tar.gz",
1633 | "openjdk_impl": "hotspot",
1634 | "os": "linux"
1635 | },
1636 | {
1637 | "architecture": "aarch64",
1638 | "binary_link": "https://github.com/adoptium/temurin18-binaries/releases/download/jdk-18%2B36/OpenJDK18U-jdk_aarch64_mac_hotspot_18_36.tar.gz",
1639 | "openjdk_impl": "hotspot",
1640 | "os": "mac"
1641 | }
1642 | ],
1643 | "openjdk_impl": "hotspot",
1644 | "release_name": "jdk-18+36"
1645 | }
1646 | ]
1647 | },
1648 | {
1649 | "name": "OpenJDK 19 - HotSpot",
1650 | "releases": [
1651 | {
1652 | "binaries": [
1653 | {
1654 | "architecture": "x64",
1655 | "binary_link": "https://github.com/adoptium/temurin19-binaries/releases/download/jdk-19%2B36/OpenJDK19U-jdk_x64_linux_hotspot_19_36.tar.gz",
1656 | "openjdk_impl": "hotspot",
1657 | "os": "linux"
1658 | },
1659 | {
1660 | "architecture": "x64",
1661 | "binary_link": "https://github.com/adoptium/temurin19-binaries/releases/download/jdk-19%2B36/OpenJDK19U-jdk_x64_windows_hotspot_19_36.zip",
1662 | "openjdk_impl": "hotspot",
1663 | "os": "windows"
1664 | },
1665 | {
1666 | "architecture": "aarch64",
1667 | "binary_link": "https://github.com/adoptium/temurin19-binaries/releases/download/jdk-19%2B36/OpenJDK19U-jdk_aarch64_linux_hotspot_19_36.tar.gz",
1668 | "openjdk_impl": "hotspot",
1669 | "os": "linux"
1670 | },
1671 | {
1672 | "architecture": "arm",
1673 | "binary_link": "https://github.com/adoptium/temurin19-binaries/releases/download/jdk-19%2B36/OpenJDK19U-jdk_arm_linux_hotspot_19_36.tar.gz",
1674 | "openjdk_impl": "hotspot",
1675 | "os": "linux"
1676 | },
1677 | {
1678 | "architecture": "x64",
1679 | "binary_link": "https://github.com/adoptium/temurin19-binaries/releases/download/jdk-19%2B36/OpenJDK19U-jdk_x64_mac_hotspot_19_36.tar.gz",
1680 | "openjdk_impl": "hotspot",
1681 | "os": "mac"
1682 | },
1683 | {
1684 | "architecture": "aarch64",
1685 | "binary_link": "https://github.com/adoptium/temurin19-binaries/releases/download/jdk-19%2B36/OpenJDK19U-jdk_aarch64_mac_hotspot_19_36.tar.gz",
1686 | "openjdk_impl": "hotspot",
1687 | "os": "mac"
1688 | },
1689 | {
1690 | "architecture": "x64",
1691 | "binary_link": "https://github.com/adoptium/temurin19-binaries/releases/download/jdk-19%2B36/OpenJDK19U-jdk_x64_alpine-linux_hotspot_19_36.tar.gz",
1692 | "openjdk_impl": "hotspot",
1693 | "os": "alpine-linux"
1694 | },
1695 | {
1696 | "architecture": "ppc64le",
1697 | "binary_link": "https://github.com/adoptium/temurin19-binaries/releases/download/jdk-19%2B36/OpenJDK19U-jdk_ppc64le_linux_hotspot_19_36.tar.gz",
1698 | "openjdk_impl": "hotspot",
1699 | "os": "linux"
1700 | },
1701 | {
1702 | "architecture": "s390x",
1703 | "binary_link": "https://github.com/adoptium/temurin19-binaries/releases/download/jdk-19%2B36/OpenJDK19U-jdk_s390x_linux_hotspot_19_36.tar.gz",
1704 | "openjdk_impl": "hotspot",
1705 | "os": "linux"
1706 | },
1707 | {
1708 | "architecture": "x32",
1709 | "binary_link": "https://github.com/adoptium/temurin19-binaries/releases/download/jdk-19%2B36/OpenJDK19U-jdk_x86-32_windows_hotspot_19_36.zip",
1710 | "openjdk_impl": "hotspot",
1711 | "os": "windows"
1712 | }
1713 | ],
1714 | "openjdk_impl": "hotspot",
1715 | "release_name": "jdk-19+36"
1716 | }
1717 | ]
1718 | }
1719 | ],
1720 | "version": 2
1721 | }
1722 |
--------------------------------------------------------------------------------