{"id":1233,"date":"2012-10-19T08:14:15","date_gmt":"2012-10-19T07:14:15","guid":{"rendered":"http:\/\/www.alpesjug.fr\/?p=1233"},"modified":"2012-10-19T08:14:16","modified_gmt":"2012-10-19T07:14:16","slug":"compte-rendu-de-la-soiree-jigsaw","status":"publish","type":"post","link":"https:\/\/www.alpesjug.fr\/?p=1233","title":{"rendered":"Compte rendu de la soir\u00e9e Jigsaw"},"content":{"rendered":"<p>Apr\u00e8s les d\u00e9boires de salles ferm\u00e9es le 19 septembre, nous avons finalement pu assister \u00e0 la pr\u00e9sentation de Paul Sandoz sur Jigsaw le 26 septembre.<\/p>\n<p>Pour ceux qui ne sont pas au courant, Paul Sandoz a quitt\u00e9 CloudBees pour retourner chez Oracle et participe au d\u00e9veloppement de Jigsaw.<\/p>\n<p>Jigsaw \u00e9tait initialement pr\u00e9vu avec la sortie du JDK 8 mais a \u00e9t\u00e9 finalement repouss\u00e9 au JDK 9. Et pour cause, Jigsaw n&rsquo;est ni plus ni moins que la modularisation statique de la plate-forme Java et le chantier de transformation du JDK est assez ardu. En effet, avec l&rsquo;\u00e9volution et les versions du JDK, des r\u00e9f\u00e9rences entre les diff\u00e9rents composants dans l&rsquo;impl\u00e9mentation se sont multipli\u00e9es, rendant ainsi d\u00e9licat la s\u00e9paration du JDK en plusieurs modules. Cette modularisation du JDK va nous permettre de pouvoir embarquer avec nos applications Java uniquement ce dont elles n\u00e9cessitent, permettant ainsi une plus faible emprunte m\u00e9moire et faciliter par ce biais l&rsquo;adaptation de Java aux plate-formes embarqu\u00e9es (smartphones, tablettes, &#8230;)<\/p>\n<p>Non content de vouloir transformer le JDK, c&rsquo;est aussi tout l&rsquo;\u00e9cosyst\u00e8me Java qui va \u00eatre touch\u00e9. En effet, avec Jigsaw, la construction de programmes Java prend d\u00e9sormais un nouveau tournant\u00a0; il est la rencontre de la partie modulaire de OSGi (sans l&rsquo;aspect dynamique) et de celle apport\u00e9e par Maven ; avec Jigsaw, les applications pourront \u00eatre construites par la constitution d&rsquo;un ou de plusieurs modules d\u00e9velopp\u00e9s pour la circonstance ou r\u00e9cup\u00e9r\u00e9s d&rsquo;un d\u00e9p\u00f4t distant d&rsquo;un tiers-partie. Les d\u00e9pendances seront g\u00e9r\u00e9es statiquement, ne laissant ainsi pas de surprises d\u00e9sagr\u00e9ables \u00e0 l&rsquo;ex\u00e9cution.<\/p>\n<p>Chaque module est d\u00e9crit par des m\u00e9ta-donn\u00e9es fournies par un nouveau fichier, <code>module-info.java<\/code>, et qui stipulent, entre autre, quels sont les paquetages Java publi\u00e9s ou quelle est l&rsquo;entr\u00e9e principale du programme. Les d\u00e9pendances entre les composants ne se font donc que par le biais des interfaces ou des classes des paquetages expos\u00e9s et elles sont r\u00e9solues \u00e0 la compilation. Pour ce faire, de nouveaux outils font leur apparition, d\u00e9di\u00e9s \u00e0 la compilation, \u00e0 l&rsquo;ex\u00e9cution, \u00e0 l&rsquo;archivage de codes Java et avec eux un nouveau format d&rsquo;archivage fait aussi son apparition. Inspir\u00e9 des OBR de OSGi et des d\u00e9p\u00f4ts Maven, les modules Java pourront eux aussi \u00eatre stock\u00e9s dans des d\u00e9p\u00f4ts publi\u00e9s sur le WEB et \u00eatre r\u00e9cup\u00e9r\u00e9s automatiquement par le compilateur lors de la r\u00e9solution des d\u00e9pendances. L&rsquo;application finale comportera alors non seulement les modules applicatifs mais aussi ceux des biblioth\u00e8ques desquelles ils d\u00e9pendent.<\/p>\n<p>Avec Jigsaw, afin de permettre cette modularisation, les classloaders avec leurs hi\u00e9rarchies sont d\u00e9sormais abandonn\u00e9es. Le code relatif \u00e0 ces derniers restent pr\u00e9sent pour l&rsquo;instant mais n&rsquo;ont plus aucun effet. Toutefois, pour des raisons de compatibilit\u00e9s, mais surtout pour permettre la migration de l&rsquo;\u00e9cosyst\u00e8me vers cette nouvelle approche, la construction et l&rsquo;ex\u00e9cution classique de programme Java (avec les classloaders) seront gard\u00e9es en parall\u00e8le de Jigsaw, mais il faudra choisir l&rsquo;un des deux mod\u00e8les au d\u00e9veloppement de nouveaux logiciels en gardant en t\u00eate que l&rsquo;un des deux mod\u00e8les sera vou\u00e9 \u00e0 dispara\u00eetre \u00e0 terme.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Apr\u00e8s les d\u00e9boires de salles ferm\u00e9es le 19 septembre, nous avons finalement pu assister \u00e0 la pr\u00e9sentation de Paul Sandoz sur Jigsaw le 26 septembre. Pour ceux qui ne sont pas au courant, Paul&#46;&#46;&#46;<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15],"tags":[370,368,11],"class_list":["post-1233","post","type-post","status-publish","format-standard","hentry","category-compte-rendu","tag-code","tag-java","tag-soiree"],"_links":{"self":[{"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=\/wp\/v2\/posts\/1233","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1233"}],"version-history":[{"count":8,"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=\/wp\/v2\/posts\/1233\/revisions"}],"predecessor-version":[{"id":1243,"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=\/wp\/v2\/posts\/1233\/revisions\/1243"}],"wp:attachment":[{"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1233"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1233"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1233"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}