JEP386 Alpine Linux Port

Contexte

Le JDK sous Linux est basé sur la librairie glibc pour son fonctionnement. C’est la librairie C standard qui est utilisée sur les principales distributions Linux. Mais il existe d’autres implémentations comme la librairie musl.

Projet Portola

L’objectif du projet Portola est de porter le JDK sous les systèmes Linux fonctionnant avec la librairie C musl. Ce projet a démarré en Avril 2017. La JEP 386: Alpine Linux Port concerne l’intégration de cette implémentation dans le dépôt principal du JDK. En effet, le projet avait jusqu’à présent son propre dépôt de sources. C’est donc la conclusion de 4 ans de travail. Les anciens dépôts Mercurial montre bien l’effort sur la réalisation des prototypes sur les différentes versions du JDK (soit le JDK 9 pour le premier prototype)

::depot mercurial portola details

Pourquoi musl ?

musl est une implémentation de la librairie standard C, construite sur l’API d’appel système Linux. Musl est léger, rapide et simple. Nous avons deux cas d’usages :

  • Déploiement cloud

  • Le monde de l’embarqué

Déploiement cloud

Dans le monde du cloud, nous retrouvons souvent des images sur Alpine. C’est un système construit autour de BusyBox et de la librairie musl. L’objectif est d’avoir un besoin de ressource minimal et être plus efficient que les distributions classiques. Cela est primordiale quand nous savons que nous payons les ressources utilisées dans le cloud.

Dans ce sens, une image Alpine Linux 3.11 prend moins de 6MB. Donc si nous prenons une image + environnement d’exécution Java nécessitant que le module java.base (utilisation de jlink), nous obtenons une image de 38MB seulement.

astuce L’intérêt de la modularité du JDK est de réduire la taille de ce dernier en ayant un environnement d’exécution spécifique à ce que l’on a besoin.

Le monde de l’embarqué

Un autre domaine où la réduction des ressources nécessaire est le monde de l’embarqué. En effet, cela correspond à des environnements contraints au niveau des ressources. Dans ce sens, il existe notamment le système OpenWrt qui est construit à partir de la librairie C musl.

La page du projet OpenWrt affiche 1707 périphériques supportés. Cela devient des nouvelles cibles d’exécution.