Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

Construire son JDK en 10 étapes

718 visualizaciones

Publicado el

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.

Publicado en: Educación
  • Inicia sesión para ver los comentarios

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

×