SlideShare a Scribd company logo
1 of 96
Download to read offline
DISCOAPI
Gerrit Grunwald | Senior Developer Advocate | foojay.io
ABOUTME.
Discover distributions
of OpenJDK as a
service…
Example…
You need


JDK 11.0.8
Question
1.
Which
distribution…?
Question
2.
Does the distribution
support 11.0.8…?
Question
3.
Does the distribution
support your OS…?
Question
4.
Where to get
it from…?
Question
5.
Are you allowed
to use it…?
That who have the choice...
๏Adopt OpenJDK


๏Corretto


๏Dragonwell


๏(GraalVM CE)


๏Liberica


๏(Liberica Native)


๏(Mandrel)


๏Microsoft


๏OJDK Build
๏Open Logic


๏Oracle


๏Oracle OpenJDK


๏RedHat


๏SAP Machine


๏Temurin


๏Trava


๏Zulu


๏Zulu Prime
The situation...
๏We have many different distributions


๏Not all distributions support all versions


๏Most distributions are free but some are not


๏Some distributions have special features


๏Every distribution has it’s own way to get it
The Idea
What about having a
General API that…
Serves information about…
๏Distributions


๏Versions


๏Platforms


๏Operating Systems


๏Architectures
๏Archive types


๏Release status


๏Terms of support


๏Package types


๏Signatures
DISCOAPI
REST
Endpoints
https://api.foojay.io
๏/disco/v2.0/major_versions


๏/disco/v2.0/distributions


๏/disco/v2.0/packages


๏/disco/v2.0/packages/jdks


๏/disco/v2.0/packages/jres


๏/disco/v2.0/packages/yaml


๏/disco/v2.0/ephemeral_ids
https://api.foojay.io/disco/v2.0/
major_versions
/major_versions?
๏ea=true (Early Access)


๏ga=true (General Availability)


๏maintained=true* (Actively maintained, at the moment 7, 8, 11, 13, 15, 16, 17-ea, 18-ea)
*will change over time
{


"result": [


{


"major_version": 17,


"term_of_support": "LTS",


"maintained": true,


"versions": [


"17-ea"


]


},


{


"major_version": 16,


"term_of_support": "STS",


"maintained": true,


"versions": [


"16-ea"


]


},


{


"major_version": 15,


"term_of_support": "MTS",


"maintained": true,


"versions": [


"15.0.1",


"15.0.1-ea",


"15",


"15-ea"


]


},


. . .
Returns a list of all
major versions
including early access
versions in a JSON
format
/major_versions
/major_versions
๏/latest_sts


๏/latest_mts


๏/latest_lts


๏/latest_ga


๏/latest_ea


๏/MAJOR_VERSION (e.g. 13)


๏/MAJOR_VERSION/ea (e.g. 13/ea)
https://api.foojay.io/disco/v2.0/
distributions
/distributions
๏/NAME of distribution (e.g. /zulu)
{


"result": [


{


"name": "Zulu",


"api_parameter": "zulu",


"hash_algorithm": "",


"hash_uri": "",


"signature_type": "",


"signature_algorithm": "",


"signature_uri": "",


"versions": [


"17-ea",


"16-ea",


"15.0.1",


"15",


"15-ea",


"14.0.2",


"14.0.1",


"14",


"14-ea",


"13.0.5.1",


"13.0.5",


"13.0.4",


"13.0.3",


"13.0.2",


"13.0.1",


"13",


"12.0.2",


"12.0.1",


"12",


"11.0.9.1",


"11.0.9",


"11.0.8",


"11.0.7",


"11.0.6",


...
Returns info about a
speci
fi
c distribution
including all it’s general
availability and early
access updates in
JSON format
/distributions/zulu
https://api.foojay.io/disco/v2.0/
packages
/packages?
๏version


๏from_version


๏to_version


๏version_by_de
fi
nition


๏distro


๏architecture


๏archive_type


๏package_type
๏operating_system


๏libc_type


๏release_status


๏term_of_support


๏bitness


๏javafx_bundled


๏directly_downloadable*


๏latest
directly_downloadable*
๏Oracle JDK


๏RedHat JDK
directly_downloadable => false
We only return the link to their download page !!!
{


"result": [


{


"id": "43afdc6785055999f3104208d4b9d703",


"archive_type": "tar.gz",


"distribution": "zulu",


"major_version": 16,


"java_version": "16.0.1",


"distribution_version": "16.30.15",


"latest_build_available": true,


"release_status": "ga",


"term_of_support": "sts",


"operating_system": "linux",


"lib_c_type": "musl",


"architecture": "x64",


"package_type": "jdk",


"javafx_bundled": false,


"directly_downloadable": true,


"filename": "zulu16.30.15-ca-jdk16.0.1-linux_musl_x64.tar.gz",


"ephemeral_id": "c4ffb7a327eebd365750ab7ad6b585bdaf224e9a",


"links": {


"pkg_info_uri": "https://api.foojay.io/disco/v2.0/ephemeral_ids/
c4ffb7a327eebd365750ab7ad6b585bdaf224e9a"


},


"free_use_in_production": true,


"feature": []


},


{


...


}


],


"message": "10 package(s) found"


}
Returns a list of all
packages in JSON
format
/packages
OpenSource
Source
https://github.com/foojay2020/discoapi
Examples...
I need the latest JDK,


what is avaiable ?
Latest JDK available
[


{


"id": "f5f69da2537cfbf7e6f26e484410b8d1",


"archive_type": "tar.gz",


"distribution": "zulu",


"major_version": 15,


"java_version": "15.0.1",


"distribution_version": "15.28.51.0",


"latest_build_available": true,


"release_status": "ga",


"term_of_support": "mts",


"operating_system": "linux",


"lib_c_type": "musl",


"architecture": "x64",


"package_type": "jdk",


"javafx_bundled": false,


"directly_downloadable": true,


"filename": "zulu15.28.51-ca-jdk15.0.1-linux_musl_x64.tar.gz",


"ephemeral_id": "339f5f69da2537cfbf7e6f26e484410b8d11610452685"


},


{


"id": "aa4851ec455afb6efce8e4bd0a18ee63",


"archive_type": "zip",


"distribution": "zulu",


"major_version": 15,


. . .
Returns a list of all packages
found that contain a JDK and
have the latest available
version (here 15.0.1)
https://api.foojay.io/disco/v2.0/packages?package_type=jdk&latest=available
What versions are
available in
distribution XYZ ?
Versions available in distribution
{


"name": "Zulu",


"api_parameter": "zulu",


"versions": [


"17-ea",


"16-ea",


"15.0.1",


"15",


"15-ea",


"14.0.2",


"14.0.1",


"14",


"14-ea",


"13.0.5.1",


"13.0.5",


"13.0.4",


"13.0.3",


"13.0.2",


"13.0.1",


"13",


"12.0.2",


"12.0.1",


"12",


"11.0.9.1",


"11.0.9",


. . .
Returns a list of versions in
the Zulu distribution
including all it’s general
availability and early access
updates in JSON format
https://api.foojay.io/disco/v2.0/distributions/zulu
Who has


version


11.0.9.1 ?
Who has version 11.0.9.1
[


{


"id": "91b37ae0ab88863ba65845b2e1ba5a5d",


"archive_type": "rpm",


"distribution": "zulu",


"major_version": 11,


"java_version": "11.0.9.1",


"distribution_version": "11.43.55.0",


"latest_build_available": true,


"release_status": "ga",


"term_of_support": "lts",


"operating_system": "linux",


"lib_c_type": "glibc",


"architecture": "x86",


"package_type": "jre",


"javafx_bundled": false,


"directly_downloadable": true,


"filename": "zulu11.43.55-ca-jre11.0.9.1-linux.i686.rpm",


"ephemeral_id": "34091b37ae0ab88863ba65845b2e1ba5a5d1610452754"


},


{


"id": "f365a9db0f0a6954b0d4b53e5c42f797",


"archive_type": "zip",


"distribution": "zulu",


"major_version": 11,


. . .
Returns a list of all packages
that have the version number
11.0.9.1 from all distributions
https://api.foojay.io/disco/v2.0/packages?version=11.0.9.1
The latest LTS JDK
for Mac OS


incl. JavaFX ?
Latest LTS JDK for Mac incl. FX
[


{


"id": "75f55e22ca634f0a39bc88fcff49b9c1",


"archive_type": "tar.gz",


"distribution": "zulu",


"major_version": 11,


"java_version": "11.0.9.1",


"distribution_version": "11.43.55.0",


"latest_build_available": true,


"release_status": "ga",


"term_of_support": "lts",


"operating_system": "macos",


"lib_c_type": "libc",


"architecture": "x64",


"package_type": "jdk",


"javafx_bundled": true,


"directly_downloadable": true,


"filename": "zulu11.43.55-ca-fx-jdk11.0.9.1-macosx_x64.tar.gz",


"ephemeral_id": "41175f55e22ca634f0a39bc88fcff49b9c11610454032"


},


{


"id": "3edab9b6f6661cc5a64ea19e439959e6",


"archive_type": "dmg",


"distribution": "zulu",


"major_version": 11,


. . .
Returns a list of all packages
that have the latest available
long term stable version (here
11.0.9.1) for Mac OS incl.
JavaFX from all distributions
https://api.foojay.io/disco/v2.0/packages?
version_by_de
fi
nition=latest_lts&package_type=jdk&operating_system=macos&javafx_bundled=true&latest=per_version
Is there an update
available for 11.0.8 ?
Update available for 11.0.8
{


"major_version": 11,


"term_of_support": "LTS",


"maintained": true,


"versions": [


"11.0.9.1",


"11.0.9",


"11.0.8",


"11.0.7",


"11.0.6",


"11.0.5",


"11.0.4",


"11.0.3",


"11.0.2",


"11.0.1",


"11"


]


}
Returns a list of all general
availability updates of the
major version 11.
https://api.foojay.io/disco/v2.0/major_versions/11
JDK 1.8.0_275 for
Windows as msi
JDK 1.8.0_275 for Windows as msi
[


{


"id": "23310311f36f9092d8db58880dc55ec0",


"archive_type": "msi",


"distribution": "zulu",


"major_version": 8,


"java_version": "8.0.275",


"distribution_version": "8.50.0.51",


"latest_build_available": true,


"release_status": "ga",


"term_of_support": "lts",


"operating_system": "windows",


"lib_c_type": "c_std_lib",


"architecture": "x86",


"package_type": "jdk",


"javafx_bundled": false,


"directly_downloadable": true,


"filename": "zulu8.50.0.51-ca-jdk8.0.275-win_i686.msi",


"ephemeral_id": "32923310311f36f9092d8db58880dc55ec01610454148"


},


{


"id": "949a657c47c2b71d58aebc0b022d4688",


"archive_type": "msi",


"distribution": "zulu",


"major_version": 8,


. . .
Returns a list of all packages
with the version 8.0.275 for
Windows with an archive type
of msi from all distributions
https://api.foojay.io/disco/v2.0/packages?
package_type=jdk&version=1.8.0_275&operating_system=windows&archive_type=msi
IDE plugins
Intellij


plugin
The plugin let you discover and download a
JDK to your local machine.


To install it, search for „DiscoIdea“ on the
Intellij Marketplace.
A plugin to discover/download a JDK
Intellij Plugin
Eclipse


plugin
The plugin let you discover and download a
JDK to your local machine.


To install it, search for „DiscoEclipse“ on the
Eclipse Marketplace.
A plugin to discover/download a JDK
Eclipse Plugin
NetBeans
plugin
NetBeans plugin
NetBeans plugin
NetBeans plugin
NetBeans plugin
NetBeans plugin
Visual Studio


Code


plugin
The plugin let you discover and
download a JDK to your local machine.


To install it, search for „DiscoVSC“ on
the Visual Studio Code Marketplace.
A plugin to discover/download a JDK
Visual Studio Code Plugin
Browser plugins
Chrome
extension
The extension let you discover and
download a JDK to your local machine.


To install it, search for „DiscoChrome“
on the chrome web store.
An extension to discover/download a JDK
Chrome Extension
Chrome Extension
Firefox


add-on
The extension let you discover and
download a JDK to your local machine.


To install it, search for „DiscoFox“ on
the
fi
refox addons page.
An extension to discover/download a JDK
Firefox Add-on
Edge


extension
The extension let you discover and
download a JDK to your local machine.


To install it, search for „DiscoEdge“ on
the Edge plugins page.
An extension to discover/download a JDK
Edge Extension
Safari
extension
The extension let you discover and
download a JDK to your local machine.


To install it, search for „DiscoSafari“ on
the Mac app store.
An extension to discover/download a JDK
Safari Extension
Other plugins
Website


plugin
The snippet let you discover and download
a JDK to your local machine.


Find an instruction on how to install it for
example on blogger at Harmonic Code
A html snippet to discover/download a JDK
Website Plugin
Shell


scripts
$_
Scripts
๏disco-distributions.sh


๏disco-major-versions.sh


๏disco-packages.sh
jq needs to be installed!!!
disco-distribution.sh
################################


# #


# foojay jdk discovery api #


# #


# disco-distributions.sh #


# #


################################


Be aware that you need to have jq installed


Script parameters:


--version : Returns a list of distributions that support the given version


--name : Returns a distribution with the given name if available


--help : Shows this info


disco-distributions.sh


disco-distributions.sh --version 13.0.5.1


disco-releases.sh --help
Enables you to call the
distributions endpoint of the
disco api and retrieve results
in json format
bash disco-distributions.sh --help
disco-major-versions.sh
################################


# #


# foojay jdk discovery api #


# #


# disco-major-versions.sh #


# #


################################


Be aware that you need to have jq installed


Script parameters:


--help : Shows this info


--major-version : Major Version e.g. 1, 5, 9, 11, 18


disco-major-versions.sh


disco-major-versions.sh --maintained true --ea true --ga true


disco-major-versions.sh --ea true


disco-major-versions.sh --ga true


disco-major-versions.sh --version 11 --ea true


disco-major-versions.sh --version 11 --ga true


disco-major-verions.sh --help
Enables you to call the major
versions endpoint of the disco
api and retrieve results in json
format
bash disco-major-versions.sh --help
disco-packages.sh
################################


# #


# foojay jdk discovery api #


# #


# disco-packages.sh #


# #


################################


Be aware that you need to have jq and wget installed


Script parameters:


--help : Shows this info


--version : Version (mandatory or version by definition) e.g. 1.8.0_265 or 11 or 13.0.5.1


--version_by_definition : Version by definition (mandatory if no version) e.g. latest, latest_sts, latest_mts,
latest_lts


--distro : Distribution e.g. aoj, aoj_openj9, dragonwell, corretto, liberica,
oracle_open_jdk, redhat, sap_machine, zulu


--architecture : Architecture e.g. aarch64, arm, arm64, mips, ppc, ppc64, ppc64le,
riscv64, s390x, sparc, sparcv9, x64, x86, amd64


--archive_type : File extension e.g. cab, deb, dmg, exe, msi, pkg, rpm, tar, zip


--package_type : Package type e.g. jre, jdk


--operating_system : Operating System (mandatory) e.g. windows, macos, linux


--libc_type : Type of libc e.g. glibc, libc, musl, c_std_lib


--release_status : Release status e.g. ea, ga


--term_of_support : Term of support e.g. sts, mts, lts


--bitness : Bitness e.g. 32, 64


--javafx_bundled : With JavaFX e.g. true, false


--directly_downloadable : Directly downloadable e.g. true, false


--latest : Latest e.g. overall, per_distro


--dest : Destination e.g. /Users/HanSolo


Usage example:


disco-packages.sh --dest /Users/Hansolo --operating_system windows --version 1.8.0_265 --distro zulu --package_type jdk --
architecture x64 --archive_type zip --release_status ga
Enables you to call the
packages endpoint of the
disco api and retrieve results
in json format
bash disco-packages.sh --help
Source
https://github.com/foojay2020/discoscripts
</>
Other


tools
JDK Butler
The tools makes use of the
Disco API to let you discover
JDK’s and download them to
your local machine.
A tool that let you discover JDK’s
JDK Butler
Get it from github
https://github.com/HanSolo/jdkbutler/releases
JDK Mon
The tool scans every 3h a
folder that you can de
fi
ne for
installed JDK’s.


It checks for available updates
using the Disco API and
offers the download of the
update.
A tool that monitors all your installed JDK’s
JDK Mon
Get it from github
https://github.com/HanSolo/JDKMon/releases
github actions
When using github actions to
build your project you can use
setup-java@v1.


This will use Zulu as JDK to
build and run.
setup-java@v1
github actions
...


steps:


- uses: actions/checkout@v1


- name: Set up JDK 11


uses: actions/setup-java@v1


with:


java-package: jdk


java-version: 11.0.10


- name: Build with gradle


run: ./gradlew build


...
When using github actions to
build your project you can use
setup-java@v2.


No default and you only can
choose between adopt,
adopt-openj9 and zulu.
setup-java@v2
github actions
...


steps:


- uses: actions/checkout@v1


- name: Set up JDK 11


uses: actions/setup-java@v2


with:


java-package: jdk


java-version: '11.0.10'


distribution: 'zulu'


- name: Build with gradle


run: ./gradlew build


...
Make use of foojay’s setup-
java@disco to build your code
using the JDK of your choice.
If not de
fi
ned it will default to
Zulu (as it was in setup-java@v1.0).
Use foojay2020/setup-java@disco
github actions
...


steps:


- uses: actions/checkout@v1


- name: Set up JDK 11 Corretto


uses: foojay2020/setup-java@disco


with:


java-package: jdk


java-version: 11.0.10


distro: corretto


- name: Build with gradle


run: ./gradlew build


...
We have created a testing
matrix for the Disco API using
github actions. To check what
is available you can simply
take a look at the actions in
the project.
What is available? Check Disco Testing Matrix
github actions
Check it out on github
https://github.com/foojay2020/discoTestingMatrix
SDKMAN!
foojay.io

More Related Content

What's hot

Unbound/NSD最新情報(OSC 2013 Tokyo/Spring)
Unbound/NSD最新情報(OSC 2013 Tokyo/Spring)Unbound/NSD最新情報(OSC 2013 Tokyo/Spring)
Unbound/NSD最新情報(OSC 2013 Tokyo/Spring)
Takashi Takizawa
 

What's hot (20)

Docker
DockerDocker
Docker
 
Présentation de git
Présentation de gitPrésentation de git
Présentation de git
 
Backstage at CNCF Madison.pptx
Backstage at CNCF Madison.pptxBackstage at CNCF Madison.pptx
Backstage at CNCF Madison.pptx
 
Intégration continue et déploiement continue avec Jenkins
Intégration continue et déploiement continue avec JenkinsIntégration continue et déploiement continue avec Jenkins
Intégration continue et déploiement continue avec Jenkins
 
Gitlab CI : Integration et Déploiement Continue
Gitlab CI : Integration et Déploiement ContinueGitlab CI : Integration et Déploiement Continue
Gitlab CI : Integration et Déploiement Continue
 
Jenkins使ってみた~Windows編~
Jenkins使ってみた~Windows編~Jenkins使ってみた~Windows編~
Jenkins使ってみた~Windows編~
 
Présentation FusionInventory JM2L 2010
Présentation FusionInventory JM2L 2010Présentation FusionInventory JM2L 2010
Présentation FusionInventory JM2L 2010
 
Formation autour de git et git lab
Formation autour de git et git labFormation autour de git et git lab
Formation autour de git et git lab
 
Rootless Containers
Rootless ContainersRootless Containers
Rootless Containers
 
MVVM入門
MVVM入門MVVM入門
MVVM入門
 
Presentation kernel - Kernel Linux - Configuration – Compilation & installation
Presentation kernel - Kernel Linux - Configuration –  Compilation & installationPresentation kernel - Kernel Linux - Configuration –  Compilation & installation
Presentation kernel - Kernel Linux - Configuration – Compilation & installation
 
Android組込み開発基礎コース Armadillo-440編
Android組込み開発基礎コース Armadillo-440編Android組込み開発基礎コース Armadillo-440編
Android組込み開発基礎コース Armadillo-440編
 
明日からはじめられる Docker + さくらvpsを使った開発環境構築
明日からはじめられる Docker + さくらvpsを使った開発環境構築明日からはじめられる Docker + さくらvpsを使った開発環境構築
明日からはじめられる Docker + さくらvpsを使った開発環境構築
 
Midi technique - présentation docker
Midi technique - présentation dockerMidi technique - présentation docker
Midi technique - présentation docker
 
『 イドラ ファンタシースターサーガ 』を支える GCP | Google Cloud INSIDE Games & Apps
『 イドラ ファンタシースターサーガ 』を支える GCP | Google Cloud INSIDE Games & Apps 『 イドラ ファンタシースターサーガ 』を支える GCP | Google Cloud INSIDE Games & Apps
『 イドラ ファンタシースターサーガ 』を支える GCP | Google Cloud INSIDE Games & Apps
 
Unbound/NSD最新情報(OSC 2013 Tokyo/Spring)
Unbound/NSD最新情報(OSC 2013 Tokyo/Spring)Unbound/NSD最新情報(OSC 2013 Tokyo/Spring)
Unbound/NSD最新情報(OSC 2013 Tokyo/Spring)
 
wakamonoによるISP的実験PROJECT AS59105のご紹介
wakamonoによるISP的実験PROJECT AS59105のご紹介wakamonoによるISP的実験PROJECT AS59105のご紹介
wakamonoによるISP的実験PROJECT AS59105のご紹介
 
Tutorial Git
Tutorial GitTutorial Git
Tutorial Git
 
Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017
 
Androidのリカバリシステム (Androidのシステムアップデート)
Androidのリカバリシステム (Androidのシステムアップデート)Androidのリカバリシステム (Androidのシステムアップデート)
Androidのリカバリシステム (Androidのシステムアップデート)
 

Similar to Disco API - OpenJDK distributions as a service

So go installation guide
So go installation guideSo go installation guide
So go installation guide
Javier Urbaneja
 
Fos sintro pres-dav
Fos sintro pres-davFos sintro pres-dav
Fos sintro pres-dav
Parin Sharma
 
Introduction to OSGi (Tokyo JUG)
Introduction to OSGi (Tokyo JUG)Introduction to OSGi (Tokyo JUG)
Introduction to OSGi (Tokyo JUG)
njbartlett
 

Similar to Disco API - OpenJDK distributions as a service (20)

Does Cowgirl Dream of Red Swirl?
Does Cowgirl Dream of Red Swirl?Does Cowgirl Dream of Red Swirl?
Does Cowgirl Dream of Red Swirl?
 
Open Solaris 2008.05
Open Solaris 2008.05Open Solaris 2008.05
Open Solaris 2008.05
 
Iz Pack
Iz PackIz Pack
Iz Pack
 
Foss Presentation
Foss PresentationFoss Presentation
Foss Presentation
 
Introduction to OpenSolaris 2008.11
Introduction to OpenSolaris 2008.11Introduction to OpenSolaris 2008.11
Introduction to OpenSolaris 2008.11
 
So go installation guide
So go installation guideSo go installation guide
So go installation guide
 
Fusioninventory openworldforum-paris-2011-september
Fusioninventory openworldforum-paris-2011-septemberFusioninventory openworldforum-paris-2011-september
Fusioninventory openworldforum-paris-2011-september
 
Fos sintro pres-dav
Fos sintro pres-davFos sintro pres-dav
Fos sintro pres-dav
 
Freesmartphone.org
Freesmartphone.orgFreesmartphone.org
Freesmartphone.org
 
Joomla Day DK 2012
Joomla Day DK 2012Joomla Day DK 2012
Joomla Day DK 2012
 
Fedora Modularity
Fedora ModularityFedora Modularity
Fedora Modularity
 
Terraform 101
Terraform 101Terraform 101
Terraform 101
 
Zoo Overview
Zoo OverviewZoo Overview
Zoo Overview
 
IPS: Image Packaging System
IPS: Image Packaging SystemIPS: Image Packaging System
IPS: Image Packaging System
 
Introduction to OSGi (Tokyo JUG)
Introduction to OSGi (Tokyo JUG)Introduction to OSGi (Tokyo JUG)
Introduction to OSGi (Tokyo JUG)
 
Cape Cod Web Technology Meetup - 3
Cape Cod Web Technology Meetup - 3Cape Cod Web Technology Meetup - 3
Cape Cod Web Technology Meetup - 3
 
UKOUG - What is Delivered with Solaris 11.4
UKOUG - What is Delivered with Solaris 11.4UKOUG - What is Delivered with Solaris 11.4
UKOUG - What is Delivered with Solaris 11.4
 
Fusioninventory rmll-2011
Fusioninventory rmll-2011Fusioninventory rmll-2011
Fusioninventory rmll-2011
 
How to migrate SourcePro apps from Solaris to Linux
How to migrate SourcePro apps from Solaris to LinuxHow to migrate SourcePro apps from Solaris to Linux
How to migrate SourcePro apps from Solaris to Linux
 
[Droidcon Paris 2013]Multi-Versioning Android Tips
[Droidcon Paris 2013]Multi-Versioning Android Tips[Droidcon Paris 2013]Multi-Versioning Android Tips
[Droidcon Paris 2013]Multi-Versioning Android Tips
 

Recently uploaded

Mastering Windows 7 A Comprehensive Guide for Power Users .pdf
Mastering Windows 7 A Comprehensive Guide for Power Users .pdfMastering Windows 7 A Comprehensive Guide for Power Users .pdf
Mastering Windows 7 A Comprehensive Guide for Power Users .pdf
mbmh111980
 

Recently uploaded (20)

Agnieszka Andrzejewska - BIM School Course in Kraków
Agnieszka Andrzejewska - BIM School Course in KrakówAgnieszka Andrzejewska - BIM School Course in Kraków
Agnieszka Andrzejewska - BIM School Course in Kraków
 
Tree in the Forest - Managing Details in BDD Scenarios (live2test 2024)
Tree in the Forest - Managing Details in BDD Scenarios (live2test 2024)Tree in the Forest - Managing Details in BDD Scenarios (live2test 2024)
Tree in the Forest - Managing Details in BDD Scenarios (live2test 2024)
 
A Guideline to Zendesk to Re:amaze Data Migration
A Guideline to Zendesk to Re:amaze Data MigrationA Guideline to Zendesk to Re:amaze Data Migration
A Guideline to Zendesk to Re:amaze Data Migration
 
5 Reasons Driving Warehouse Management Systems Demand
5 Reasons Driving Warehouse Management Systems Demand5 Reasons Driving Warehouse Management Systems Demand
5 Reasons Driving Warehouse Management Systems Demand
 
IT Software Development Resume, Vaibhav jha 2024
IT Software Development Resume, Vaibhav jha 2024IT Software Development Resume, Vaibhav jha 2024
IT Software Development Resume, Vaibhav jha 2024
 
AI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAG
AI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAGAI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAG
AI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAG
 
How to pick right visual testing tool.pdf
How to pick right visual testing tool.pdfHow to pick right visual testing tool.pdf
How to pick right visual testing tool.pdf
 
Mastering Windows 7 A Comprehensive Guide for Power Users .pdf
Mastering Windows 7 A Comprehensive Guide for Power Users .pdfMastering Windows 7 A Comprehensive Guide for Power Users .pdf
Mastering Windows 7 A Comprehensive Guide for Power Users .pdf
 
GraphSummit Stockholm - Neo4j - Knowledge Graphs and Product Updates
GraphSummit Stockholm - Neo4j - Knowledge Graphs and Product UpdatesGraphSummit Stockholm - Neo4j - Knowledge Graphs and Product Updates
GraphSummit Stockholm - Neo4j - Knowledge Graphs and Product Updates
 
10 Essential Software Testing Tools You Need to Know About.pdf
10 Essential Software Testing Tools You Need to Know About.pdf10 Essential Software Testing Tools You Need to Know About.pdf
10 Essential Software Testing Tools You Need to Know About.pdf
 
What need to be mastered as AI-Powered Java Developers
What need to be mastered as AI-Powered Java DevelopersWhat need to be mastered as AI-Powered Java Developers
What need to be mastered as AI-Powered Java Developers
 
how-to-download-files-safely-from-the-internet.pdf
how-to-download-files-safely-from-the-internet.pdfhow-to-download-files-safely-from-the-internet.pdf
how-to-download-files-safely-from-the-internet.pdf
 
COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...
COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...
COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...
 
OpenChain @ LF Japan Executive Briefing - May 2024
OpenChain @ LF Japan Executive Briefing - May 2024OpenChain @ LF Japan Executive Briefing - May 2024
OpenChain @ LF Japan Executive Briefing - May 2024
 
Secure Software Ecosystem Teqnation 2024
Secure Software Ecosystem Teqnation 2024Secure Software Ecosystem Teqnation 2024
Secure Software Ecosystem Teqnation 2024
 
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
 
Microsoft 365 Copilot; An AI tool changing the world of work _PDF.pdf
Microsoft 365 Copilot; An AI tool changing the world of work _PDF.pdfMicrosoft 365 Copilot; An AI tool changing the world of work _PDF.pdf
Microsoft 365 Copilot; An AI tool changing the world of work _PDF.pdf
 
How to install and activate eGrabber JobGrabber
How to install and activate eGrabber JobGrabberHow to install and activate eGrabber JobGrabber
How to install and activate eGrabber JobGrabber
 
Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...
Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...
Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...
 
KLARNA - Language Models and Knowledge Graphs: A Systems Approach
KLARNA -  Language Models and Knowledge Graphs: A Systems ApproachKLARNA -  Language Models and Knowledge Graphs: A Systems Approach
KLARNA - Language Models and Knowledge Graphs: A Systems Approach
 

Disco API - OpenJDK distributions as a service

  • 2. Gerrit Grunwald | Senior Developer Advocate | foojay.io ABOUTME.
  • 13. Where to get it from…?
  • 15. Are you allowed to use it…?
  • 16. That who have the choice... ๏Adopt OpenJDK ๏Corretto ๏Dragonwell ๏(GraalVM CE) ๏Liberica ๏(Liberica Native) ๏(Mandrel) ๏Microsoft ๏OJDK Build ๏Open Logic ๏Oracle ๏Oracle OpenJDK ๏RedHat ๏SAP Machine ๏Temurin ๏Trava ๏Zulu ๏Zulu Prime
  • 17. The situation... ๏We have many different distributions ๏Not all distributions support all versions ๏Most distributions are free but some are not ๏Some distributions have special features ๏Every distribution has it’s own way to get it
  • 19. What about having a General API that…
  • 20. Serves information about… ๏Distributions ๏Versions ๏Platforms ๏Operating Systems ๏Architectures ๏Archive types ๏Release status ๏Terms of support ๏Package types ๏Signatures
  • 25. /major_versions? ๏ea=true (Early Access) ๏ga=true (General Availability) ๏maintained=true* (Actively maintained, at the moment 7, 8, 11, 13, 15, 16, 17-ea, 18-ea) *will change over time
  • 26. { "result": [ { "major_version": 17, "term_of_support": "LTS", "maintained": true, "versions": [ "17-ea" ] }, { "major_version": 16, "term_of_support": "STS", "maintained": true, "versions": [ "16-ea" ] }, { "major_version": 15, "term_of_support": "MTS", "maintained": true, "versions": [ "15.0.1", "15.0.1-ea", "15", "15-ea" ] }, . . . Returns a list of all major versions including early access versions in a JSON format /major_versions
  • 30. { "result": [ { "name": "Zulu", "api_parameter": "zulu", "hash_algorithm": "", "hash_uri": "", "signature_type": "", "signature_algorithm": "", "signature_uri": "", "versions": [ "17-ea", "16-ea", "15.0.1", "15", "15-ea", "14.0.2", "14.0.1", "14", "14-ea", "13.0.5.1", "13.0.5", "13.0.4", "13.0.3", "13.0.2", "13.0.1", "13", "12.0.2", "12.0.1", "12", "11.0.9.1", "11.0.9", "11.0.8", "11.0.7", "11.0.6", ... Returns info about a speci fi c distribution including all it’s general availability and early access updates in JSON format /distributions/zulu
  • 33. directly_downloadable* ๏Oracle JDK ๏RedHat JDK directly_downloadable => false We only return the link to their download page !!!
  • 34. { "result": [ { "id": "43afdc6785055999f3104208d4b9d703", "archive_type": "tar.gz", "distribution": "zulu", "major_version": 16, "java_version": "16.0.1", "distribution_version": "16.30.15", "latest_build_available": true, "release_status": "ga", "term_of_support": "sts", "operating_system": "linux", "lib_c_type": "musl", "architecture": "x64", "package_type": "jdk", "javafx_bundled": false, "directly_downloadable": true, "filename": "zulu16.30.15-ca-jdk16.0.1-linux_musl_x64.tar.gz", "ephemeral_id": "c4ffb7a327eebd365750ab7ad6b585bdaf224e9a", "links": { "pkg_info_uri": "https://api.foojay.io/disco/v2.0/ephemeral_ids/ c4ffb7a327eebd365750ab7ad6b585bdaf224e9a" }, "free_use_in_production": true, "feature": [] }, { ... } ], "message": "10 package(s) found" } Returns a list of all packages in JSON format /packages
  • 38. I need the latest JDK, what is avaiable ?
  • 39. Latest JDK available [ { "id": "f5f69da2537cfbf7e6f26e484410b8d1", "archive_type": "tar.gz", "distribution": "zulu", "major_version": 15, "java_version": "15.0.1", "distribution_version": "15.28.51.0", "latest_build_available": true, "release_status": "ga", "term_of_support": "mts", "operating_system": "linux", "lib_c_type": "musl", "architecture": "x64", "package_type": "jdk", "javafx_bundled": false, "directly_downloadable": true, "filename": "zulu15.28.51-ca-jdk15.0.1-linux_musl_x64.tar.gz", "ephemeral_id": "339f5f69da2537cfbf7e6f26e484410b8d11610452685" }, { "id": "aa4851ec455afb6efce8e4bd0a18ee63", "archive_type": "zip", "distribution": "zulu", "major_version": 15, . . . Returns a list of all packages found that contain a JDK and have the latest available version (here 15.0.1) https://api.foojay.io/disco/v2.0/packages?package_type=jdk&latest=available
  • 40. What versions are available in distribution XYZ ?
  • 41. Versions available in distribution { "name": "Zulu", "api_parameter": "zulu", "versions": [ "17-ea", "16-ea", "15.0.1", "15", "15-ea", "14.0.2", "14.0.1", "14", "14-ea", "13.0.5.1", "13.0.5", "13.0.4", "13.0.3", "13.0.2", "13.0.1", "13", "12.0.2", "12.0.1", "12", "11.0.9.1", "11.0.9", . . . Returns a list of versions in the Zulu distribution including all it’s general availability and early access updates in JSON format https://api.foojay.io/disco/v2.0/distributions/zulu
  • 43. Who has version 11.0.9.1 [ { "id": "91b37ae0ab88863ba65845b2e1ba5a5d", "archive_type": "rpm", "distribution": "zulu", "major_version": 11, "java_version": "11.0.9.1", "distribution_version": "11.43.55.0", "latest_build_available": true, "release_status": "ga", "term_of_support": "lts", "operating_system": "linux", "lib_c_type": "glibc", "architecture": "x86", "package_type": "jre", "javafx_bundled": false, "directly_downloadable": true, "filename": "zulu11.43.55-ca-jre11.0.9.1-linux.i686.rpm", "ephemeral_id": "34091b37ae0ab88863ba65845b2e1ba5a5d1610452754" }, { "id": "f365a9db0f0a6954b0d4b53e5c42f797", "archive_type": "zip", "distribution": "zulu", "major_version": 11, . . . Returns a list of all packages that have the version number 11.0.9.1 from all distributions https://api.foojay.io/disco/v2.0/packages?version=11.0.9.1
  • 44. The latest LTS JDK for Mac OS incl. JavaFX ?
  • 45. Latest LTS JDK for Mac incl. FX [ { "id": "75f55e22ca634f0a39bc88fcff49b9c1", "archive_type": "tar.gz", "distribution": "zulu", "major_version": 11, "java_version": "11.0.9.1", "distribution_version": "11.43.55.0", "latest_build_available": true, "release_status": "ga", "term_of_support": "lts", "operating_system": "macos", "lib_c_type": "libc", "architecture": "x64", "package_type": "jdk", "javafx_bundled": true, "directly_downloadable": true, "filename": "zulu11.43.55-ca-fx-jdk11.0.9.1-macosx_x64.tar.gz", "ephemeral_id": "41175f55e22ca634f0a39bc88fcff49b9c11610454032" }, { "id": "3edab9b6f6661cc5a64ea19e439959e6", "archive_type": "dmg", "distribution": "zulu", "major_version": 11, . . . Returns a list of all packages that have the latest available long term stable version (here 11.0.9.1) for Mac OS incl. JavaFX from all distributions https://api.foojay.io/disco/v2.0/packages? version_by_de fi nition=latest_lts&package_type=jdk&operating_system=macos&javafx_bundled=true&latest=per_version
  • 46. Is there an update available for 11.0.8 ?
  • 47. Update available for 11.0.8 { "major_version": 11, "term_of_support": "LTS", "maintained": true, "versions": [ "11.0.9.1", "11.0.9", "11.0.8", "11.0.7", "11.0.6", "11.0.5", "11.0.4", "11.0.3", "11.0.2", "11.0.1", "11" ] } Returns a list of all general availability updates of the major version 11. https://api.foojay.io/disco/v2.0/major_versions/11
  • 49. JDK 1.8.0_275 for Windows as msi [ { "id": "23310311f36f9092d8db58880dc55ec0", "archive_type": "msi", "distribution": "zulu", "major_version": 8, "java_version": "8.0.275", "distribution_version": "8.50.0.51", "latest_build_available": true, "release_status": "ga", "term_of_support": "lts", "operating_system": "windows", "lib_c_type": "c_std_lib", "architecture": "x86", "package_type": "jdk", "javafx_bundled": false, "directly_downloadable": true, "filename": "zulu8.50.0.51-ca-jdk8.0.275-win_i686.msi", "ephemeral_id": "32923310311f36f9092d8db58880dc55ec01610454148" }, { "id": "949a657c47c2b71d58aebc0b022d4688", "archive_type": "msi", "distribution": "zulu", "major_version": 8, . . . Returns a list of all packages with the version 8.0.275 for Windows with an archive type of msi from all distributions https://api.foojay.io/disco/v2.0/packages? package_type=jdk&version=1.8.0_275&operating_system=windows&archive_type=msi
  • 52. The plugin let you discover and download a JDK to your local machine. To install it, search for „DiscoIdea“ on the Intellij Marketplace. A plugin to discover/download a JDK Intellij Plugin
  • 54. The plugin let you discover and download a JDK to your local machine. To install it, search for „DiscoEclipse“ on the Eclipse Marketplace. A plugin to discover/download a JDK Eclipse Plugin
  • 62. The plugin let you discover and download a JDK to your local machine. To install it, search for „DiscoVSC“ on the Visual Studio Code Marketplace. A plugin to discover/download a JDK Visual Studio Code Plugin
  • 65. The extension let you discover and download a JDK to your local machine. To install it, search for „DiscoChrome“ on the chrome web store. An extension to discover/download a JDK Chrome Extension
  • 68. The extension let you discover and download a JDK to your local machine. To install it, search for „DiscoFox“ on the fi refox addons page. An extension to discover/download a JDK Firefox Add-on
  • 70. The extension let you discover and download a JDK to your local machine. To install it, search for „DiscoEdge“ on the Edge plugins page. An extension to discover/download a JDK Edge Extension
  • 72. The extension let you discover and download a JDK to your local machine. To install it, search for „DiscoSafari“ on the Mac app store. An extension to discover/download a JDK Safari Extension
  • 75. The snippet let you discover and download a JDK to your local machine. Find an instruction on how to install it for example on blogger at Harmonic Code A html snippet to discover/download a JDK Website Plugin
  • 78. disco-distribution.sh ################################ # # # foojay jdk discovery api # # # # disco-distributions.sh # # # ################################ Be aware that you need to have jq installed Script parameters: --version : Returns a list of distributions that support the given version --name : Returns a distribution with the given name if available --help : Shows this info disco-distributions.sh disco-distributions.sh --version 13.0.5.1 disco-releases.sh --help Enables you to call the distributions endpoint of the disco api and retrieve results in json format bash disco-distributions.sh --help
  • 79. disco-major-versions.sh ################################ # # # foojay jdk discovery api # # # # disco-major-versions.sh # # # ################################ Be aware that you need to have jq installed Script parameters: --help : Shows this info --major-version : Major Version e.g. 1, 5, 9, 11, 18 disco-major-versions.sh disco-major-versions.sh --maintained true --ea true --ga true disco-major-versions.sh --ea true disco-major-versions.sh --ga true disco-major-versions.sh --version 11 --ea true disco-major-versions.sh --version 11 --ga true disco-major-verions.sh --help Enables you to call the major versions endpoint of the disco api and retrieve results in json format bash disco-major-versions.sh --help
  • 80. disco-packages.sh ################################ # # # foojay jdk discovery api # # # # disco-packages.sh # # # ################################ Be aware that you need to have jq and wget installed Script parameters: --help : Shows this info --version : Version (mandatory or version by definition) e.g. 1.8.0_265 or 11 or 13.0.5.1 --version_by_definition : Version by definition (mandatory if no version) e.g. latest, latest_sts, latest_mts, latest_lts --distro : Distribution e.g. aoj, aoj_openj9, dragonwell, corretto, liberica, oracle_open_jdk, redhat, sap_machine, zulu --architecture : Architecture e.g. aarch64, arm, arm64, mips, ppc, ppc64, ppc64le, riscv64, s390x, sparc, sparcv9, x64, x86, amd64 --archive_type : File extension e.g. cab, deb, dmg, exe, msi, pkg, rpm, tar, zip --package_type : Package type e.g. jre, jdk --operating_system : Operating System (mandatory) e.g. windows, macos, linux --libc_type : Type of libc e.g. glibc, libc, musl, c_std_lib --release_status : Release status e.g. ea, ga --term_of_support : Term of support e.g. sts, mts, lts --bitness : Bitness e.g. 32, 64 --javafx_bundled : With JavaFX e.g. true, false --directly_downloadable : Directly downloadable e.g. true, false --latest : Latest e.g. overall, per_distro --dest : Destination e.g. /Users/HanSolo Usage example: disco-packages.sh --dest /Users/Hansolo --operating_system windows --version 1.8.0_265 --distro zulu --package_type jdk -- architecture x64 --archive_type zip --release_status ga Enables you to call the packages endpoint of the disco api and retrieve results in json format bash disco-packages.sh --help
  • 84. The tools makes use of the Disco API to let you discover JDK’s and download them to your local machine. A tool that let you discover JDK’s JDK Butler
  • 85. Get it from github https://github.com/HanSolo/jdkbutler/releases
  • 87. The tool scans every 3h a folder that you can de fi ne for installed JDK’s. It checks for available updates using the Disco API and offers the download of the update. A tool that monitors all your installed JDK’s JDK Mon
  • 88. Get it from github https://github.com/HanSolo/JDKMon/releases
  • 90. When using github actions to build your project you can use setup-java@v1. This will use Zulu as JDK to build and run. setup-java@v1 github actions ... steps: - uses: actions/checkout@v1 - name: Set up JDK 11 uses: actions/setup-java@v1 with: java-package: jdk java-version: 11.0.10 - name: Build with gradle run: ./gradlew build ...
  • 91. When using github actions to build your project you can use setup-java@v2. No default and you only can choose between adopt, adopt-openj9 and zulu. setup-java@v2 github actions ... steps: - uses: actions/checkout@v1 - name: Set up JDK 11 uses: actions/setup-java@v2 with: java-package: jdk java-version: '11.0.10' distribution: 'zulu' - name: Build with gradle run: ./gradlew build ...
  • 92. Make use of foojay’s setup- java@disco to build your code using the JDK of your choice. If not de fi ned it will default to Zulu (as it was in setup-java@v1.0). Use foojay2020/setup-java@disco github actions ... steps: - uses: actions/checkout@v1 - name: Set up JDK 11 Corretto uses: foojay2020/setup-java@disco with: java-package: jdk java-version: 11.0.10 distro: corretto - name: Build with gradle run: ./gradlew build ...
  • 93. We have created a testing matrix for the Disco API using github actions. To check what is available you can simply take a look at the actions in the project. What is available? Check Disco Testing Matrix github actions
  • 94. Check it out on github https://github.com/foojay2020/discoTestingMatrix