O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

Construire son JDK en 10 étapes

719 visualizações

Publicada em

Les slides du Tools in Action que j'ai donné à Devoxx France 2019.
Le JDK est open source et son développement aussi. L'ensemble des nouveautés vit sur des branches Mercurial qui peuvent être téléchargées et compilées à la demande. Cela permet de jouer avec des fonctionnalités encore en chantier, de regarder comment les nouvelles syntaxes fonctionneront, bref, de jouer avec un JDK du futur, qui n'existera peut-être jamais. L'objet de ce tools in action est simple : montrer comment tout ceci fonctionne, de l'installation d'une machine Ubuntu à l'exécution d'un JDK recompilé maison.

Publicada em: Educação
  • Entre para ver os comentários

Construire son JDK en 10 étapes

  1. 1. #DevoxxFR Construire son JDK en 10 étapes José Paumard @JosePaumard
  2. 2. #DevoxxFR @JosePaumard Pourquoi son propre JDK ? Parce que c’est amusant On peut construire des JDK qui n’existent pas encore Voire qui n’existeront jamais ! Est-ce un JDK ? Licence du TCK…
  3. 3. #DevoxxFR @JosePaumard Pourquoi son propre JDK ? Et en plus on n’est même pas obligé de le faire !
  4. 4. #DevoxxFR @JosePaumard Pourquoi son propre JDK ? Et on peut aussi aller chercher …
  5. 5. #DevoxxFR @JosePaumard Pourquoi son propre JDK ? https://hg.openjdk.java.net/ Racine du repository Mercurial de l’Open JDK 65 projets référencés : - amber, valhalla, loom, panama - graal - duke
  6. 6. #DevoxxFR @JosePaumard Construit-on un JDK ? En fait non… Car il y a le TCK = Test Compatibility Kit Qui est sous licence, et plus complexe à faire tourner Le LondonJug (LJC) a lancé Adopt OpenJDK https://adoptopenjdk.net/ 10 plateformes, 5 versions, 2 JVM
  7. 7. #DevoxxFR @JosePaumard Le point de départ Quelques installations ! - Distribution Ubuntu Desktop 18.04 - Mercurial n’est pas installé par défaut $ sudo apt-get install mercurial
  8. 8. #DevoxxFR @JosePaumard Structure du repository Racine du repository : http://hg.openjdk.java.net/
  9. 9. #DevoxxFR @JosePaumard Structure du repository Racine du repository : http://hg.openjdk.java.net/
  10. 10. #DevoxxFR @JosePaumard Structure du repository Racine du repository : http://hg.openjdk.java.net/
  11. 11. #DevoxxFR @JosePaumard Structure du repository Racine du repository : http://hg.openjdk.java.net/
  12. 12. #DevoxxFR @JosePaumard C’est Loom que l’on veut ! $ hg clone http://hg.openjdk.java.net/loom/loom/ ubuntu@ubuntu:~/jdk-builds/loom$ ls -l total 60 -rw-r--r-- 1 ubuntu ubuntu 2114 Apr 10 11:51 ADDITIONAL_LICENSE_INFO -rw-r--r-- 1 ubuntu ubuntu 1522 Apr 10 11:51 ASSEMBLY_EXCEPTION drwxr-xr-x 3 ubuntu ubuntu 4096 Apr 10 11:51 bin -rw-r--r-- 1 ubuntu ubuntu 1649 Apr 10 11:51 configure drwxr-xr-x 3 ubuntu ubuntu 4096 Apr 10 11:51 doc -rw-r--r-- 1 ubuntu ubuntu 19274 Apr 10 11:51 LICENSE drwxr-xr-x 23 ubuntu ubuntu 4096 Apr 10 11:51 make -rw-r--r-- 1 ubuntu ubuntu 2785 Apr 10 11:51 Makefile -rw-r--r-- 1 ubuntu ubuntu 341 Apr 10 11:51 README drwxr-xr-x 78 ubuntu ubuntu 4096 Apr 10 11:51 src drwxr-xr-x 14 ubuntu ubuntu 4096 Apr 10 11:51 test
  13. 13. #DevoxxFR @JosePaumard C’est Loom que l’on veut ! $ hg clone http://hg.openjdk.java.net/loom/loom/ $ du -s * 2542764 loom 2555176 valhalla
  14. 14. #DevoxxFR @JosePaumard Mettre à jour un repo local Ici le repo n’est pas à jour $ hg branches fibers 54758:d0d359325486 processorid 54156:df063b0c6b16 cont 54757:852a4764af87 (inactive) default 54751:f855ec13aa25 (inactive)
  15. 15. #DevoxxFR @JosePaumard Mettre à jour un repo local $ hg pull pulling from http://hg.openjdk.java.net/loom/loom/ searching for changes adding changesets adding manifests adding file changes added 82 changesets with 444 changes to 370 files new changesets 9396de97aabc:2c84b04740e1 (run 'hg update' to get a working copy) $ hg branches fibers 54840:2c84b04740e1 processorid 54156:df063b0c6b16 cont 54839:8d1717a86bcc (inactive) default 54838:9d0ae9508d53 (inactive)
  16. 16. #DevoxxFR @JosePaumard Des branches Sur Amber $ hg branches intrinsics-project 55718:1b2d2adf4db0 amber-demo-II 55716:790e66f7d86b string-tapas 55713:2b7308743d64 patterns 55709:eab05125102c condy-lambda 55707:cefcee544a8c condy-folding 55706:95b0376b6384 enhanced-enums 55705:1ba046536503 concise-method-declarations 55704:dd7b22c4fc41 lambda-leftovers 55703:85bc4b648318 stats-before-this-super 55702:8f8f01d331c7 patterns-stage-1 55715:97581c10465c (inactive) records-and-sealed 55701:4461b14e6543 (inactive) default 55699:13c02cc7a6e5 (inactive)
  17. 17. #DevoxxFR @JosePaumard Choisir une branche Sur Amber $ hg amber-demo-II intrinsics-project 55718:1b2d2adf4db0 amber-demo-II 55716:790e66f7d86b string-tapas 55713:2b7308743d64 patterns 55709:eab05125102c condy-lambda 55707:cefcee544a8c condy-folding 55706:95b0376b6384 enhanced-enums 55705:1ba046536503 concise-method-declarations 55704:dd7b22c4fc41 lambda-leftovers 55703:85bc4b648318 stats-before-this-super 55702:8f8f01d331c7 patterns-stage-1 55715:97581c10465c (inactive) records-and-sealed 55701:4461b14e6543 (inactive) default 55699:13c02cc7a6e5 (inactive)
  18. 18. #DevoxxFR @JosePaumard Configurer la compilation Utilitaire autoconf FTW ! $ ./configure Runnable configure script is not present Generating runnable configure script at /home/ubuntu/jdk-builds/loom/build/.configure- support/generated-configure.sh Autoconf is not found on the PATH, and AUTOCONF is not set. You need autoconf to be able to generate a runnable configure script. You might be able to fix this by running 'sudo apt-get install autoconf’. $ sudo apt-get install autoconf
  19. 19. #DevoxxFR @JosePaumard Configurer la compilation Utilitaire autoconf FTW ! $ ./configure configure: error: Cannot find GNU make 3.81 or newer! Please put it in the path, or add e.g. MAKE=/opt/gmake3.81/make as argument to configure. $ sudo apt-get install make
  20. 20. #DevoxxFR @JosePaumard Configurer la compilation Utilitaire autoconf FTW ! $ ./configure configure: error: Could not find a C compiler. You might be able to fix this by running 'sudo apt-get install build-essential'. configure exiting with result code 1 $ sudo apt-get install build-essential (117Mo)
  21. 21. #DevoxxFR @JosePaumard Configurer la compilation Utilitaire autoconf FTW… $ ./configure configure: error: Could not find X11 libraries. You might be able to fix this by running 'sudo apt-get install libx11-dev libxext-dev libxrender-dev libxrandr-dev libxtst-dev libxt-dev'. configure exiting with result code 1 $ sudo apt-get install libx11-dev libxext-dev libxrender-dev libxrandr-dev libxtst-dev libxt-dev (20Mo)
  22. 22. #DevoxxFR @JosePaumard Configurer la compilation Utilitaire autoconf FTW… $ ./configure configure: error: Could not find cups! You might be able to fix this by running 'sudo apt-get install libcups2-dev'. configure exiting with result code 1 $ sudo apt-get install libcups2-dev
  23. 23. #DevoxxFR @JosePaumard Configurer la compilation Utilitaire autoconf FTW… $ ./configure configure: error: Could not find alsa! You might be able to fix this by running 'sudo apt-get install libasound2-dev'. configure exiting with result code 1 $ sudo apt-get install libasound2-dev
  24. 24. #DevoxxFR @JosePaumard Configurer la compilation ! Utilitaire autoconf FTW… A new configuration has been successfully created in /home/ubuntu/jdk-builds/loom/build/linux-x86_64-server-release using default settings. Configuration summary: * Debug level: release * HS debug level: product * JVM variants: server * JVM features: server: 'aot cds cmsgc compiler1 compiler2 epsilongc g1gc graal jfr jni-check jvmci jvmti management nmt parallelgc serialgc services shenandoahgc vm-structs zgc' * OpenJDK target: OS: linux, CPU architecture: x86, address length: 64 * Version string: 13-internal+0-adhoc.ubuntu.loom (13-internal) Tools summary: * Boot JDK: openjdk version "12" 2019-03-19 OpenJDK Runtime Environment (build 12+33) OpenJDK 64-Bit Server VM (build 12+33, mixed mode, sharing) (at /home/ubuntu/jdk/jdk-12) * Toolchain: gcc (GNU Compiler Collection) * C Compiler: Version 7.3.0 (at /usr/bin/gcc) * C++ Compiler: Version 7.3.0 (at /usr/bin/g++) Build performance summary: * Cores to use: 4 * Memory limit: 7953 MB
  25. 25. #DevoxxFR @JosePaumard Lancer la compilation Make FTW $ make images Building target 'images' in configuration 'linux-x86_64-server-release' Compiling 8 files for BUILD_TOOLS_LANGTOOLS Compiling 1 files for BUILD_JFR_TOOLS Creating hotspot/variant-server/tools/adlc/adlc from 13 file(s) Compiling 2 files for BUILD_JVMTI_TOOLS ...
  26. 26. #DevoxxFR @JosePaumard Lancer la compilation Make FTW $ make images ... Creating support/demos/image/jfc/SampleTree/SampleTree.jar Creating support/demos/image/jfc/TableExample/TableExample.jar Creating support/demos/image/jfc/TransparentRuler/TransparentRuler.jar Creating jdk image Creating CDS archive for jdk image Stopping sjavac server Finished building target 'images' in configuration 'linux-x86_64-server-release' $ du -s * 6287440 loom 6358412 amber
  27. 27. #DevoxxFR @JosePaumard Résultat ? Résultat dans server-release/images/jdk/ $ ls -l build/linux-x86_64-server-release total 120 -rw-r--r-- 1 ubuntu ubuntu 2663 Apr 15 02:21 bootcycle-spec.gmk -rw-r--r-- 1 ubuntu ubuntu 7869 Apr 15 02:21 buildjdk-spec.gmk -rw-r--r-- 1 ubuntu ubuntu 17895 Apr 15 02:31 build.log drwxr-xr-x 19 ubuntu ubuntu 4096 Apr 15 02:31 buildtools -rwxr-xr-x 1 ubuntu ubuntu 3908 Apr 15 02:21 compare.sh -rw-r--r-- 1 ubuntu ubuntu 14971 Apr 15 02:21 configure.log drwxr-xr-x 2 ubuntu ubuntu 4096 Apr 15 02:21 configure-support drwxr-xr-x 3 ubuntu ubuntu 4096 Apr 15 02:22 hotspot drwxr-xr-x 5 ubuntu ubuntu 4096 Apr 15 02:31 images drwxr-xr-x 8 ubuntu ubuntu 4096 Apr 15 02:31 jdk -rw-r--r-- 1 ubuntu ubuntu 1261 Apr 15 02:21 Makefile drwxr-xr-x 6 ubuntu ubuntu 4096 Apr 15 02:22 make-support -rw-r--r-- 1 ubuntu ubuntu 33489 Apr 15 02:21 spec.gmk drwxr-xr-x 22 ubuntu ubuntu 4096 Apr 15 02:31 support
  28. 28. #DevoxxFR @JosePaumard Résultat ? Résultat ! $ export JAVA_HOME= ... $ export PATH=$JAVA_HOME/bin:$PATH $ java –version openjdk version "13-internal" 2019-09-17 OpenJDK Runtime Environment (build 13-internal+0-adhoc.ubuntu.loom) OpenJDK 64-Bit Server VM (build 13-internal+0-adhoc.ubuntu.loom, mixed mode)
  29. 29. #DevoxxFR @JosePaumard En conclusion Un peu galère… Un peu long ! Un peu pédestre pour tester les fonctionnalités On se bat contre l’IDE, voire on le laisse tomber… Permet de suivre ce qui se fait, en temps réel !
  30. 30. #DevoxxFR À vous de jouer ! José Paumard @JosePaumard

×