install-jdk
The install-jdk
library is a Python package that simplifies the process of installing OpenJDK on Windows, macOS, Linux and other supported operating systems, saving time and effort. install-jdk
is a useful tool for users, developers, and system administrators who need to set up Java development environment or runtime in an automated and repeatedable fashion.
install-jdk
has no third-party dependencies and depends solely on the standard libraries found in Python3. This means that you can easily install and use the library without having to install any additional dependencies.
install-jdk
aims to provide as many options as possible to install an OpenJDK Java version across a wide array of operating systems and architectures. Please see each vendors OpenJDK documentation to see what operating systems and architectures they support.
Supported OpenJDK Build Vendors
install-jdk will do its best to detect the operating system and architecture that it is running on. Currently is able to detect:
-
Operating Systems
-
Architecture
Installation
To install the install-jdk library, simply run the following command:
pip install install-jdk
Usage
To use the install-jdk
library, import it into your Python code:
import jdk
The library provides an install
function, which takes the following parameters:
version
- The major version of the Java OpenJDK build to install (e.g. 8, 11, 17, etc.).operating_system
- The target operating system. If not specified, will use the user's detected operating system if possible.arch
- The target architecure. If not specified, will use the user's detected architecture if possible.impl
- The Java implementation to use. Currently only supports HOTSPOT
and dependent on the OpenJDK Build Vendor.jre
- A boolean value indicating that the Java Runtime Environment should be installed. Defaults to false, which will install the Java Development Kit.path
- The location to install the downloaded OpenJDK build. If not specified, will install into $HOME/.jdk/<VERSION>
for the Java Development Kit and $HOME/.jre/<VERSION>
for the Java Runtime Environment.vendor
- The vendor to download the OpenJDK build from. If not specified, defaults to Adoptium. This is a named argument so must be provided like vendor='Corretto'
. Please see the list of Supported OpenJDK Build Vendors
Here are some example code snippet:
jdk.install('11')
jdk.install('11', jre=True)
jdk.install('17', vendor='Corretto')
jdk.install('17', vendor='Corretto', path='/usr/local/jdk')
The library also has a get_download_url
function that returns the URL for the given version, it takes the following parameters:
version
- The major version of the Java OpenJDK build to install (e.g. 8, 11, 17, etc.).operating_system
- The target operating system. If not specified, will use the user's detected operating system if possible.arch
- The target architecure. If not specified, will use the user's detected architecture if possible.impl
- The Java implementation to use. Currently only supports HOTSPOT
and dependent on the OpenJDK Build Vendor.jre
- A boolean value indicating that the Java Runtime Environment should be installed. Defaults to false, which will install the Java Development Kit.vendor
- The vendor to download the OpenJDK build from. If not specified, defaults to Adoptium. This is a named argument so must be provided like vendor='Corretto'
. Please see the list of Supported OpenJDK Build Vendors
Here are some example code snippets:
from jdk.enums import OperatingSystem, Architecture
download_url = jdk.get_download_url('17', jre=True)
print(download_url)
download_url = jdk.get_download_url('17', operating_system=OperatingSystem.LINUX, arch=Architecure.AARCH64, vendor='Corretto')
print(download_url)
The library has a download
function that will download the requested version and returns back the path to where it was downloaded. This function does not currently support overriding the default download path which is the operating systems specific TMP directory. It takes the following parameters.
download_url
- The URL to the file to be downloaded. Defaults to None.
-
version
- Required when download_version
is None and must be provided as a named parameter. The major version of the Java OpenJDK build to install (e.g. 8, 11, 17, etc.).
operating_system
- Must be provided as a named parameter. The target operating system. If not specified, will use the user's detected operating system if possible.arch
- Must be provided as a named parameter. The target architecure. If not specified, will use the user's detected architecture if possible.impl
- Must be provided as a named parameter. The Java implementation to use. Currently only supports HOTSPOT
and dependent on the OpenJDK Build Vendor.jre
- Must be provided as a named parameter. A boolean value indicating that the Java Runtime Environment should be installed. Defaults to false, which will install the Java Development Kit.vendor
- The vendor to download the OpenJDK build from. If not specified, defaults to Adoptium. This is a named argument so must be provided like vendor='Corretto'
. Please see the list of Supported OpenJDK Build Vendors
Here are some example code snippets:
from jdk.enums import OperatingSystem, Architecture
download_file = jdk.download('https://api.adoptium.net/v3/binary/latest/17/ga/windows/x64/jdk/hotspot/normal/eclipse')
print(download_file)
download_file = jdk.download(version='17', operating_system=OperatingSystem.LINUX, arch=Architecure.AARCH64, vendor='Corretto')
print(download_file)
The library also provided two helper properties that can be used to see what it detected as the user's operating system and architecture.
print(jdk.OS)
print(jdk.ARCH)
Credits
The install-jdk library uses OpenJDK builds, and is created and maintained by jyksnw.
This was originally a port of the GitHub Action installjdk
but has morphed into something much more.
Vendor Credits
License
The install-jdk
library is open-source and is distributed under the MIT license. See the LICENSE file for more information.
Contribution
See CONTRIBUTING
Security contact information
To report a security vulnerability, please use the
Tidelift security contact.
Tidelift will coordinate the fix and disclosure.