SlideShare a Scribd company logo
1 of 30
Download to read offline
#DevoxxFR
Construire son JDK
en 10 étapes
José Paumard
@JosePaumard
#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…
#DevoxxFR @JosePaumard
Pourquoi son propre JDK ?
Et en plus on n’est même pas obligé de le faire !
#DevoxxFR @JosePaumard
Pourquoi son propre JDK ?
Et on peut aussi aller chercher …
#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
#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
#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
#DevoxxFR @JosePaumard
Structure du repository
Racine du repository : http://hg.openjdk.java.net/
#DevoxxFR @JosePaumard
Structure du repository
Racine du repository : http://hg.openjdk.java.net/
#DevoxxFR @JosePaumard
Structure du repository
Racine du repository : http://hg.openjdk.java.net/
#DevoxxFR @JosePaumard
Structure du repository
Racine du repository : http://hg.openjdk.java.net/
#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
#DevoxxFR @JosePaumard
C’est Loom que l’on veut !
$ hg clone http://hg.openjdk.java.net/loom/loom/
$ du -s *
2542764 loom
2555176 valhalla
#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)
#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)
#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)
#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)
#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
#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
#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)
#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)
#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
#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
#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
#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
...
#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
#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
#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)
#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 !
#DevoxxFR
À vous de jouer !
José Paumard
@JosePaumard

More Related Content

What's hot

Python RESTful webservices with Python: Flask and Django solutions
Python RESTful webservices with Python: Flask and Django solutionsPython RESTful webservices with Python: Flask and Django solutions
Python RESTful webservices with Python: Flask and Django solutionsSolution4Future
 
Composer the right way - SunshinePHP
Composer the right way - SunshinePHPComposer the right way - SunshinePHP
Composer the right way - SunshinePHPRafael Dohms
 
An Introduction to Solr
An Introduction to SolrAn Introduction to Solr
An Introduction to Solrtomhill
 
2016年のPerl (Long version)
2016年のPerl (Long version)2016年のPerl (Long version)
2016年のPerl (Long version)charsbar
 
using python module: doctest
using python module: doctestusing python module: doctest
using python module: doctestmitnk
 
React mit TypeScript – eine glückliche Ehe
React mit TypeScript – eine glückliche EheReact mit TypeScript – eine glückliche Ehe
React mit TypeScript – eine glückliche Eheinovex GmbH
 
Lean & Mean Tokyo Cabinet Recipes (with Lua) - FutureRuby '09
Lean & Mean Tokyo Cabinet Recipes (with Lua) - FutureRuby '09Lean & Mean Tokyo Cabinet Recipes (with Lua) - FutureRuby '09
Lean & Mean Tokyo Cabinet Recipes (with Lua) - FutureRuby '09Ilya Grigorik
 
Introducing Command Line Applications with Ruby
Introducing Command Line Applications with RubyIntroducing Command Line Applications with Ruby
Introducing Command Line Applications with RubyNikhil Mungel
 
Puppet Systems Infrastructure Construction Kit
Puppet Systems Infrastructure Construction KitPuppet Systems Infrastructure Construction Kit
Puppet Systems Infrastructure Construction KitAlessandro Franceschi
 
Crafting Beautiful CLI Applications in Ruby
Crafting Beautiful CLI Applications in RubyCrafting Beautiful CLI Applications in Ruby
Crafting Beautiful CLI Applications in RubyNikhil Mungel
 
PuppetConf 2017: Puppet Tasks: Taming ssh in a "for" loop- Alex Dreyer, Puppet
PuppetConf 2017: Puppet Tasks: Taming ssh in a "for" loop- Alex Dreyer, PuppetPuppetConf 2017: Puppet Tasks: Taming ssh in a "for" loop- Alex Dreyer, Puppet
PuppetConf 2017: Puppet Tasks: Taming ssh in a "for" loop- Alex Dreyer, PuppetPuppet
 
Puppet Continuous Integration with PE and GitLab
Puppet Continuous Integration with PE and GitLabPuppet Continuous Integration with PE and GitLab
Puppet Continuous Integration with PE and GitLabAlessandro Franceschi
 
C++ for Java Developers (JavaZone Academy 2018)
C++ for Java Developers (JavaZone Academy 2018)C++ for Java Developers (JavaZone Academy 2018)
C++ for Java Developers (JavaZone Academy 2018)Patricia Aas
 
Flask RESTful Flask HTTPAuth
Flask RESTful Flask HTTPAuthFlask RESTful Flask HTTPAuth
Flask RESTful Flask HTTPAuthEueung Mulyana
 
Creating Lazy stream in CSharp
Creating Lazy stream in CSharpCreating Lazy stream in CSharp
Creating Lazy stream in CSharpDhaval Dalal
 
What you need to remember when you upload to CPAN
What you need to remember when you upload to CPANWhat you need to remember when you upload to CPAN
What you need to remember when you upload to CPANcharsbar
 

What's hot (20)

Python RESTful webservices with Python: Flask and Django solutions
Python RESTful webservices with Python: Flask and Django solutionsPython RESTful webservices with Python: Flask and Django solutions
Python RESTful webservices with Python: Flask and Django solutions
 
Effective Benchmarks
Effective BenchmarksEffective Benchmarks
Effective Benchmarks
 
Git::Hooks
Git::HooksGit::Hooks
Git::Hooks
 
Composer the right way - SunshinePHP
Composer the right way - SunshinePHPComposer the right way - SunshinePHP
Composer the right way - SunshinePHP
 
An Introduction to Solr
An Introduction to SolrAn Introduction to Solr
An Introduction to Solr
 
2016年のPerl (Long version)
2016年のPerl (Long version)2016年のPerl (Long version)
2016年のPerl (Long version)
 
Getting testy with Perl
Getting testy with PerlGetting testy with Perl
Getting testy with Perl
 
using python module: doctest
using python module: doctestusing python module: doctest
using python module: doctest
 
React mit TypeScript – eine glückliche Ehe
React mit TypeScript – eine glückliche EheReact mit TypeScript – eine glückliche Ehe
React mit TypeScript – eine glückliche Ehe
 
Spl in the wild
Spl in the wildSpl in the wild
Spl in the wild
 
Lean & Mean Tokyo Cabinet Recipes (with Lua) - FutureRuby '09
Lean & Mean Tokyo Cabinet Recipes (with Lua) - FutureRuby '09Lean & Mean Tokyo Cabinet Recipes (with Lua) - FutureRuby '09
Lean & Mean Tokyo Cabinet Recipes (with Lua) - FutureRuby '09
 
Introducing Command Line Applications with Ruby
Introducing Command Line Applications with RubyIntroducing Command Line Applications with Ruby
Introducing Command Line Applications with Ruby
 
Puppet Systems Infrastructure Construction Kit
Puppet Systems Infrastructure Construction KitPuppet Systems Infrastructure Construction Kit
Puppet Systems Infrastructure Construction Kit
 
Crafting Beautiful CLI Applications in Ruby
Crafting Beautiful CLI Applications in RubyCrafting Beautiful CLI Applications in Ruby
Crafting Beautiful CLI Applications in Ruby
 
PuppetConf 2017: Puppet Tasks: Taming ssh in a "for" loop- Alex Dreyer, Puppet
PuppetConf 2017: Puppet Tasks: Taming ssh in a "for" loop- Alex Dreyer, PuppetPuppetConf 2017: Puppet Tasks: Taming ssh in a "for" loop- Alex Dreyer, Puppet
PuppetConf 2017: Puppet Tasks: Taming ssh in a "for" loop- Alex Dreyer, Puppet
 
Puppet Continuous Integration with PE and GitLab
Puppet Continuous Integration with PE and GitLabPuppet Continuous Integration with PE and GitLab
Puppet Continuous Integration with PE and GitLab
 
C++ for Java Developers (JavaZone Academy 2018)
C++ for Java Developers (JavaZone Academy 2018)C++ for Java Developers (JavaZone Academy 2018)
C++ for Java Developers (JavaZone Academy 2018)
 
Flask RESTful Flask HTTPAuth
Flask RESTful Flask HTTPAuthFlask RESTful Flask HTTPAuth
Flask RESTful Flask HTTPAuth
 
Creating Lazy stream in CSharp
Creating Lazy stream in CSharpCreating Lazy stream in CSharp
Creating Lazy stream in CSharp
 
What you need to remember when you upload to CPAN
What you need to remember when you upload to CPANWhat you need to remember when you upload to CPAN
What you need to remember when you upload to CPAN
 

Similar to Construire son JDK en 10 étapes

Hands on Docker - Launch your own LEMP or LAMP stack
Hands on Docker -  Launch your own LEMP or LAMP stackHands on Docker -  Launch your own LEMP or LAMP stack
Hands on Docker - Launch your own LEMP or LAMP stackDana Luther
 
Introduction to Docker
Introduction  to DockerIntroduction  to Docker
Introduction to DockerJian Wu
 
Docker for mere mortals
Docker for mere mortalsDocker for mere mortals
Docker for mere mortalsHenryk Konsek
 
Dockerfish-Tutorial
Dockerfish-TutorialDockerfish-Tutorial
Dockerfish-TutorialBrian Hood
 
Introduction to Docker - Learning containerization XP conference 2016
Introduction to Docker - Learning containerization  XP conference 2016Introduction to Docker - Learning containerization  XP conference 2016
Introduction to Docker - Learning containerization XP conference 2016XP Conference India
 
Docker 활용법: dumpdocker
Docker 활용법: dumpdockerDocker 활용법: dumpdocker
Docker 활용법: dumpdockerJaehwa Park
 
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHPHands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHPDana Luther
 
IBM Index 2018 Conference Workshop: Modernizing Traditional Java App's with D...
IBM Index 2018 Conference Workshop: Modernizing Traditional Java App's with D...IBM Index 2018 Conference Workshop: Modernizing Traditional Java App's with D...
IBM Index 2018 Conference Workshop: Modernizing Traditional Java App's with D...Eric Smalling
 
Boxen: How to Manage an Army of Laptops
Boxen: How to Manage an Army of LaptopsBoxen: How to Manage an Army of Laptops
Boxen: How to Manage an Army of LaptopsPuppet
 
Bangpypers april-meetup-2012
Bangpypers april-meetup-2012Bangpypers april-meetup-2012
Bangpypers april-meetup-2012Deepak Garg
 
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOpsОмские ИТ-субботники
 
Docker in Action
Docker in ActionDocker in Action
Docker in ActionAlper Kanat
 
Streamline your development environment with docker
Streamline your development environment with dockerStreamline your development environment with docker
Streamline your development environment with dockerGiacomo Bagnoli
 
2012 coscup - Build your PHP application on Heroku
2012 coscup - Build your PHP application on Heroku2012 coscup - Build your PHP application on Heroku
2012 coscup - Build your PHP application on Herokuronnywang_tw
 
Docker jako prostředí pro automatizaci testů
Docker jako prostředí pro automatizaci testůDocker jako prostředí pro automatizaci testů
Docker jako prostředí pro automatizaci testůRadim Daniel Pánek
 

Similar to Construire son JDK en 10 étapes (20)

Lab docker
Lab dockerLab docker
Lab docker
 
Hands on Docker - Launch your own LEMP or LAMP stack
Hands on Docker -  Launch your own LEMP or LAMP stackHands on Docker -  Launch your own LEMP or LAMP stack
Hands on Docker - Launch your own LEMP or LAMP stack
 
Docker perl build
Docker perl buildDocker perl build
Docker perl build
 
Introduction to Docker
Introduction  to DockerIntroduction  to Docker
Introduction to Docker
 
Docker for mere mortals
Docker for mere mortalsDocker for mere mortals
Docker for mere mortals
 
Dockerfish-Tutorial
Dockerfish-TutorialDockerfish-Tutorial
Dockerfish-Tutorial
 
Docker by Example - Basics
Docker by Example - Basics Docker by Example - Basics
Docker by Example - Basics
 
Introduction to Docker - Learning containerization XP conference 2016
Introduction to Docker - Learning containerization  XP conference 2016Introduction to Docker - Learning containerization  XP conference 2016
Introduction to Docker - Learning containerization XP conference 2016
 
A Hands-on Introduction to Docker
A Hands-on Introduction to DockerA Hands-on Introduction to Docker
A Hands-on Introduction to Docker
 
Docker 활용법: dumpdocker
Docker 활용법: dumpdockerDocker 활용법: dumpdocker
Docker 활용법: dumpdocker
 
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHPHands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP
 
IBM Index 2018 Conference Workshop: Modernizing Traditional Java App's with D...
IBM Index 2018 Conference Workshop: Modernizing Traditional Java App's with D...IBM Index 2018 Conference Workshop: Modernizing Traditional Java App's with D...
IBM Index 2018 Conference Workshop: Modernizing Traditional Java App's with D...
 
Boxen: How to Manage an Army of Laptops
Boxen: How to Manage an Army of LaptopsBoxen: How to Manage an Army of Laptops
Boxen: How to Manage an Army of Laptops
 
Bangpypers april-meetup-2012
Bangpypers april-meetup-2012Bangpypers april-meetup-2012
Bangpypers april-meetup-2012
 
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
 
Docker in Action
Docker in ActionDocker in Action
Docker in Action
 
Streamline your development environment with docker
Streamline your development environment with dockerStreamline your development environment with docker
Streamline your development environment with docker
 
2012 coscup - Build your PHP application on Heroku
2012 coscup - Build your PHP application on Heroku2012 coscup - Build your PHP application on Heroku
2012 coscup - Build your PHP application on Heroku
 
Intro django
Intro djangoIntro django
Intro django
 
Docker jako prostředí pro automatizaci testů
Docker jako prostředí pro automatizaci testůDocker jako prostředí pro automatizaci testů
Docker jako prostředí pro automatizaci testů
 

More from José Paumard

Loom Virtual Threads in the JDK 19
Loom Virtual Threads in the JDK 19Loom Virtual Threads in the JDK 19
Loom Virtual Threads in the JDK 19José Paumard
 
From Java 11 to 17 and beyond.pdf
From Java 11 to 17 and beyond.pdfFrom Java 11 to 17 and beyond.pdf
From Java 11 to 17 and beyond.pdfJosé Paumard
 
The Future of Java: Records, Sealed Classes and Pattern Matching
The Future of Java: Records, Sealed Classes and Pattern MatchingThe Future of Java: Records, Sealed Classes and Pattern Matching
The Future of Java: Records, Sealed Classes and Pattern MatchingJosé Paumard
 
Deep Dive Java 17 Devoxx UK
Deep Dive Java 17 Devoxx UKDeep Dive Java 17 Devoxx UK
Deep Dive Java 17 Devoxx UKJosé Paumard
 
Designing functional and fluent API: application to some GoF patterns
Designing functional and fluent API: application to some GoF patternsDesigning functional and fluent API: application to some GoF patterns
Designing functional and fluent API: application to some GoF patternsJosé Paumard
 
The Sincerest Form of Flattery
The Sincerest Form of FlatteryThe Sincerest Form of Flattery
The Sincerest Form of FlatteryJosé Paumard
 
The Sincerest Form of Flattery
The Sincerest Form of FlatteryThe Sincerest Form of Flattery
The Sincerest Form of FlatteryJosé Paumard
 
Designing functional and fluent API: example of the Visitor Pattern
Designing functional and fluent API: example of the Visitor PatternDesigning functional and fluent API: example of the Visitor Pattern
Designing functional and fluent API: example of the Visitor PatternJosé Paumard
 
Java Keeps Throttling Up!
Java Keeps Throttling Up!Java Keeps Throttling Up!
Java Keeps Throttling Up!José Paumard
 
Lambdas and Streams Master Class Part 2
Lambdas and Streams Master Class Part 2Lambdas and Streams Master Class Part 2
Lambdas and Streams Master Class Part 2José Paumard
 
Lambda and Stream Master class - part 1
Lambda and Stream Master class - part 1Lambda and Stream Master class - part 1
Lambda and Stream Master class - part 1José Paumard
 
JAX-RS and CDI Bike the (Reactive) Bridge
JAX-RS and CDI Bike the (Reactive) BridgeJAX-RS and CDI Bike the (Reactive) Bridge
JAX-RS and CDI Bike the (Reactive) BridgeJosé Paumard
 
Collectors in the Wild
Collectors in the WildCollectors in the Wild
Collectors in the WildJosé Paumard
 
JAX RS and CDI bike the reactive bridge
JAX RS and CDI bike the reactive bridgeJAX RS and CDI bike the reactive bridge
JAX RS and CDI bike the reactive bridgeJosé Paumard
 
L'API Collector dans tous ses états
L'API Collector dans tous ses étatsL'API Collector dans tous ses états
L'API Collector dans tous ses étatsJosé Paumard
 
Linked to ArrayList: the full story
Linked to ArrayList: the full storyLinked to ArrayList: the full story
Linked to ArrayList: the full storyJosé Paumard
 
ArrayList et LinkedList sont dans un bateau
ArrayList et LinkedList sont dans un bateauArrayList et LinkedList sont dans un bateau
ArrayList et LinkedList sont dans un bateauJosé Paumard
 

More from José Paumard (20)

Loom Virtual Threads in the JDK 19
Loom Virtual Threads in the JDK 19Loom Virtual Threads in the JDK 19
Loom Virtual Threads in the JDK 19
 
From Java 11 to 17 and beyond.pdf
From Java 11 to 17 and beyond.pdfFrom Java 11 to 17 and beyond.pdf
From Java 11 to 17 and beyond.pdf
 
The Future of Java: Records, Sealed Classes and Pattern Matching
The Future of Java: Records, Sealed Classes and Pattern MatchingThe Future of Java: Records, Sealed Classes and Pattern Matching
The Future of Java: Records, Sealed Classes and Pattern Matching
 
Deep Dive Java 17 Devoxx UK
Deep Dive Java 17 Devoxx UKDeep Dive Java 17 Devoxx UK
Deep Dive Java 17 Devoxx UK
 
Designing functional and fluent API: application to some GoF patterns
Designing functional and fluent API: application to some GoF patternsDesigning functional and fluent API: application to some GoF patterns
Designing functional and fluent API: application to some GoF patterns
 
The Sincerest Form of Flattery
The Sincerest Form of FlatteryThe Sincerest Form of Flattery
The Sincerest Form of Flattery
 
The Sincerest Form of Flattery
The Sincerest Form of FlatteryThe Sincerest Form of Flattery
The Sincerest Form of Flattery
 
Designing functional and fluent API: example of the Visitor Pattern
Designing functional and fluent API: example of the Visitor PatternDesigning functional and fluent API: example of the Visitor Pattern
Designing functional and fluent API: example of the Visitor Pattern
 
Java Keeps Throttling Up!
Java Keeps Throttling Up!Java Keeps Throttling Up!
Java Keeps Throttling Up!
 
Lambdas and Streams Master Class Part 2
Lambdas and Streams Master Class Part 2Lambdas and Streams Master Class Part 2
Lambdas and Streams Master Class Part 2
 
Lambda and Stream Master class - part 1
Lambda and Stream Master class - part 1Lambda and Stream Master class - part 1
Lambda and Stream Master class - part 1
 
JAX-RS and CDI Bike the (Reactive) Bridge
JAX-RS and CDI Bike the (Reactive) BridgeJAX-RS and CDI Bike the (Reactive) Bridge
JAX-RS and CDI Bike the (Reactive) Bridge
 
Collectors in the Wild
Collectors in the WildCollectors in the Wild
Collectors in the Wild
 
Streams in the wild
Streams in the wildStreams in the wild
Streams in the wild
 
JAX RS and CDI bike the reactive bridge
JAX RS and CDI bike the reactive bridgeJAX RS and CDI bike the reactive bridge
JAX RS and CDI bike the reactive bridge
 
Free your lambdas
Free your lambdasFree your lambdas
Free your lambdas
 
L'API Collector dans tous ses états
L'API Collector dans tous ses étatsL'API Collector dans tous ses états
L'API Collector dans tous ses états
 
Linked to ArrayList: the full story
Linked to ArrayList: the full storyLinked to ArrayList: the full story
Linked to ArrayList: the full story
 
Free your lambdas
Free your lambdasFree your lambdas
Free your lambdas
 
ArrayList et LinkedList sont dans un bateau
ArrayList et LinkedList sont dans un bateauArrayList et LinkedList sont dans un bateau
ArrayList et LinkedList sont dans un bateau
 

Recently uploaded

Atmosphere science 7 quarter 4 .........
Atmosphere science 7 quarter 4 .........Atmosphere science 7 quarter 4 .........
Atmosphere science 7 quarter 4 .........LeaCamillePacle
 
ACC 2024 Chronicles. Cardiology. Exam.pdf
ACC 2024 Chronicles. Cardiology. Exam.pdfACC 2024 Chronicles. Cardiology. Exam.pdf
ACC 2024 Chronicles. Cardiology. Exam.pdfSpandanaRallapalli
 
How to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERPHow to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERPCeline George
 
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdfAMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdfphamnguyenenglishnb
 
Romantic Opera MUSIC FOR GRADE NINE pptx
Romantic Opera MUSIC FOR GRADE NINE pptxRomantic Opera MUSIC FOR GRADE NINE pptx
Romantic Opera MUSIC FOR GRADE NINE pptxsqpmdrvczh
 
Quarter 4 Peace-education.pptx Catch Up Friday
Quarter 4 Peace-education.pptx Catch Up FridayQuarter 4 Peace-education.pptx Catch Up Friday
Quarter 4 Peace-education.pptx Catch Up FridayMakMakNepo
 
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdf
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdfLike-prefer-love -hate+verb+ing & silent letters & citizenship text.pdf
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdfMr Bounab Samir
 
Introduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptxIntroduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptxpboyjonauth
 
Keynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designKeynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designMIPLM
 
DATA STRUCTURE AND ALGORITHM for beginners
DATA STRUCTURE AND ALGORITHM for beginnersDATA STRUCTURE AND ALGORITHM for beginners
DATA STRUCTURE AND ALGORITHM for beginnersSabitha Banu
 
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPTECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPTiammrhaywood
 
Influencing policy (training slides from Fast Track Impact)
Influencing policy (training slides from Fast Track Impact)Influencing policy (training slides from Fast Track Impact)
Influencing policy (training slides from Fast Track Impact)Mark Reed
 
Employee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptxEmployee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptxNirmalaLoungPoorunde1
 
Roles & Responsibilities in Pharmacovigilance
Roles & Responsibilities in PharmacovigilanceRoles & Responsibilities in Pharmacovigilance
Roles & Responsibilities in PharmacovigilanceSamikshaHamane
 
Crayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon ACrayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon AUnboundStockton
 
Proudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptxProudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptxthorishapillay1
 

Recently uploaded (20)

Atmosphere science 7 quarter 4 .........
Atmosphere science 7 quarter 4 .........Atmosphere science 7 quarter 4 .........
Atmosphere science 7 quarter 4 .........
 
ACC 2024 Chronicles. Cardiology. Exam.pdf
ACC 2024 Chronicles. Cardiology. Exam.pdfACC 2024 Chronicles. Cardiology. Exam.pdf
ACC 2024 Chronicles. Cardiology. Exam.pdf
 
How to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERPHow to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERP
 
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdfAMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
 
Romantic Opera MUSIC FOR GRADE NINE pptx
Romantic Opera MUSIC FOR GRADE NINE pptxRomantic Opera MUSIC FOR GRADE NINE pptx
Romantic Opera MUSIC FOR GRADE NINE pptx
 
Quarter 4 Peace-education.pptx Catch Up Friday
Quarter 4 Peace-education.pptx Catch Up FridayQuarter 4 Peace-education.pptx Catch Up Friday
Quarter 4 Peace-education.pptx Catch Up Friday
 
TataKelola dan KamSiber Kecerdasan Buatan v022.pdf
TataKelola dan KamSiber Kecerdasan Buatan v022.pdfTataKelola dan KamSiber Kecerdasan Buatan v022.pdf
TataKelola dan KamSiber Kecerdasan Buatan v022.pdf
 
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdf
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdfLike-prefer-love -hate+verb+ing & silent letters & citizenship text.pdf
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdf
 
Introduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptxIntroduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptx
 
Keynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designKeynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-design
 
Model Call Girl in Bikash Puri Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Bikash Puri  Delhi reach out to us at 🔝9953056974🔝Model Call Girl in Bikash Puri  Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Bikash Puri Delhi reach out to us at 🔝9953056974🔝
 
DATA STRUCTURE AND ALGORITHM for beginners
DATA STRUCTURE AND ALGORITHM for beginnersDATA STRUCTURE AND ALGORITHM for beginners
DATA STRUCTURE AND ALGORITHM for beginners
 
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPTECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
 
Influencing policy (training slides from Fast Track Impact)
Influencing policy (training slides from Fast Track Impact)Influencing policy (training slides from Fast Track Impact)
Influencing policy (training slides from Fast Track Impact)
 
Rapple "Scholarly Communications and the Sustainable Development Goals"
Rapple "Scholarly Communications and the Sustainable Development Goals"Rapple "Scholarly Communications and the Sustainable Development Goals"
Rapple "Scholarly Communications and the Sustainable Development Goals"
 
Employee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptxEmployee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptx
 
Roles & Responsibilities in Pharmacovigilance
Roles & Responsibilities in PharmacovigilanceRoles & Responsibilities in Pharmacovigilance
Roles & Responsibilities in Pharmacovigilance
 
Crayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon ACrayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon A
 
Proudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptxProudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptx
 
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
 

Construire son JDK en 10 étapes

  • 1. #DevoxxFR Construire son JDK en 10 étapes José Paumard @JosePaumard
  • 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. #DevoxxFR @JosePaumard Pourquoi son propre JDK ? Et en plus on n’est même pas obligé de le faire !
  • 4. #DevoxxFR @JosePaumard Pourquoi son propre JDK ? Et on peut aussi aller chercher …
  • 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. #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. #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. #DevoxxFR @JosePaumard Structure du repository Racine du repository : http://hg.openjdk.java.net/
  • 9. #DevoxxFR @JosePaumard Structure du repository Racine du repository : http://hg.openjdk.java.net/
  • 10. #DevoxxFR @JosePaumard Structure du repository Racine du repository : http://hg.openjdk.java.net/
  • 11. #DevoxxFR @JosePaumard Structure du repository Racine du repository : http://hg.openjdk.java.net/
  • 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. #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. #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. #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. #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. #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. #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. #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. #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. #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. #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. #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. #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. #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. #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. #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. #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. #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. #DevoxxFR À vous de jouer ! José Paumard @JosePaumard