If you can't read please download the document
LorraineJUG - Le classpath n'est pas mort
Embed Size (px)
344 x 292
429 x 357
514 x 422
599 x 487
Citation preview
1. Alexis Hassler Le classpath n'est pas mort... Janvier 2015
mais presque
2. "Classpath is dead!" Mark Reinhold JavaOne 2009
3. Classpath Classloader Mort? Succession
4. Alexis Hassler Dveloppeur, formateur Java Indpendant
Co-leader du
5. Classpath
6. String hello = "Bonjour Devoxx"; MyStuff var; Chercher les
classes CLASSPATH
7. -classpath java -cp hello-lib.jar HelloWorld
8. Manifest Manifest-Version: 1.0 Class-Path: hello-lib.jar
Main-Class: HelloWorld
9. Connatre le classpath
System.getProperty("java.class.path");
10. Erreurs java.lang.NoClassDefFoundError
java.lang.ClassNotFoundException
11. Classpath Gr par des classloaders
12. Classloader
13. java.lang.ClassLoader loadClass(String name) : Class
getResource(String name) : URL getResources(String name) :
Enumeration getResourceAsStream(String name) : InputStream
getParent() : ClassLoader
14. Classloader sun.misc.Launcher$AppClassLoader CLASSPATH
MyStuff.class.getClassLoader()
15. Bootstrap Classloader null
classloader.getClass().getClassLoader()
16. Bootstrap Classloader BootstrapClassLoader
17. ExtensionClasspath sun.misc.Launcher$ExtClassLoader
sun.misc.Launcher$AppClassLoader Dlgation BootstrapClassLoader
Parent first Parent first System ClassLoader Extension
ClassLoader
18. Dlgation java -cp hello-lib.jar ...
System.getProperty("java.class.path"); ClasspathSystem
ClassLoader
19. Dlgation java -Djava.ext.dirs=~/.java8/ext ...
System.getProperty("java.ext.dirs"); Extension Extension
ClassLoader
20. Dlgation java -Xbootclasspath:hello-rt.jar ...
BootstrapClassLoader
System.getProperty("sun.boot.class.path");
21. bootclasspath java -Xbootclasspath:hello-rt.jar ... java
-Xbootclasspath/a:hello-lib.jar ... java
-Xbootclasspath/p:hello-lib.jar ...
22. Endorsed java -Djava.endorsed.dirs=~/.java8/endorsed ...
Endorsed BootstrapClassLoader
23. Endorsed APIs standards hors JCP org.omg (CORBA),
org.w3c.dom, org.xml.sax (XML) APIs standalone JAXP, JAXB,
Scripting, Compiler API,...
24. http://github.com/hasalex/classpath-demo
25. classloader-demo Dmonstration BootstrapClassLoader java -cp
cl-demo.jar fr.sewatech.classpath.Count System ClassLoader
26. classloader-demo Dmonstration BootstrapClassLoader java
-Xbootclasspath/p:cl-demo.jar fr.sewatech.classpath.Count
27. URLClassloader java.net.URLClassLoader
sun.misc.Launcher$AppClassLoader sun.misc.Launcher$ExtClassLoader
URLURLURL
28. URLClassloader System ClassLoader Bootstrap ClassLoader URL
ClassLoader URL ClassLoader URL ClassLoader Parent first Parent
first Parent first
29. http://github.com/hasalex/classpath-demo
30. Dmonstration java -cp cl-demo.jar:msg-main.jar
fr.sewatech.classpath.Hello classloader-demo message-main
message-common message-printer message-main
31. classloader-demo message-main message-common
message-printer message-main Dmonstration java -cp
cl-demo.jar:msg-main.jar fr.sewatech.classpath.HelloViaUrl
message-mainClasspath URLClassloader
32. Dmonstration classloader-demo message-common
message-printer message-main message-main System ClassLoader
ParentFirst ClassLoader
33. FLTM Classloader Fait Le Toi-Mme
34. Usages Application Servers JRebel Javassist, CGLib,...
35. Tomcat System Bootstrap Common Webapp1 Webapp2 Webapp3
Local First
36. JBoss AS 5 System Bootstrap Common Web App Ent App Web
Module EJB Module Local First Repo First
37. Erreurs ClassCastException MyStuff cannot be cast to
MyStuff W TF ?
38. Erreurs URL ClassLoader URL ClassLoader MyStuff var =
MyStuffFactory.build(); return new MyStuff() ;
39. http://github.com/hasalex/classpath-demo
40. Dmonstration classloader-demo message-common
message-printer message-main message-main System ClassLoader
ParentFirst ClassLoader
41. Dmonstration classloader-demo message-common
message-printer message-main message-main System ClassLoader
LocalFirst ClassLoader
42. Mort?
43. http://www.ironmaidenwallpaper.com/
44. Dpendances Maven, Gradle, ...
45. Dpendances Classpath
46. http://github.com/hasalex/classpath-demo
47. message-main message-common Dmonstration message-printer
classloader-demo slf4j-api 1.5.11 slf4j-api 1.7.2
48. Succession
49. Granularit Classpath Application
50. Granularit Application Web / JavaEE Librairies
partagesApplication
51. Modularit Application Web / JavaEE Application
52. 1999 Java embarqu Java SE Java serveur
53. OSGi OS + Hardware Java Execution Environment Applications
(bundles) Module Life Cycle Services
54. JBoss Modules Sous-projet de Wildfly Inspir de Jigsaw Base
de JBoss OSGi
55. JBoss Modules java -jar jboss-modules.jar -mp
path/to/modules my.main.module.name Java SE
56. JBoss Modules hibernate-infinispan-4.1.6.Final.jar
module.xml hibernate-core-4.1.6.Final.jar
hibernate-entitymanager-4.1.6.Final.jar modules com fr org ... org
hibernate main
57.
58. WildFly bin Scripts de dmarrage bundles Composants OSGi
modules Modules JBoss standalone Profil standalone domain Profil
domain
59. bin Scripts de dmarrage bundles Composants OSGi modules
Modules JBoss standalone Profil standalone domain Profil domain
WildFly message.war
60. WildFly message.war
61. http://github.com/hasalex/classpath-demo
62. Tomcat Classloading WEB-INF/classes, WEB-INF/lib Webapp
ClassLoader $CATALINA_HOME/lib System ClassLoader Common Class
Loader
63. Tomcat Module? WEB-INF/classes, WEB-INF/lib System
ClassLoader Common Class Loader Webapp ClassLoader
$CATALINA_HOME/lib Module ClassLoader modules
64. Tomcat https://github.com/hasalex/tomcat-modules
65. Jigsaw Projet OpenJDK Intgr au JDK 7 9 (2016) 8 (2012)
(2008) . . .
66. Jigsaw JEP 200:The Modular JDK JEP 201: Modular Source Code
JEP 220:The Modular Run-Time Images JEP xxx:The JDK Module System
JSR 376: Java Platform Module System
67. J'imagine qu'il est tentant, si le seul outil que vous avez
est un marteau, de traiter tout problme comme si c'tait un clou.
Abraham MaslowPaul Watzlawick
68. @AlexisHassler http://alexis-hassler.com
[email protected] http://sewatech.fr
LOAD MORE