Skip to content

Commit 488a490

Browse files
committed
Ready for soft-shake
1 parent da90e3d commit 488a490

File tree

35 files changed

+394
-130
lines changed

35 files changed

+394
-130
lines changed

.vscode/settings.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
// Placez vos paramètres dans ce fichier pour remplacer les paramètres par défaut et les paramètres utilisateur.
2+
{
3+
"editor.fontSize": 14
4+
}

README

Lines changed: 41 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -39,34 +39,34 @@ export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
3939
../classpath-demo/scripts/prepare-classpath.sh
4040

4141
# Ça ne marche pas
42-
java fr.sewatech.classpath.example.Count 40 45
42+
java Count 40 45
4343

4444
# Ça marche
45-
java -cp lib/misc-example.jar fr.sewatech.classpath.example.Count 40 45
45+
java -cp lib/misc-example.jar Count 40 45
4646

4747
Démo 2 : bootclasspath
4848
-----------
4949

5050
# Court-circuiter le Integer par défaut
51-
java -Xbootclasspath/p:lib/misc-example.jar fr.sewatech.classpath.example.Count 40 45
51+
java -Xbootclasspath/p:lib/misc-example.jar Count 40 45
5252

5353
# En théorie, le endorsed ne devrait pas avoir d'effet sur Integer. En réalité,...
54-
java -Djava.endorsed.dirs=lib fr.sewatech.classpath.example.Count 40 45
54+
java -Djava.endorsed.dirs=lib Count 40 45
5555

5656
Démo 3 : URLClassLoader
5757
-----------
5858

5959
# Ça ne marche pas
60-
java -cp lib/message-launcher.jar fr.sewatech.classpath.Hello
60+
java -cp lib/message-launcher.jar Hello
6161

6262
# Ça marche
63-
java -cp "lib/*" fr.sewatech.classpath.Hello
63+
java -cp "lib/*" Hello
6464

6565
# Ça marche
66-
java -cp lib/message-launcher.jar fr.sewatech.classpath.HelloViaURL
66+
java -cp lib/message-launcher.jar HelloViaURL
6767

6868
# Ça ne marche pas
69-
java -cp lib/message-launcher.jar:lib/message-service.jar fr.sewatech.classpath.HelloViaURL
69+
java -cp lib/message-launcher.jar:lib/message-service.jar HelloViaURL
7070

7171
Démo 4 : Custom ClassLoader
7272
-----------
@@ -75,20 +75,20 @@ Démo 4 : Custom ClassLoader
7575
cd ../classpath-demo; mvn install; cd ../classpath-demo-work
7676

7777
# Ça marche
78-
java -cp lib/message-launcher.jar fr.sewatech.classpath.HelloViaMvnRepo 2.0-SNAPSHOT
78+
java -cp lib/message-launcher.jar HelloViaMvnRepo 2.0-SNAPSHOT
7979
# Ça marche
80-
java -cp lib/message-launcher.jar fr.sewatech.classpath.HelloViaMvnRepo 2.0-SNAPSHOT local
80+
java -cp lib/message-launcher.jar HelloViaMvnRepo 2.0-SNAPSHOT local
8181

8282
# Ça ne marche pas
83-
java -cp lib/message-launcher.jar:lib/message-service.jar fr.sewatech.classpath.HelloViaMvnRepo 2.0-SNAPSHOT
83+
java -cp lib/message-launcher.jar:lib/message-service.jar HelloViaMvnRepo 2.0-SNAPSHOT
8484
# Ça marche
85-
java -cp lib/message-launcher.jar:lib/message-service.jar fr.sewatech.classpath.HelloViaMvnRepo 2.0-SNAPSHOT local
85+
java -cp lib/message-launcher.jar:lib/message-service.jar HelloViaMvnRepo 2.0-SNAPSHOT local
8686

8787
Démo 5 : jar hell
8888
-----------
8989

9090
# Ça ne marche pas
91-
java -cp "lib/*" fr.sewatech.classpath.Hello log
91+
java -cp "lib/*" Hello log
9292

9393
Démo 6 : jboss modules
9494
-----------
@@ -105,9 +105,9 @@ Démo 7 : jigsaw
105105
-----------
106106

107107
# OK
108-
java --module-path jigsaw-modules -m message.launcher/fr.sewatech.classpath.Hello
108+
java --module-path jigsaw-modules -m message.launcher/Hello
109109
# KO
110-
java --module-path jigsaw-modules -m message.launcher/fr.sewatech.classpath.Hello log
110+
java --module-path jigsaw-modules -m message.launcher/Hello log
111111

112112
Démo 8 : modular JDK
113113
-----------
@@ -118,8 +118,8 @@ Démo 9 : jigsaw - mode classpath
118118
-----------
119119

120120
# Ça marche encore
121-
java -cp jigsaw-modules/misc-examples.jar fr.sewatech.classpath.example.Count 40 45
122-
java -cp "jigsaw-modules/*" fr.sewatech.classpath.Hello
121+
java -cp jigsaw-modules/misc-examples.jar Count 40 45
122+
java -cp "jigsaw-modules/*" Hello
123123

124124
# Ça ne marche plus
125125
java -cp lib/misc-examples.jar fr.sewatech.classpath.example.JaxBExample
@@ -149,65 +149,65 @@ Démo 11 : export
149149
-----------
150150

151151
# Patch slf4j with scripts/prepare-slf4j.sh
152-
java --module-path jigsaw-modules -m message.launcher/fr.sewatech.classpath.Hello log
152+
java --module-path jigsaw-modules -m message.launcher/Hello log
153153
# l'erreur est plus explicite ; si on avait eu ce jar à la compilation,l'erreur aurait eu lieu à la compilation
154154

155155
Démo 12 : classloader
156156
-----------
157157

158158
# OK
159-
java -cp jigsaw-modules/message-launcher.jar fr.sewatech.classpath.HelloViaURL
159+
java -cp jigsaw-modules/message-launcher.jar HelloViaURL
160160
# KO
161-
java -cp jigsaw-modules/message-launcher.jar:lib/message-service.jar fr.sewatech.classpath.HelloViaURL
161+
java -cp jigsaw-modules/message-launcher.jar:lib/message-service.jar HelloViaURL
162162

163163
# Erreur : -Xbootclasspath/p is no longer a supported option
164-
java -Xbootclasspath/p:jigsaw-modules/misc-examples.jar fr.sewatech.classpath.example.Count 40 45
164+
java -Xbootclasspath/p:jigsaw-modules/misc-examples.jar Count 40 45
165165
# Erreur : -Djava.endorsed.dirs=lib is not supported
166-
java -Djava.endorsed.dirs=lib fr.sewatech.classpath.example.Count 40 45
166+
java -Djava.endorsed.dirs=lib Count 40 45
167167

168168
# Prepare patch with scripts/prepare-patch.sh
169-
java --module-path jigsaw-modules -m misc.examples/fr.sewatech.classpath.example.Count
170-
java --patch-module java.base=../classpath-demo/misc-examples/target/patch-classes --module-path jigsaw-modules -m misc.examples/fr.sewatech.classpath.example.Count
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
171171

172172
Annexe
173173
-----------
174174

175175
# KO
176-
java -cp lib/message-launcher.jar fr.sewatech.classpath.Hello
176+
java -cp lib/message-launcher.jar Hello
177177
# OK
178-
java -cp "lib/*" fr.sewatech.classpath.Hello
178+
java -cp "lib/*" Hello
179179
# OK
180-
java -cp lib/message-launcher.jar fr.sewatech.classpath.HelloViaURL
180+
java -cp lib/message-launcher.jar HelloViaURL
181181
# KO
182-
java -cp lib/message-launcher.jar:lib/message-service.jar fr.sewatech.classpath.HelloViaURL
182+
java -cp lib/message-launcher.jar:lib/message-service.jar HelloViaURL
183183
# OK
184-
java -cp lib/message-launcher.jar fr.sewatech.classpath.HelloViaMvnRepo 2.0-SNAPSHOT
184+
java -cp lib/message-launcher.jar HelloViaMvnRepo 2.0-SNAPSHOT
185185
# OK
186-
java -cp lib/message-launcher.jar fr.sewatech.classpath.HelloViaMvnRepo 2.0-SNAPSHOT local
186+
java -cp lib/message-launcher.jar HelloViaMvnRepo 2.0-SNAPSHOT local
187187
# KO
188-
java -cp lib/message-launcher.jar:lib/message-service.jar fr.sewatech.classpath.HelloViaMvnRepo 2.0-SNAPSHOT
188+
java -cp lib/message-launcher.jar:lib/message-service.jar HelloViaMvnRepo 2.0-SNAPSHOT
189189
# OK
190-
java -cp lib/message-launcher.jar:lib/message-service.jar fr.sewatech.classpath.HelloViaMvnRepo 2.0-SNAPSHOT local
190+
java -cp lib/message-launcher.jar:lib/message-service.jar HelloViaMvnRepo 2.0-SNAPSHOT local
191191
# KO
192-
java -cp "lib/*" fr.sewatech.classpath.Hello log
192+
java -cp "lib/*" Hello log
193193

194194
# expliquer les modules internes (java.xml.bind)
195-
java -cp lib/misc-examples.jar fr.sewatech.classpath.example.StandardClassLoading
196-
java --add-modules java.xml.bind -cp lib/misc-examples.jar fr.sewatech.classpath.example.StandardClassLoading
195+
java -cp lib/misc-examples.jar Standard
196+
java --add-modules java.xml.bind -cp lib/misc-examples.jar Standard
197197

198198
# Build (dans le bon répertoire) avec JDK 9 avec jigsaw-nightly
199199
export JAVA_HOME=~/Projet/hasalex/jigsaw/jdk-9b138.jdk/Contents/Home
200200
cd ../classpath-demo; mvn clean install -Pjigsaw; cd ../classpath-demo-work
201201

202202
# OK
203-
java --module-path jigsaw-modules -m message.launcher/fr.sewatech.classpath.HelloViaURL
203+
java --module-path jigsaw-modules -m message.launcher/HelloViaURL
204204
# OK
205-
java --module-path jigsaw-modules -m message.launcher/fr.sewatech.classpath.HelloViaMvnRepo 2.0-SNAPSHOT
206-
java --module-path jigsaw-modules -m message.launcher/fr.sewatech.classpath.HelloViaMvnRepo 2.0-SNAPSHOT local
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
207207
# KO
208-
java --module-path jigsaw-modules -m message.launcher/fr.sewatech.classpath.Hello log
208+
java --module-path jigsaw-modules -m message.launcher/Hello log
209209

210210
# Modules vs Classpath : aucun changement visible
211211
# classpath = unnamed module
212-
java --add-modules java.xml.bind -cp lib/misc-examples.jar fr.sewatech.classpath.example.StandardClassLoading
213-
java --module-path jigsaw-modules -m misc.examples/fr.sewatech.classpath.example.StandardClassLoading
212+
java --add-modules java.xml.bind -cp lib/misc-examples.jar Standard
213+
java --module-path jigsaw-modules -m misc.examples/Standard

docs/demo-lite.md

Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
Démo en modé allégé (session 45 min)
2+
===========
3+
4+
Démo 1 : classpath and bootclasspath
5+
-----------
6+
7+
* KO :
8+
9+
java fr.sw.cp.misc.Count 40
10+
11+
* OK :
12+
13+
java -cp lib/misc-example.jar fr.sw.cp.misc.Count 40
14+
15+
* Court-circuiter le Integer par défaut
16+
17+
java -Xbootclasspath/p:lib/misc-example.jar fr.sw.cp.misc.Count 40
18+
19+
=> 8 min / 14h38
20+
21+
Démo 2 : ClassLoader
22+
-----------
23+
24+
* KO :
25+
26+
java -cp lib/message-launcher.jar fr.sw.cp.Hello
27+
28+
* OK :
29+
30+
java -cp "lib/*" fr.sw.cp.Hello
31+
32+
* OK :
33+
34+
java -cp lib/message-launcher.jar fr.sw.cp.HelloViaMvnRepo 2.0-SNAPSHOT
35+
36+
* KO :
37+
38+
java -cp lib/message-launcher.jar:lib/message-service.jar \
39+
fr.sw.cp.HelloViaMvnRepo 2.0-SNAPSHOT
40+
41+
* OK :
42+
43+
java -cp lib/message-launcher.jar:lib/message-service.jar \
44+
fr.sw.cp.HelloViaMvnRepo 2.0-SNAPSHOT local
45+
46+
=> 14 min / 14h44
47+
48+
Démo 3 : jar hell
49+
-----------
50+
51+
* KO :
52+
53+
java -cp "lib/*" fr.sw.cp.Hello log
54+
55+
=> 16 min /14h46
56+
57+
Démo 4 : jigsaw
58+
-----------
59+
60+
* OK
61+
62+
java --module-path jigsaw-modules -m message.launcher/fr.sw.cp.Hello
63+
64+
* KO
65+
66+
java --module-path jigsaw-modules -m message.launcher/fr.sw.cp.Hello debug
67+
68+
=> 25 min /14h55
69+
70+
Démo 5 : classpath mode and modular JDK
71+
-----------
72+
73+
* OK
74+
75+
java -cp "jigsaw-modules/*" fr.sw.cp.Hello
76+
77+
java -cp "lib/*" fr.sw.cp.Hello
78+
79+
* KO
80+
81+
java -cp lib/misc-examples.jar fr.sw.cp.misc.Advanced
82+
83+
* OK
84+
85+
java --add-modules java.xml.bind -cp lib/misc-examples.jar \
86+
fr.sw.cp.misc.Advanced
87+
88+
=> 27 min /14h57
89+
90+
Démo 6 : requires
91+
-----------
92+
93+
* Montrer le code
94+
95+
message.service a une dépendance vers message.common.
96+
97+
message.common n'a pas de module-info.java, c'est donc un module automatique.
98+
99+
* Requires unsupported
100+
101+
misc.examples a une dépendance vers jdk.unsupported.
102+
103+
Mettre `requires static jdk.unsupported;` en commentaire, puis recompiler.
104+
105+
./scripts/compile-j9.sh misc-examples
106+
107+
On voit les erreurs liées à Unsafe.
108+
109+
Si on rétablit la dépendance, la même compilation passe, mais avec des warnings.
110+
111+
=> 33 min /15h03
112+
113+
Démo 7 : export
114+
-----------
115+
116+
* Patch slf4j with scripts/prepare-slf4j.sh
117+
118+
java --module-path jigsaw-modules -m message.launcher/Hello debug
119+
120+
l'erreur est plus explicite ; si on avait eu ce jar à la compilation,
121+
l'erreur aurait eu lieu à la compilation
122+
123+
=> 38 min /15h08
124+
125+
Démo 8 : classloader
126+
-----------
127+
128+
* Erreur : -Xbootclasspath/p is no longer a supported option
129+
130+
java -Xbootclasspath/p:jigsaw-modules/misc-examples.jar Count 40
131+
132+
* Prepare patch with scripts/prepare-integer.sh
133+
134+
java --patch-module java.base=./jigsaw-patch/integer.jar \
135+
--module-path jigsaw-modules \
136+
-m misc.examples/fr.sw.cp.misc.Count 40
137+
138+
=> 42 min /15h12

message-launcher/src/main/java/fr/sewatech/classpath/util/ClasspathProperties.java renamed to message-launcher/src/main/java/fr/sewatech/classloader/ClasspathProperties.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package fr.sewatech.classpath.util;
1+
package fr.sewatech.classloader;
22

33
public class ClasspathProperties {
44
public static void printProperties() {

message-launcher/src/main/java/fr/sewatech/classpath/Hello.java

Lines changed: 0 additions & 10 deletions
This file was deleted.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package fr.sw.cp;
2+
3+
import fr.sewatech.message.Service;
4+
5+
public class Hello {
6+
public static void main(String[] args) throws Exception {
7+
boolean debug = args.length > 0 && args[0].startsWith("debug");
8+
new Service(System.out).hello(debug);
9+
}
10+
}

message-launcher/src/main/java/fr/sewatech/classpath/HelloViaMvnRepo.java renamed to message-launcher/src/main/java/fr/sw/cp/HelloViaMvnRepo.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package fr.sewatech.classpath;
1+
package fr.sw.cp;
22

33
import fr.sewatech.classloader.MavenRepositoryParentFirstClassLoader;
44
import fr.sewatech.classloader.MavenRepositoryLocalFirstClassLoader;

message-launcher/src/main/java/fr/sewatech/classpath/HelloViaURL.java renamed to message-launcher/src/main/java/fr/sw/cp/HelloViaURL.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package fr.sewatech.classpath;
1+
package fr.sw.cp;
22

33
import java.io.File;
44
import java.io.OutputStream;
Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
11
module message.launcher {
2-
requires message.common;
32
requires message.service;
43
}

message-printer/src/main/java/fr/sewatech/message/printer/MessagePrinter.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,16 @@
99
public class MessagePrinter implements Printer {
1010

1111
private PrintStream outputStream;
12+
1213
public MessagePrinter(PrintStream outputStream) {
1314
this.outputStream = outputStream;
1415
}
16+
1517
@Override
1618
public void print(Message message) {
17-
outputStream.println();
18-
outputStream.println();
19-
outputStream.print("\t");
20-
21-
outputStream.println(MessageFormatter.arrayFormat(message.getTemplate(), message.getParams()));
22-
23-
outputStream.println();
24-
outputStream.println();
19+
outputStream.println(
20+
"\n\n\t"
21+
+ MessageFormatter.arrayFormat(message.getTemplate(), message.getParams())
22+
+ "\n\n");
2523
}
2624
}

0 commit comments

Comments
 (0)