Skip to content

Commit fb6ff4b

Browse files
committed
Ready for LavaJUG, with JDK 9b152
1 parent 488a490 commit fb6ff4b

File tree

22 files changed

+331
-457
lines changed

22 files changed

+331
-457
lines changed

.vscode/settings.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
// Placez vos paramètres dans ce fichier pour remplacer les paramètres par défaut et les paramètres utilisateur.
22
{
3-
"editor.fontSize": 14
3+
// "editor.fontSize": 14
4+
"window.zoomLevel": 2,
5+
"java.configuration.updateBuildConfiguration": "automatic"
46
}

README

Lines changed: 4 additions & 210 deletions
Original file line numberDiff line numberDiff line change
@@ -1,213 +1,7 @@
1-
Démo de la présentation "Le classpath n'est pas mort... mais presque"
1+
Démo de la présentation jigsaw / classpass
22
---------------
33

4-
Ce projet a servi pour la démo à DevoxxFR 2013
4+
Ce projet a servi pour la démo de la conférence "Le classpath n'est pas mort... mais presque" à DevoxxFR 2013.
5+
Il a ensuite évolué vers Jigsaw en 2016.
56

6-
Préparation
7-
-----------
8-
9-
0-Prérequis : utiliser JDK 8, Maven est configuré ainsi.
10-
11-
1° étape : cloner le projet. Ben oui, c'est du git.
12-
13-
git clone git://github.com/hasalex/classpath-demo.git
14-
15-
cloner et builder le projet tomcat-modules dont il depend
16-
cf. https://github.com/hasalex/tomcat-modules
17-
18-
Pour cloner sous eclipse avec eGit, ajouter à la racine le fichier .project avant d'importer le projet
19-
Ceci pour definir un projet maven multi-modules.
20-
21-
2° étape : créer un répertoire de travail
22-
23-
mkdir classpath-demo-work
24-
cd classpath-demo-work
25-
sh ../classpath-demo/scripts/prepare.sh
26-
27-
Rem. : pour l'utiliser sous l'os windows utiliser 'git bash' : ca marche
28-
par exemple pour setter le JAVA_HOME, ajouter en debut de script (attention au chemin des repertoires !)
29-
export JAVA_HOME=/c/Java/jdk1.8.0_102
30-
export PATH=$JAVA_HOME/bin:$PATH
31-
32-
Rem. : le script doit subir quelques améliorations, par exemple pour la copie de jboss-module.jar
33-
34-
Démo 1 : classpath
35-
-----------
36-
37-
# Build with maven
38-
export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
39-
../classpath-demo/scripts/prepare-classpath.sh
40-
41-
# Ça ne marche pas
42-
java Count 40 45
43-
44-
# Ça marche
45-
java -cp lib/misc-example.jar Count 40 45
46-
47-
Démo 2 : bootclasspath
48-
-----------
49-
50-
# Court-circuiter le Integer par défaut
51-
java -Xbootclasspath/p:lib/misc-example.jar Count 40 45
52-
53-
# En théorie, le endorsed ne devrait pas avoir d'effet sur Integer. En réalité,...
54-
java -Djava.endorsed.dirs=lib Count 40 45
55-
56-
Démo 3 : URLClassLoader
57-
-----------
58-
59-
# Ça ne marche pas
60-
java -cp lib/message-launcher.jar Hello
61-
62-
# Ça marche
63-
java -cp "lib/*" Hello
64-
65-
# Ça marche
66-
java -cp lib/message-launcher.jar HelloViaURL
67-
68-
# Ça ne marche pas
69-
java -cp lib/message-launcher.jar:lib/message-service.jar HelloViaURL
70-
71-
Démo 4 : Custom ClassLoader
72-
-----------
73-
74-
# Build (dans le bon répertoire)
75-
cd ../classpath-demo; mvn install; cd ../classpath-demo-work
76-
77-
# Ça marche
78-
java -cp lib/message-launcher.jar HelloViaMvnRepo 2.0-SNAPSHOT
79-
# Ça marche
80-
java -cp lib/message-launcher.jar HelloViaMvnRepo 2.0-SNAPSHOT local
81-
82-
# Ça ne marche pas
83-
java -cp lib/message-launcher.jar:lib/message-service.jar HelloViaMvnRepo 2.0-SNAPSHOT
84-
# Ça marche
85-
java -cp lib/message-launcher.jar:lib/message-service.jar HelloViaMvnRepo 2.0-SNAPSHOT local
86-
87-
Démo 5 : jar hell
88-
-----------
89-
90-
# Ça ne marche pas
91-
java -cp "lib/*" Hello log
92-
93-
Démo 6 : jboss modules
94-
-----------
95-
96-
# Build (dans le bon répertoire)
97-
../classpath-demo/scripts/prepare-jboss-modules.sh
98-
99-
# Ça marche, comme avant (si les dépendances ont les bons slots)
100-
java -jar jboss-modules/jboss-modules.jar -mp jboss-modules fr.sewatech.message-launcher
101-
# Ça marche, mieux qu'avant
102-
java -jar jboss-modules/jboss-modules.jar -mp jboss-modules fr.sewatech.message-launcher log
103-
104-
Démo 7 : jigsaw
105-
-----------
106-
107-
# OK
108-
java --module-path jigsaw-modules -m message.launcher/Hello
109-
# KO
110-
java --module-path jigsaw-modules -m message.launcher/Hello log
111-
112-
Démo 8 : modular JDK
113-
-----------
114-
115-
# compiler misc-example sans "requires java.xml.bind"
116-
117-
Démo 9 : jigsaw - mode classpath
118-
-----------
119-
120-
# Ça marche encore
121-
java -cp jigsaw-modules/misc-examples.jar Count 40 45
122-
java -cp "jigsaw-modules/*" Hello
123-
124-
# Ça ne marche plus
125-
java -cp lib/misc-examples.jar fr.sewatech.classpath.example.JaxBExample
126-
# Ça marche
127-
java --add-modules java.xml.bind -cp lib/misc-examples.jar fr.sewatech.classpath.example.JaxBExample
128-
129-
Démo 10 : requires
130-
-----------
131-
132-
# Montrer le code
133-
# - automatic module
134-
135-
# Dans message-service
136-
# virer "requires message.common"
137-
# => compile HS
138-
139-
# Dans message-printer
140-
# passer "requires message.common" en transitive
141-
142-
# static / optional
143-
java --module-path jigsaw-modules -m misc.examples/fr.sewatech.classpath.example.JaxBExample
144-
# dans misc-example, mettre "requires java.xml.bind" en static
145-
java --module-path jigsaw-modules -m misc.examples/fr.sewatech.classpath.example.JaxBExample
146-
java --add-modules java.xml.bind --module-path jigsaw-modules -m misc.examples/fr.sewatech.classpath.example.JaxBExample
147-
148-
Démo 11 : export
149-
-----------
150-
151-
# Patch slf4j with scripts/prepare-slf4j.sh
152-
java --module-path jigsaw-modules -m message.launcher/Hello log
153-
# l'erreur est plus explicite ; si on avait eu ce jar à la compilation,l'erreur aurait eu lieu à la compilation
154-
155-
Démo 12 : classloader
156-
-----------
157-
158-
# OK
159-
java -cp jigsaw-modules/message-launcher.jar HelloViaURL
160-
# KO
161-
java -cp jigsaw-modules/message-launcher.jar:lib/message-service.jar HelloViaURL
162-
163-
# Erreur : -Xbootclasspath/p is no longer a supported option
164-
java -Xbootclasspath/p:jigsaw-modules/misc-examples.jar Count 40 45
165-
# Erreur : -Djava.endorsed.dirs=lib is not supported
166-
java -Djava.endorsed.dirs=lib Count 40 45
167-
168-
# Prepare patch with scripts/prepare-patch.sh
169-
java --module-path jigsaw-modules -m misc.examples/Count
170-
java --patch-module java.base=../classpath-demo/misc-examples/target/patch-classes --module-path jigsaw-modules -m misc.examples/Count
171-
172-
Annexe
173-
-----------
174-
175-
# KO
176-
java -cp lib/message-launcher.jar Hello
177-
# OK
178-
java -cp "lib/*" Hello
179-
# OK
180-
java -cp lib/message-launcher.jar HelloViaURL
181-
# KO
182-
java -cp lib/message-launcher.jar:lib/message-service.jar HelloViaURL
183-
# OK
184-
java -cp lib/message-launcher.jar HelloViaMvnRepo 2.0-SNAPSHOT
185-
# OK
186-
java -cp lib/message-launcher.jar HelloViaMvnRepo 2.0-SNAPSHOT local
187-
# KO
188-
java -cp lib/message-launcher.jar:lib/message-service.jar HelloViaMvnRepo 2.0-SNAPSHOT
189-
# OK
190-
java -cp lib/message-launcher.jar:lib/message-service.jar HelloViaMvnRepo 2.0-SNAPSHOT local
191-
# KO
192-
java -cp "lib/*" Hello log
193-
194-
# expliquer les modules internes (java.xml.bind)
195-
java -cp lib/misc-examples.jar Standard
196-
java --add-modules java.xml.bind -cp lib/misc-examples.jar Standard
197-
198-
# Build (dans le bon répertoire) avec JDK 9 avec jigsaw-nightly
199-
export JAVA_HOME=~/Projet/hasalex/jigsaw/jdk-9b138.jdk/Contents/Home
200-
cd ../classpath-demo; mvn clean install -Pjigsaw; cd ../classpath-demo-work
201-
202-
# OK
203-
java --module-path jigsaw-modules -m message.launcher/HelloViaURL
204-
# OK
205-
java --module-path jigsaw-modules -m message.launcher/HelloViaMvnRepo 2.0-SNAPSHOT
206-
java --module-path jigsaw-modules -m message.launcher/HelloViaMvnRepo 2.0-SNAPSHOT local
207-
# KO
208-
java --module-path jigsaw-modules -m message.launcher/Hello log
209-
210-
# Modules vs Classpath : aucun changement visible
211-
# classpath = unnamed module
212-
java --add-modules java.xml.bind -cp lib/misc-examples.jar Standard
213-
java --module-path jigsaw-modules -m misc.examples/Standard
7+
Le détail de la démo est expliqué dans le répertoire docs.

docs/demo-lite.md

Lines changed: 0 additions & 138 deletions
This file was deleted.

0 commit comments

Comments
 (0)