{"id":15069310,"url":"https://github.com/jgneff/openjdk","last_synced_at":"2025-07-10T18:36:26.067Z","repository":{"id":41338331,"uuid":"318052576","full_name":"jgneff/openjdk","owner":"jgneff","description":"Current JDK release and early-access builds","archived":false,"fork":false,"pushed_at":"2024-12-07T16:29:04.000Z","size":423,"stargazers_count":48,"open_issues_count":0,"forks_count":4,"subscribers_count":3,"default_branch":"edge","last_synced_at":"2024-12-07T17:25:09.397Z","etag":null,"topics":["java","jdk","linux","openjdk","snap"],"latest_commit_sha":null,"homepage":"https://snapcraft.io/openjdk","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jgneff.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-12-03T02:34:02.000Z","updated_at":"2024-12-07T16:29:07.000Z","dependencies_parsed_at":"2024-03-22T01:26:10.040Z","dependency_job_id":"9786937a-5709-45d0-a84a-a4a6fbc24619","html_url":"https://github.com/jgneff/openjdk","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jgneff%2Fopenjdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jgneff%2Fopenjdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jgneff%2Fopenjdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jgneff%2Fopenjdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jgneff","download_url":"https://codeload.github.com/jgneff/openjdk/tar.gz/refs/heads/edge","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230507051,"owners_count":18236944,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","jdk","linux","openjdk","snap"],"created_at":"2024-09-25T01:41:43.493Z","updated_at":"2025-07-10T18:36:26.054Z","avatar_url":"https://github.com/jgneff.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"![OpenJDK: Current JDK release and early-access builds](images/banner.svg)\n\nOpenJDK is the official reference implementation of the Java Platform, Standard Edition. This project builds [Snap packages](https://snapcraft.io/openjdk) of OpenJDK directly from its [source repositories](https://github.com/openjdk) on GitHub. These packages provide everything you need to develop a Java application on Linux, including all of the latest development tools, class libraries, API documentation, and source code of the Java Development Kit (JDK).\n\n## Quick Setup\n\nBelow are some quick setup instructions for developers who are familiar with the Linux command line. For complete instructions, see the [Usage](#usage) section later.\n\n### Confined Usage\n\nRun the JDK tools from your Linux distribution:\n\n```console\n$ java --version\nopenjdk 21.0.7 2025-04-15\nOpenJDK Runtime Environment (build 21.0.7+6-Ubuntu-0ubuntu124.04)\nOpenJDK 64-Bit Server VM (build 21.0.7+6-Ubuntu-0ubuntu124.04, mixed mode, sharing)\n```\n\nRun the JDK tools from this Snap package in a stricty-confined environment:\n\n```console\n$ openjdk.java --version\nopenjdk 24.0.1 2025-04-15\nOpenJDK Runtime Environment (build 24.0.1+9-snap)\nOpenJDK 64-Bit Server VM (build 24.0.1+9-snap, mixed mode, sharing)\n```\n\nSet up the aliases and environment variables for the JDK tools from this Snap package:\n\n```console\n$ source $(openjdk)\n$ java --version\nopenjdk 24.0.1 2025-04-15\nOpenJDK Runtime Environment (build 24.0.1+9-snap)\nOpenJDK 64-Bit Server VM (build 24.0.1+9-snap, mixed mode, sharing)\n```\n\n### Unconfined Usage\n\nSwitch between the JDK tools from your Linux distribution and the JDK tools from this Snap package by setting the `JAVA_HOME` and `PATH` environment variables as shown below for Debian-based systems:\n\n```console\n$ java --version\nopenjdk 21.0.7 2025-04-15\nOpenJDK Runtime Environment (build 21.0.7+6-Ubuntu-0ubuntu124.04)\nOpenJDK 64-Bit Server VM (build 21.0.7+6-Ubuntu-0ubuntu124.04, mixed mode, sharing)\n\n$ export JAVA_HOME=/snap/openjdk/current/jdk\n$ $JAVA_HOME/bin/java --version\nopenjdk 24.0.1 2025-04-15\nOpenJDK Runtime Environment (build 24.0.1+9-snap)\nOpenJDK 64-Bit Server VM (build 24.0.1+9-snap, mixed mode, sharing)\n\n$ export PATH=$JAVA_HOME/bin:$PATH\n$ java --version\nopenjdk 24.0.1 2025-04-15\nOpenJDK Runtime Environment (build 24.0.1+9-snap)\nOpenJDK 64-Bit Server VM (build 24.0.1+9-snap, mixed mode, sharing)\n```\n\nFor Fedora-based systems, see the [Usage](#usage) section later.\n\n## Repository\n\nThe branches of this repository publish the JDK general-availability release (GA) and early-access builds (EA) for the hardware platforms listed below. The table shows the Debian architecture, machine hardware name, and Java architecture of each build:\n\n| Debian  | Machine | Java    | JDK GA | JDK EA |\n|:-------:|:-------:|:-------:|:------:|:------:|\n| amd64   | x86_64  | amd64   | ✓ | ✓ |\n| arm64   | aarch64 | aarch64 | ✓ | ✓ |\n| armhf   | armv7l  | arm     | ✓ | ✓ |\n| ppc64el | ppc64le | ppc64le | ✓ | ✓ |\n| s390x   | s390x   | s390x   | ✓ | ✓ |\n\nThe branches of this repository are named after the Snap channels where the builds are published: *edge*, *beta*, *candidate*, and *stable*. The HEAD branch is *edge*, and merges follow the Snap package releases from *edge* into *beta*, *beta* into *candidate*, and *candidate* into *stable*.\n\n## See Also\n\nThis project is one of four that I created to gain control of my development environment:\n\n* [OpenJDK](https://github.com/jgneff/openjdk) - Current JDK release and early-access builds\n\n    [![openjdk](https://snapcraft.io/openjdk/badge.svg)](https://snapcraft.io/openjdk)\n\n* [OpenJFX](https://github.com/jgneff/openjfx) - Current JavaFX release and early-access builds\n\n    [![openjfx](https://snapcraft.io/openjfx/badge.svg)](https://snapcraft.io/openjfx)\n\n* [Strictly Maven](https://github.com/jgneff/strictly-maven) - Apache Maven™ in a strictly-confined snap\n\n    [![strictly-maven](https://snapcraft.io/strictly-maven/badge.svg)](https://snapcraft.io/strictly-maven)\n\n* [Strictly NetBeans](https://github.com/jgneff/strictly-netbeans) - Apache NetBeans® in a strictly-confined snap\n\n    [![strictly-netbeans](https://snapcraft.io/strictly-netbeans/badge.svg)](https://snapcraft.io/strictly-netbeans)\n\n## Schedule\n\nThe table below contains the most recent schedule for OpenJDK. The channel columns show the JDK releases found on the channels during each phase of the schedule.\n\n| Date       | Phase                     | Stable | Candidate | Beta | Edge |\n| ---------- | ------------------------- |:------:|:---------:|:----:|:----:|\n| 2025-03-18 | General Availability      | 24 | ←  | ←  | 25 |\n| 2025-06-05 | Rampdown Phase One        | 24 | ←  | 25 | 26 |\n| 2025-07-17 | Rampdown Phase Two        | 24 | ←  | 25 | 26 |\n| 2025-08-07 | Initial Release Candidate | 24 | 25 | ←  | 26 |\n| 2025-08-21 | Final Release Candidate   | 24 | 25 | ←  | 26 |\n| 2025-09-16 | General Availability      | 25 | ←  | ←  | 26 |\n\nThe leftwards arrow (←) indicates that the channel is closed. When a specific risk-level channel is closed, the Snap Store will select the package from the more conservative risk level in the column to its left. If the channel is re-opened, packages will once again be selected from the original channel.\n\n## Installation\n\nInstall the OpenJDK Snap package with the command:\n\n```console\n$ sudo snap install openjdk\n```\n\nThe Snap package is [strictly confined](https://snapcraft.io/docs/snap-confinement) and adds only the following interfaces to its permissions:\n\n* the [home interface](https://snapcraft.io/docs/home-interface) for the JDK tools to read and write files under your home directory,\n* the [desktop interfaces](https://snapcraft.io/docs/desktop-interfaces) for the Java launcher to run Java desktop applications, and\n* the [network interface](https://snapcraft.io/docs/network-interface) for the Java launcher to run Java network applications.\n\nInstall the OpenJDK Snap package from a channel other than the *stable* channel with one of the following commands:\n\n```console\n$ sudo snap install openjdk --candidate\n$ sudo snap install openjdk --beta\n$ sudo snap install openjdk --edge\n```\n\n## Trust\n\nThe steps in building the packages are open and transparent so that you can gain trust in the process that creates them instead of having to put all of your trust in their publisher.\n\n| Snap Channel | Build File          | Source Code         | Snap Package           |\n| ------------ | ------------------- | ------------------- | ---------------------- |\n| candidate    | [snapcraft.yaml][1] | [openjdk/jdk24u][4] | [openjdk-candidate][7] |\n| beta         | [snapcraft.yaml][2] | [openjdk/jdk][5]    | [openjdk-beta][8]      |\n| edge         | [snapcraft.yaml][3] | [openjdk/jdk][6]    | [openjdk-edge][9]      |\n\n[1]: https://github.com/jgneff/openjdk/blob/candidate/snap/snapcraft.yaml\n[2]: https://github.com/jgneff/openjdk/blob/beta/snap/snapcraft.yaml\n[3]: https://github.com/jgneff/openjdk/blob/edge/snap/snapcraft.yaml\n\n[4]: https://github.com/openjdk/jdk24u/tags\n[5]: https://github.com/openjdk/jdk/tags\n[6]: https://github.com/openjdk/jdk/tags\n\n[7]: https://launchpad.net/~jgneff/openjdk-snap/+snap/openjdk-candidate\n[8]: https://launchpad.net/~jgneff/openjdk-snap/+snap/openjdk-beta\n[9]: https://launchpad.net/~jgneff/openjdk-snap/+snap/openjdk-edge\n\nFor each of the three channels, the table above links to:\n\n* the Snapcraft build file that creates the Snap package,\n* the release tags used to obtain the OpenJDK source code, and\n* information about the package and its latest builds on Launchpad.\n\nGeneral-availability releases published to the *candidate* channel are eventually promoted to the *stable* channel.\n\nThe [Launchpad build farm](https://launchpad.net/builders) runs each build in a transient container created from trusted images to ensure a clean and isolated build environment. Snap packages built on Launchpad include a manifest that lets you verify the build and identify its dependencies.\n\n## Verify\n\nEach OpenJDK package provides a software bill of materials (SBOM) and a link to its build log. This information is contained in a file called `manifest.yaml` in the directory `/snap/openjdk/current/snap`. The `image-info` section of the manifest provides a link to the package's page on Launchpad with its build status, including the complete log file from the container that ran the build. You can use this information to verify that the OpenJDK Snap package installed on your system was built from source on Launchpad using only the software in [Ubuntu 20.04 LTS](https://cloud-images.ubuntu.com/focal/current/).\n\nFor example, I'll demonstrate how I verify the OpenJDK Snap package installed on my system at the time of this writing. The `snap info` command shows that I installed OpenJDK version 24.0.1+9 with revision 2220, the revision for the *amd64* architecture:\n\n```console\n$ snap info openjdk\n...\nchannels:\n  latest/stable:    24.0.1+9 2025-04-16 (2220) 277MB -\n  latest/candidate: ↑\n  latest/beta:      ↑\n  latest/edge:      25+26    2025-06-06 (2259) 277MB -\ninstalled:          24.0.1+9            (2220) 277MB -\n```\n\nThe following command prints the build information from the manifest file:\n\n```console\n$ grep -A3 image-info /snap/openjdk/current/snap/manifest.yaml\nimage-info:\n  build-request-id: lp-97610881\n  build-request-timestamp: '2025-04-15T18:42:57Z'\n  build_url: https://launchpad.net/~jgneff/openjdk-snap/+snap/openjdk-candidate/+build/2780824\n```\n\nThe `build_url` in the manifest is a link to the [page on Launchpad](https://launchpad.net/~jgneff/openjdk-snap/+snap/openjdk-candidate/+build/2780824) with the package's **Build status** and **Store status**. The store status shows that Launchpad uploaded revision 2220 to the Snap Store, which matches the revision installed on my system. The build status shows a link to the log file with the label [buildlog](https://launchpad.net/~jgneff/openjdk-snap/+snap/openjdk-candidate/+build/2780824/+files/buildlog_snap_ubuntu_bionic_amd64_openjdk-candidate_BUILDING.txt.gz).\n\nThe end of the log file contains a line with the SHA512 checksum of the package just built, shown below with the checksum split to fit on this page:\n\n```\nSnapping...\nSnapped openjdk_24.0.1+9_amd64.snap\nStarting Snapcraft 7.5.8\nLogging execution to '/root/.local/state/snapcraft/log/snapcraft-20250415-190002.159578.log'\n762ddc751db5ea7a25951ba63e147e1cde6caceb420df6bb686a8aaf6e45432c\n4fbbe959a098bad53f68822649955bcf1a0007dd20b437b7cc90845ba3131d3d\n  openjdk_24.0.1+9_amd64.snap\nRevoking proxy token...\n```\n\nThe command below prints the checksum of the package installed on my system:\n\n```console\n$ sudo sha512sum /var/lib/snapd/snaps/openjdk_2220.snap\n762ddc751db5ea7a25951ba63e147e1cde6caceb420df6bb686a8aaf6e45432c\n4fbbe959a098bad53f68822649955bcf1a0007dd20b437b7cc90845ba3131d3d\n  /var/lib/snapd/snaps/openjdk_2220.snap\n```\n\nThe two checksum strings are identical. Using this procedure, I verified that the OpenJDK Snap package installed on my system and the OpenJDK Snap package built and uploaded to the Snap Store by Launchpad are in fact the exact same package. For more information, see [Launchpad Bug #1979844](https://bugs.launchpad.net/launchpad/+bug/1979844), \"Allow verifying that a snap recipe build corresponds to a store revision.\"\n\n## Usage\n\nOnce installed, the OpenJDK Snap package includes the following directories:\n\n* `/snap/openjdk/current/jdk` - Java Platform location\n* `/snap/openjdk/current/jdk/docs` - Javadoc API documentation\n* `/snap/openjdk/current/jdk/man` - Tool reference manuals\n* `/snap/openjdk/current/jdk/lib/src.zip` - Source code archive\n\nOn Fedora-based systems, these directories are found under the root directory `/var/lib/snapd` as a prefix to the locations shown above for Debian-based systems.\n\nYou can use the package in two ways:\n\n1. as a confined set of programs that include all of their dependencies, or\n2. as an unconfined suite of software forming a complete Java Platform.\n\nThe first method should work on any Linux system, but the programs can access only non-hidden files owned by the user in the user's home directory. See the **Confined Usage** section below for details.\n\nThe second method runs with traditional file access, but the programs require a system with Linux kernel version 3.2.0 or later and GNU C library version 2.29 or later. Those versions of the kernel and C library are found, for example, in Ubuntu 20.04 LTS, Fedora 30, or later releases. See the **Unconfined Usage** section below for details.\n\n### Confined Usage\n\nWhen you run the OpenJDK commands with the prefix `openjdk`, the programs run strictly confined and use only the supporting libraries contained in the Snap package. The package defines the following commands for each of the corresponding JDK tools:\n\n- openjdk.java\n- openjdk.javac\n- openjdk.javadoc\n- openjdk.jar\n- openjdk.jarsigner\n- openjdk.jlink\n- openjdk.jwebserver\n\nThe `openjdk` command itself prints the location of a file that defines environment variables and aliases which make it more convenient to use the OpenJDK Snap package:\n\n```console\n$ openjdk\n/var/snap/openjdk/2220/openjdk.env\n```\n\nThe file exports the `JAVA_HOME` and `MANPATH` environment variables, and it defines aliases for the JDK tools so that you can enter them without the package prefix:\n\n```console\n$ cat $(openjdk)\n# Source this file for OpenJDK environment variables and aliases\nexport JAVA_HOME=/snap/openjdk/2220/jdk\nexport MANPATH=/snap/openjdk/2220/jdk/man:\nalias java='openjdk.java'\nalias javac='openjdk.javac'\nalias javadoc='openjdk.javadoc'\nalias jar='openjdk.jar'\nalias jarsigner='openjdk.jarsigner'\nalias jlink='openjdk.jlink'\nalias jwebserver='openjdk.jwebserver'\n```\n\nTo set the environment variables and aliases in your current shell, use the `source` or \"dot\" (`.`) command to read and execute the commands from the file:\n\n```console\n$ source $(openjdk)\n```\n\nYou can then verify that `JAVA_HOME` and the aliases are defined with:\n\n```console\n$ printenv | grep JAVA\nJAVA_HOME=/snap/openjdk/2220/jdk\n$ type java javac\njava is aliased to `openjdk.java'\njavac is aliased to `openjdk.javac'\n$ java --version\nopenjdk 24.0.1 2025-04-15\nOpenJDK Runtime Environment (build 24.0.1+9-snap)\nOpenJDK 64-Bit Server VM (build 24.0.1+9-snap, mixed mode, sharing)\n\n```\n\nIf you refer to locations outside of your home directory in the arguments to the Snap package commands or aliases, such as the JUnit libraries shown below, you'll see error messages like the following when compiling your program:\n\n```console\n$ openjdk.javac -d build/testing --class-path \\\n  /usr/share/java/junit4.jar:/usr/share/java/hamcrest-core-1.3.jar \\\n  src/main/java/org/status6/hello/world/Hello.java \\\n  src/test/java/org/status6/hello/world/HelloTest.java\nsrc/test/java/org/status6/hello/world/HelloTest.java:19:\n  error: package org.junit does not exist\nimport org.junit.Assert;\n                ^\n```\n\nYou'll also see error messages like the following when running your program:\n\n```console\n$ openjdk.java --class-path \\\n  dist/hello-world-1.0.jar:/usr/share/java/junit4.jar:/usr/share/java/hamcrest-core-1.3.jar \\\n  org.junit.runner.JUnitCore org.status6.hello.world.HelloTest\nError: Could not find or load main class org.junit.runner.JUnitCore\nCaused by: java.lang.ClassNotFoundException: org.junit.runner.JUnitCore\n```\n\nIn this case, copy the external libraries into your home directory to allow access, as in the example shown below:\n\n```console\n$ openjdk.javac -d build/testing --class-path \\\n  $HOME/lib/java/junit4.jar:$HOME/lib/java/hamcrest-core-1.3.jar \\\n  src/main/java/org/status6/hello/world/Hello.java \\\n  src/test/java/org/status6/hello/world/HelloTest.java\n```\n\n### Unconfined Usage\n\nBuild automation tools and integrated development environments (IDEs) usually require the location of a Java Platform, often with a corresponding `JAVA_HOME` environment variable. These tools invoke the JDK programs directly using their absolute paths on your system.\n\nWhen the programs are invoked directly, they run outside of their strictly-confined container and in your system's environment like any normal program. They have the same access to your system as the user account that runs them, and they depend on having their supporting libraries installed on your system. This is not how you're supposed to run a Snap package, but it works when the correct system dependencies are installed.\n\nSpecifically, when invoked directly from their absolute paths, the commands in the OpenJDK Snap package require Linux kernel version 3.2.0 or later and GNU C library (glibc) version 2.29 or later. The following commands will show the versions of the kernel and C library on your system:\n\n```console\n$ uname -r\n$ ldd --version\n```\n\nWith the required kernel and C library, you can set the `JAVA_HOME` environment variable and run the programs directly. On Debian-based systems, define:\n\n```console\n$ export JAVA_HOME=/snap/openjdk/current/jdk\n```\n\nOn Fedora-based systems, define:\n\n```console\n$ export JAVA_HOME=/var/lib/snapd/snap/openjdk/current/jdk\n```\n\nYou can then run the programs directly from their installed locations:\n\n```console\n$ $JAVA_HOME/bin/java --version\nopenjdk 24.0.1 2025-04-15\nOpenJDK Runtime Environment (build 24.0.1+9-snap)\nOpenJDK 64-Bit Server VM (build 24.0.1+9-snap, mixed mode, sharing)\n```\n\nIf your system has a version of the GNU C library older than 2.29, you'll see error messages similar to the example shown below, which ran on Ubuntu 18.04 LTS with glibc 2.27:\n\n```console\n$ $JAVA_HOME/bin/java --version\nError: dl failure on line 532\nError: failed /snap/openjdk/2259/jdk/lib/server/libjvm.so, because\n    /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found\n    (required by /snap/openjdk/2259/jdk/lib/server/libjvm.so)\n```\n\nIn this case, either upgrade your Linux system to a more recent version, or run the JDK tools using their Snap package commands or aliases as follows:\n\n```console\n$ openjdk.java --version\nopenjdk 24.0.1 2025-04-15\nOpenJDK Runtime Environment (build 24.0.1+9-snap)\nOpenJDK 64-Bit Server VM (build 24.0.1+9-snap, mixed mode, sharing)\n```\n\nMost desktop systems will include all of the packages needed to run the JDK tools, except for one: the `binutils` package required by `jlink`. The `jlink` program needs the `objcopy` command from `binutils` to create a custom run-time image. Without the extra package, you'll see an error message like the following:\n\n```console\n$ $JAVA_HOME/bin/jlink ...\nError: java.io.IOException: Cannot run program \"objcopy\": error=2,\n    No such file or directory\n```\n\nSolve the error by installing the required package:\n\n```console\n$ sudo apt install binutils\n```\n\nThe following two sections compare the support on Ubuntu and Fedora Linux distributions for running the JDK programs confined in their Snap package or unconfined as a Java Platform.\n\n#### Ubuntu\n\nThe table below shows the Snap package support for recent releases of Ubuntu:\n\n| Release   | End of Updates | C Library | Confined | Unconfined |\n| --------- |:--------------:|:---------:|:--------:|:----------:|\n| 16.04 LTS | 2021-04-30     | 2.23      | ✓ |   |\n| 18.04 LTS | 2023-05-31     | 2.27      | ✓ |   |\n| 20.04 LTS | 2025-05-29     | 2.31      | ✓ | ✓ |\n| 22.04 LTS | 2027-06-01     | 2.35      | ✓ | ✓ |\n| 24.04 LTS | 2029-05-31     | 2.39      | ✓ | ✓ |\n\n#### Fedora\n\nThe table below shows the Snap package support for recent releases of Fedora:\n\n| Release | End of Updates | C Library | Confined | Unconfined |\n|:-------:|:--------------:|:---------:|:--------:|:----------:|\n| 24      | 2017-08-08     | 2.23      | ✓ |   |\n| 25      | 2017-12-12     | 2.24      | ✓ |   |\n| 26      | 2018-05-29     | 2.25      | ✓ |   |\n| 27      | 2018-11-30     | 2.26      | ✓ |   |\n| 28      | 2019-05-28     | 2.27      | ✓ |   |\n| 29      | 2019-11-26     | 2.28      | ✓ |   |\n| 30      | 2020-05-26     | 2.29      | ✓ | ✓ |\n| 31      | 2020-11-24     | 2.30      | ✓ | ✓ |\n| 32      | 2021-05-25     | 2.31      | ✓ | ✓ |\n| 33      | 2021-11-30     | 2.32      | ✓ | ✓ |\n| 34      | 2022-06-07     | 2.33      | ✓ | ✓ |\n| 35      | 2022-12-13     | 2.34      | ✓ | ✓ |\n| 36      | 2023-05-16     | 2.35      | ✓ | ✓ |\n| 37      | 2023-12-05     | 2.36      | ✓ | ✓ |\n| 38      | 2024-05-21     | 2.37      | ✓ | ✓ |\n| 39      | 2024-11-26     | 2.38      | ✓ | ✓ |\n| 40      | 2025-05-13     | 2.39      | ✓ | ✓ |\n| 41      | 2025-11-19     | 2.40      | ✓ | ✓ |\n| 42      | 2026-05-13     | 2.41      | ✓ | ✓ |\n\n## Build\n\nYou can build the Snap package on Linux by installing [Snapcraft](https://snapcraft.io/snapcraft) on your development workstation. The `snap/snapcraft.yaml` files on the *candidate*, *beta*, and *edge* branches define the build for each channel. Run the following commands to install Snapcraft, clone this repository, and start building the package:\n\n```console\n$ sudo snap install snapcraft --classic\n$ git clone https://github.com/jgneff/openjdk.git\n$ cd openjdk\n$ snapcraft\n```\n\nTo run the build remotely on Launchpad, enter the command:\n\n```console\n$ snapcraft remote-build\n```\n\nSee the [Snapcraft Documentation](https://documentation.ubuntu.com/snapcraft/stable/) for more information about building Snap packages.\n\n## License\n\nThis project is licensed under the GNU General Public License v2.0 with the Classpath exception, the same license used by Oracle for the JDK project. See the files [LICENSE](LICENSE), [ADDITIONAL_LICENSE_INFO](ADDITIONAL_LICENSE_INFO), and [ASSEMBLY_EXCEPTION](ASSEMBLY_EXCEPTION) for details.\n\nJava and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates. See the file [TRADEMARK](TRADEMARK) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjgneff%2Fopenjdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjgneff%2Fopenjdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjgneff%2Fopenjdk/lists"}