<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog de Vincent Brabant : NetBeans, Java et autres &#187; OpenJDK</title>
	<atom:link href="https://blog.developpez.com/vbrabant/pcategory/java/openjdk/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/vbrabant</link>
	<description></description>
	<lastBuildDate>Thu, 26 Jan 2012 14:17:19 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>Interview de Robert Brewin: concerne aussi JavaFX</title>
		<link>https://blog.developpez.com/vbrabant/p3480/java/openjdk/interview_tres_interessant_de_robert_bre</link>
		<comments>https://blog.developpez.com/vbrabant/p3480/java/openjdk/interview_tres_interessant_de_robert_bre#comments</comments>
		<pubDate>Sat, 12 May 2007 19:20:21 +0000</pubDate>
		<dc:creator><![CDATA[vbrabant]]></dc:creator>
				<category><![CDATA[JavaOne 2007]]></category>
		<category><![CDATA[OpenJDK]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Dans le billet précédent, je vous parlais d&#8217;un interview de Robert Brewin. Cet interview concernait pas seulement le &#171;&#160;Consumer JRE&#160;&#187;, mais aussi &#171;&#160;JavaFX&#160;&#187;. Je voulais commenter les 2 points suivants: Bob: We want to get feedback from the community and that might require changes to the language, such as the addition of new APIs, rich media, television, streaming, audio. There is a rich set of things we can do there that would require significant changes. [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Dans le <a href="http://blog.developpez.com/index.php?blog=40&amp;title=java_6_update_2_nouveau_model_de_deploye_1&amp;more=1&amp;c=1&amp;tb=1&amp;pb=1">billet précédent</a>, je vous parlais d&rsquo;un <a href="http://www.onjava.com/pub/a/onjava/2007/05/10/an-interview-with-robert-brewin.html">interview de Robert Brewin</a>.<br />
Cet interview concernait pas seulement le &laquo;&nbsp;Consumer JRE&nbsp;&raquo;, mais aussi &laquo;&nbsp;JavaFX&nbsp;&raquo;.<br />
<span id="more-157"></span><br />
Je voulais commenter les 2 points suivants:</p>
<blockquote><p><strong>Bob: </strong>We want to get feedback from the community and that might require changes to the language, such as the addition of new APIs, rich media, television, streaming, audio. There is a rich set of things we can do there that would require significant changes.</p></blockquote>
<p>En disant cela, Robert pointe du doigt les faiblesses actuelles de Java concernant la gestion des &laquo;&nbsp;rich media&nbsp;&raquo; que sont les vidéos, la télévision, le streaming et même l&rsquo;audio.<br />
Mais il montre également la volonté de vouloir combler ces besoins. Je dirais ENFIN. Il était temps. Car tant qu&rsquo;il n&rsquo;y aura pas de streaming ni de support pour les codec vidéo dans Java, on continuera à voir la présence de Flash dans ce domaine. Suffit de voir comment sont proposées les vidéos de JavaOne (cfr le blog de DannyCoward). Un Flash Player est nécessaire.</p>
<blockquote><p><strong>Dave:</strong> In addition to the JavaFX Script language, Sun has introduced a new platform to the mix&#8211;JavaFX Mobile. That is a small GNU/Linux platform with a complete Java 6 runtime on it. Correct?</p>
<p><strong>Bob:</strong> Correct.</p>
<p><strong>Dave:</strong> So then why tie the name of the platform to a specific language? Isn&rsquo;t that the blur problem we just talked about?</p></blockquote>
<p>Je dois avouer que je me range du coté de David Bock (voir la suite de l&rsquo;interview). Si JavaFX Mobile, c&rsquo;est Gnu/Linux avec JAVA SE 6 (je suppose que c&rsquo;est de cela qu&rsquo;on parler lorsqu&rsquo;il dit <em>a complete Java 6 runtime</em>), pourquoi avoir donné un nom à cette plateforme qui semble réducteur, dans le sens où cela fait croire qu&rsquo;il ne supportera que des applications écrites en JavaFX alors que cela pourrait exécuter n&rsquo;importe quelle application Java SE 6, donc également même des applications Groovy, ou JRuby, sans oublier Java, bien évidemment.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java 6 Update 2: nouveau model de déployement ? cela se confirme !</title>
		<link>https://blog.developpez.com/vbrabant/p3479/java/openjdk/java_6_update_2_nouveau_model_de_deploye_1</link>
		<comments>https://blog.developpez.com/vbrabant/p3479/java/openjdk/java_6_update_2_nouveau_model_de_deploye_1#comments</comments>
		<pubDate>Sat, 12 May 2007 19:09:27 +0000</pubDate>
		<dc:creator><![CDATA[vbrabant]]></dc:creator>
				<category><![CDATA[JavaOne 2007]]></category>
		<category><![CDATA[OpenJDK]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Vous vous rappelez de mon dernier billet concernant l&#8217;apparition d&#8217;un éventuel modèle de déploiement avant JDK 7 ? J&#8217;avais dit que je poserais la question aux Java Champions, pour confirmer, vu que la plupart sont sur place. Et en fait, cela se confirme: il y a bien eu une annonce lors de JavaOne disant que Sun travaille sur un Consumer JRE. Le premier qui m&#8217;a répondu, ce fut Roman Strobl, en m&#8217;envoyant un lien vers [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Vous vous rappelez de mon <a href="http://blog.developpez.com/index.php?blog=40&amp;title=java_6_update_2_nouveau_model_de_deploye&amp;more=1&amp;c=1&amp;tb=1&amp;pb=1">dernier billet concernant l&rsquo;apparition d&rsquo;un éventuel modèle de déploiement avant JDK 7</a> ?</p>
<p>J&rsquo;avais dit que je poserais la question aux Java Champions, pour confirmer, vu que la plupart sont sur place.<br />
<span id="more-156"></span><br />
Et en fait, cela se confirme: il y a bien eu une annonce lors de JavaOne disant que Sun travaille sur un <em><strong>Consumer JRE</strong></em>. </p>
<p>Le premier qui m&rsquo;a répondu, ce fut Roman Strobl, en m&rsquo;envoyant un lien vers son billet sur le blog, qu&rsquo;il a écrit suite à ma question: http://blogs.sun.com/roumen/entry/an_important_promise_from_this<br />
Il y a eu aussi Yakov Fain qui m&rsquo;a également envoyé son billet, intitulé &laquo;&nbsp;<a href="http://yakovfain.javadevelopersjournal.com/javaone_2007_the_most_important_two_minutes.htm">JavaOne: The most important 2 minutes</a>&nbsp;&raquo;<br />
Son billet contenant un lien vers le blog de <a href="http://blogs.sun.com/dannycoward/entry/javaone_2007_java_se_javafx">Danny Coward</a> où une vidéo contenant l&rsquo;annonce est disponible.<br />
Mais également un lien vers le <a href="http://cmaki.blogspot.com/2007/05/java-se-present-and-future.html">blog de Chris Maki</a> où on y apprend que </p>
<blockquote><p>
As a prototype, the team put together some trial, to run &laquo;&nbsp;hello world&nbsp;&raquo; the JRE was 2 MB, the SwingSet2 demo was just under 4 MB, whereas the whole JRE is 12MB
</p></blockquote>
<p>Soit, 2Mo de nécessaire pour le kernel, et 4Mo pour la démo SwingSet2.<br />
Faudra voir maintenant comment cela sera mis en oeuvre. Est-ce que rien ne sera possible tant que tout ne soit pas téléchargé, ou est-ce qu&rsquo;un interaction même minimale sera déjà disponible assez rapidement.</p>
<p>Ensuite, David Bock a fait savoir qu&rsquo;il avait également eu la possibilité d&rsquo;<a href="http://www.onjava.com/pub/a/onjava/2007/05/10/an-interview-with-robert-brewin.html">interviewer Robert Brewin</a>, qui a apporté un peu plus d&rsquo;informations: Cela ne sera pas fini dans l&rsquo;Update 2 de Java 6, et qu&rsquo;on en aura encore plus dans l&rsquo;Update 3 de Java 6.</p>
<blockquote><p>
<strong>Dave</strong>: So what is the mechanism for that? Are there going to be pieces removed, and downloaded on demand in the cases where they are needed?</p>
<p><strong>Bob</strong>: Exactly. Much like the Java 7 kernel project where you will start with a really small piece and download other pieces as necessary, this is the same general principle, just moved where possible to Java 6. Java 6 update 2 will contain the pieces that most people need, and other pieces will be lazily downloaded in the background as needed, hopefully in a way that doesn&rsquo;t affect normal usage patterns.</p></blockquote>
<p>Cela confirme donc bien que l&rsquo;on verra déjà cela dans l&rsquo;update 2 de Java 6.</p>
<p>Aussi, si on ne trouvait rien concernant la gestion de module dans Java 6 Update 2 (bien que cela ne semble plus le cas aujourd&rsquo;hui), on trouve en fait pas mal d&rsquo;information <a href="http://www.google.be/search?hl=fr&amp;c2coff=1&amp;q=%22consumer+jre%22&amp;btnG=Rechercher&amp;meta=">lorsqu&rsquo;on fait une recherche sur <em>&laquo;&nbsp;Consumer JRE&nbsp;&raquo;</em></a>. On trouve même la <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6550796">RFE qui la concerne dans le bugdatabase de Sun</a></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenJDK: presque au bout</title>
		<link>https://blog.developpez.com/vbrabant/p3439/java/netbeans/openjdk_presque_au_bout</link>
		<comments>https://blog.developpez.com/vbrabant/p3439/java/netbeans/openjdk_presque_au_bout#comments</comments>
		<pubDate>Tue, 08 May 2007 22:17:57 +0000</pubDate>
		<dc:creator><![CDATA[vbrabant]]></dc:creator>
				<category><![CDATA[JavaOne 2007]]></category>
		<category><![CDATA[NetBeans]]></category>
		<category><![CDATA[OpenJDK]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Fin de l&#8217;année passée, il y a quelques 6 mois, Sun avait lancé en grande fanfare OpenJDK. Nous avions d&#8217;ailleurs fait quelques interviews à ce sujet. Aujourd&#8217;hui, à l&#8217;occasion de JavaOne, Sun a annoncé qu&#8217;il était arrivé au bout du chantier. Et nous en savons plus quant à sa gouvernance. Tout d&#8217;abord, commencons par la gouvernance. Sun a décidé de mettre en place un &#171;&#160;Governance Board&#160;&#187; par interim. Sa tâche est de définir une constitution [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Fin de l&rsquo;année passée, il y a quelques 6 mois, Sun avait lancé en grande fanfare <a href="http://openjdk.java.net/">OpenJDK</a>.<br />
Nous avions d&rsquo;ailleurs fait quelques <a href="http://java.developpez.com/evenements/#interview">interviews </a>à ce sujet.<br />
Aujourd&rsquo;hui, à l&rsquo;occasion de JavaOne, Sun a annoncé qu&rsquo;il était arrivé au bout du chantier.<br />
Et nous en savons plus quant à sa gouvernance.<br />
<span id="more-153"></span><br />
Tout d&rsquo;abord, commencons par la gouvernance.<br />
Sun a décidé de mettre en place un &laquo;&nbsp;<a href="http://openjdk.java.net/groups/gb/">Governance Board</a>&nbsp;&raquo; par interim.<br />
Sa tâche est de définir une constitution pour la communauté OpenJDK (on croirait avoir affaire à un pays) de la faire ratifier par une processus démocratique, en impliquant les membres de la communauté, puis d&rsquo;élire un nouveau &laquo;&nbsp;Governance Board&nbsp;&raquo;.<br />
Ce Governance Board est composé de 5 individus. Dont 2 choisis directement par Sun, et travaillant pour Sun. Seuls les 3 autres seront choisis par la communauté. Pour ce qui est du Governance Board par intérim, Sun a choisi ces 3 individus, (non pas sans demander l&rsquo;avis de certains sur la question, comme par exemple, les Java Champions).</p>
<p>On retrouve donc </p>
<ul>
<li><strong>Doug Lea</strong>, un professeur qui a été à l&rsquo;origine de pas mal d&rsquo;API. Plus connu pour le JSR 166 concernant la <em>concurrency</em>. Egalement Java Champion.</li>
<li><strong>Fabiane Nardon</strong>, Community Leader de java.net.javatools. Egalement Java Champion (et oui, il y a aussi des femmes parmi les Java Champions)</li>
<li><strong>Dalibor Topi&#269;</strong>, étudiant en Allemagne. Participe à la maintenant de Kaffe, un projet de machine virtuelle. Egalement membre de la Free Software Foundation, et participe aussi au projet GNU Classpath.</li>
</ul>
<p>Les deux employés Sun sont <a href="http://blogs.sun.com/mr">Mark Reinhold</a> et <a href="http://blogs.sun.com/webmink">Simon Phipps</a>.</p>
<p>Pour plus de détails: http://openjdk.java.net/groups/gb/</p>
<p>Maintenant que nous avons vu l&rsquo;aspect administratif, légal, voyons l&rsquo;aspect pratique.</p>
<p>Est-ce que tout le JDK est maintenant disponible en open source ?<br />
Malheureusement NON. Certaines parties du JDK n&rsquo;appartenaient pas uniquement à Sun (rappelez-vous <a href="http://blog.developpez.com/index.php?blog=40&amp;title=tous_ces_copyrights_dans_les_sources_de&amp;more=1&amp;c=1&amp;tb=1&amp;pb=1">mon billet à ce sujet</a>) et il semble que certains partenaires (attention: ce n&rsquo;est pas parce que je vous ai montré un code source mentionnant un copyright IBM qu&rsquo;il faut en conclure que c&rsquo;est ce partenaire qui crée des problèmes. Le code source que je vous ai montré dans le billet n&rsquo;est pas dans l&rsquo;API causant le problème) aient refusé que leur contribution soient rendues open source. Ainsi, une partie de Java2D, qui concerne le rendu des polices, si mes souvenirs sont bons,  n&rsquo;a pu être rendue open source. Et il y avait une autre partie qui n&rsquo;était pas rendue open source. Mais je ne la retrouve plus pour le moment.<br />
Sun espère donc que la communauté Java va l&rsquo;aider à rendre open source cette partie, en réécrivant le code de ces API. Mais en attendant, il fournit le format binaire, pour pouvoir tout de même avec une version d&rsquo;OpenJDK entièrement opérationnel.</p>
<p>Rappelez-vous qu&rsquo;en décembre, il vous était possible de compiler le compilateur depuis NetBeans. Et bien, maintenant, il est possible de compiler tout le JDK depuis NetBeans.<br />
Tout le JDK est disponible sous forme de projets NetBeans.</p>
<ul>
<li>  <strong>Javac Compiler</strong>. C&rsquo;est le compilateur javac. Qui était déjà disponible en décembre.</li>
<li> <strong>Javadoc</strong>. contient les sources de javadoc.exe.</li>
<li> <strong>JConsole</strong>. Les sources de la JConsole.</li>
<li> <strong>JMX</strong>. Sources de l&rsquo;api JMX.</li>
<li> <strong>Swing</strong>. .</li>
<li> <strong>AWT &amp; Java2d</strong>. A l&rsquo;exception, si j&rsquo;ai bien compris de la partie concernant le rendu des polices.</li>
<li> <strong>Jar &amp; Zip</strong>. Contient les sources des api pour Zip et JAr, plus l&rsquo;outil jar.exe.</li>
<li> <strong>J2SE</strong>. Permet d&rsquo;avoir tout le Java SE, sauf Hotspor. Qui est fournit par le projet World.</li>
<li> <strong>World</strong>. Pour avoir et HotSpot, et Java SE.</li>
</ul>
<p>Plus d&rsquo;information à ce sujet: http://nb-openjdk.netbeans.org/index.html</p>
<p>Sun va également rendre le TCK disponible pour OpenJDK. Ce n&rsquo;est pas encore clair quand ni comment (sous quelles conditions). Mais il sera disponible. C&rsquo;est déjà une bonne chose en soi.</p>
<p>Une charte sera signée ce mardi soir à 18heures, (heure locale San Francisco, ca donne 03h00 le mercredi matin à Paris, et Bruxelles). Vous pourrez certainement la lire ici demain matin: http://openjdk.java.net/legal/charter/</p>
<p>Voir la press release de Sun: http://www.sun.com/aboutsun/pr/2007-05/sunflash.20070508.3.xml</p>
<p>Bonne lecture.</p>
<p>Vincent</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Annonce du support Mercurial dans NetBeans: Cela cache-t-il une autre annonce plus importante ?</title>
		<link>https://blog.developpez.com/vbrabant/p3417/divers/annonce_du_support_mercurial_dans_netbea</link>
		<comments>https://blog.developpez.com/vbrabant/p3417/divers/annonce_du_support_mercurial_dans_netbea#comments</comments>
		<pubDate>Sun, 06 May 2007 22:30:26 +0000</pubDate>
		<dc:creator><![CDATA[vbrabant]]></dc:creator>
				<category><![CDATA[Divers]]></category>
		<category><![CDATA[JavaOne 2007]]></category>
		<category><![CDATA[NetBeans]]></category>
		<category><![CDATA[OpenJDK]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Ce dimanche, John Rice, a annoncé la disponibilité du &#171;&#160;plugin&#160;&#187; mercurial pour NetBeans 6. Ce qui signifie que maintenant, il devrait* être possible d&#8217;utiliser Mercurial depuis NetBeans 6. Il faut savoir que Mercurial est l&#8217;outil de versioning que Sun a choisi pour OpenJDK, ainsi qu&#8217;OpenSolaris. Est-ce que le fait d&#8217;annoncer maintenant que NetBeans 6 fournit (depuis la milestone 9) un support pour Mercurial ne serait-il pas annonciateur d&#8217;une autre annonce plus importante ? comme le [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Ce dimanche, John Rice, a <a href="http://blogs.sun.com/jmr/entry/mercurial_support_in_netbeans_not">annoncé </a>la disponibilité du &laquo;&nbsp;plugin&nbsp;&raquo; mercurial pour NetBeans 6.<br />
<span id="more-59"></span><br />
Ce qui signifie que maintenant, il devrait* être possible d&rsquo;utiliser Mercurial depuis NetBeans 6.<br />
Il faut savoir que <a href="http://www.selenic.com/mercurial">Mercurial </a>est l&rsquo;outil de versioning que Sun a choisi pour <a href="https://openjdk.dev.java.net/">OpenJDK</a>, ainsi qu&rsquo;<a href="http://www.opensolaris.org/os/">OpenSolaris</a>.</p>
<p>Est-ce que le fait d&rsquo;annoncer maintenant que NetBeans 6 fournit (depuis la milestone 9) un support pour Mercurial ne serait-il pas annonciateur d&rsquo;une autre annonce plus importante ? comme le fait qu&rsquo;on aurait droit à toutes les sources du JDK ?<br />
(Actuellement, on avait à notre disposition que les sources du compilateur, si je ne m&rsquo;abuse)</p>
<p>Va falloir être attentif aux annonces qui seront faites à JavaOne. Mais je suppose que cela n&rsquo;est vraiment pas une coïncidence. S&rsquo;il fallait que le support pour Mercurial soit prêt pour JavaOne, c&rsquo;est qu&rsquo;ils s&rsquo;attendent à ce qu&rsquo;on l&rsquo;utilise.</p>
<p>Wait and See, comme dirait l&rsquo;autre.</p>
<p>* Je dis bien devrais, car personnellement, je n&rsquo;ai pas réussi :-(, malgré le fait que j&rsquo;ai suivi, me semble-t-il, <a href="http://wiki.netbeans.org/wiki/view/MercurialVersionControlDemoScript">toutes les instructions </a>à la lettre.</p>
<p>Vincent</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tous ces copyrights dans les sources de Java</title>
		<link>https://blog.developpez.com/vbrabant/p3292/divers/tous_ces_copyrights_dans_les_sources_de</link>
		<comments>https://blog.developpez.com/vbrabant/p3292/divers/tous_ces_copyrights_dans_les_sources_de#comments</comments>
		<pubDate>Mon, 23 Apr 2007 18:00:00 +0000</pubDate>
		<dc:creator><![CDATA[vbrabant]]></dc:creator>
				<category><![CDATA[Divers]]></category>
		<category><![CDATA[OpenJDK]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Voici le genre de commentaire que l&#8217;on peut retrouver dans certaines classes de Java 6 (ici, la classe MessageFormat) /* * (C) Copyright Taligent, Inc. 1996, 1997 - All Rights Reserved * (C) Copyright IBM Corp. 1996 - 1998 - All Rights Reserved * * The original version of this source code and documentation is copyrighted * and owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These * materials are provided under terms of [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Voici le genre de commentaire que l&rsquo;on peut retrouver dans certaines classes de Java 6 (ici, la classe MessageFormat)</p>
<pre>/*
 * (C) Copyright Taligent, Inc. 1996, 1997 - All Rights Reserved
 * (C) Copyright IBM Corp. 1996 - 1998 - All Rights Reserved
 *
 *   The original version of this source code and documentation is copyrighted
 * and owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These
 * materials are provided under terms of a License Agreement between Taligent
 * and Sun. This technology is protected by multiple US and International
 * patents. This notice and attribution to Taligent may not be removed.
 *   Taligent is a registered trademark of Taligent, Inc.
 *
 */</pre>
<p>On comprends maintenant pourquoi cela peu prendre du temps pour Sun, pour rendre le JDK OpenSource: Où ils ont l&rsquo;accord de Taligent pour mettre cela sous licence GPL, ou ils doivent réécrire cette classe.</p>
<p>Vincent</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apparition des premières modifications du compilateur Java</title>
		<link>https://blog.developpez.com/vbrabant/p2708/java/openjdk/apparition_des_premieres_modifications_d</link>
		<comments>https://blog.developpez.com/vbrabant/p2708/java/openjdk/apparition_des_premieres_modifications_d#comments</comments>
		<pubDate>Sat, 06 Jan 2007 21:14:38 +0000</pubDate>
		<dc:creator><![CDATA[vbrabant]]></dc:creator>
				<category><![CDATA[OpenJDK]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Le JDK a été rendu open source quelque part en novembre. Il n&#8217;aura pas fallu attendre longtemps finalement pour voir les premiers compilateurs Java modifiés. Mais je dois dire que cela n&#8217;est pas pour me déplaire. En effet, loin de vouloir créer des forks du compilateur Java, Rémi Forax nous propose sur son blog des prototypes de compilateur Java qui pourraient être réutilisé dans le futur JDK. Ainsi, il nous propose une modification du compilateur [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Le JDK a été rendu open source quelque part en novembre.<br />
Il n&rsquo;aura pas fallu attendre longtemps finalement pour voir les premiers compilateurs Java modifiés.<br />
<span id="more-144"></span><br />
Mais je dois dire que cela n&rsquo;est pas pour me déplaire.<br />
En effet, loin de vouloir créer des forks du compilateur Java, Rémi Forax nous propose <a href="http://weblogs.java.net/blog/forax/">sur son blog</a> des prototypes de compilateur Java qui pourraient être réutilisé dans le futur JDK.</p>
<p>Ainsi, <a href="http://weblogs.java.net/blog/forax/archive/2007/01/a_property_prop_1.html">il nous propose une modification du compilateur qui doit permettre la déclaration de properties</a>. </p>
<p>Mais je me demande tout de même pourquoi il n&rsquo;a pas utilisé les annotations pour cela.</p>
<p>Il me semble que @Property serait bien plus puissant dans ce cas. Car cela nous permettrait de passer des paramètres à l&rsquo;annotation, pour indiquer qu&rsquo;il ne faudrait créer que le getter par exemple. Ou pour indiquer quelle méthode jouera le rôle du getter ou du setter.<br />
Par exemple </p>
<p><code class="codecolorer text default"><span class="text">@Property() String x;</span></code><br />
serait équivalent à</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">private String x; <br />
public void setX(String x) { <br />
&nbsp; this.x = x; <br />
} <br />
public String getX() { <br />
&nbsp; return x; <br />
}</div></div>
<p>tandis que </p>
<p><code class="codecolorer text default"><span class="text">@Property(getter=&quot;getType&quot;) String x;</span></code><br />
serait équivalent à</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">private String x; <br />
public String getType() { <br />
&nbsp; return x; <br />
}</div></div>
<p>avec en prime la possibilité de dire que fichier des JavaBeans soit généré pour dire que getType est le getter de x</p>
<p>et finalement<br />
<code class="codecolorer text default"><span class="text">@Property(name=&quot;type&quot;) String x;</span></code><br />
correspondrait à</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">private String x; <br />
public void setType(String x) { <br />
&nbsp; this.x = x; <br />
} <br />
public String getType() { <br />
&nbsp; return x; <br />
}</div></div>
<p>Mais bon. Je dis ca, je dis rien. De tout façon, combien d&rsquo;entre nous se fatigue encore à taper tout ce code ? Les IDE génèrent depuis bien longtemps. Et puis cela va permettre d&rsquo;exprimer la même chose de 2 façons différentes, et j&rsquo;aime pas cela.</p>
<p>Mais qui suis-je dans le monde Java pour que ceux qui conçoivent la génération future des compilateurs java se soucient de mon avis. Car en effet, c&rsquo;est un peu là le problème. On a chacun ses préférences et ses opinions. Difficile d&rsquo;avoir tout le monde d&rsquo;accord sur une syntaxe.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>OpenJDK: découvrir le compilateur</title>
		<link>https://blog.developpez.com/vbrabant/p2567/java/netbeans/openjdk_decouvrir_le_compilateur</link>
		<comments>https://blog.developpez.com/vbrabant/p2567/java/netbeans/openjdk_decouvrir_le_compilateur#comments</comments>
		<pubDate>Thu, 23 Nov 2006 19:53:03 +0000</pubDate>
		<dc:creator><![CDATA[vbrabant]]></dc:creator>
				<category><![CDATA[NetBeans]]></category>
		<category><![CDATA[OpenJDK]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Aujourd&#8217;hui, je me suis amusé quelque peu avec OpenJDK. J&#8217;ai pu le compiler, sans aucune difficulté, et j&#8217;ai également pu lancer les tests qui sont donnés avec. Mais cela fut moins aisé. Mais pas impossible. Comme vous le savez très certainement (si pas encore, lisez l&#8217;article de la rédaction: http://java.developpez.com/annonces/open-sourcing-java/ ), Sun a rendu le compilateur de java SE (javac) open source et vous permet de le compiler très aisément. Compiler le compilateur Pour pouvoir [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Aujourd&rsquo;hui, je me suis amusé quelque peu avec OpenJDK.<br />
J&rsquo;ai pu le compiler, sans aucune difficulté, et j&rsquo;ai également pu lancer les tests qui sont donnés avec. Mais cela fut moins aisé. Mais pas impossible.<br />
<span id="more-143"></span><br />
Comme vous le savez très certainement (si pas encore, lisez l&rsquo;article de la rédaction: http://java.developpez.com/annonces/open-sourcing-java/ ), Sun a rendu le compilateur de java SE (javac) open source et vous permet de le compiler très aisément.<br />
<strong><br />
<ins>Compiler le compilateur</ins></strong><br />
Pour pouvoir compiler le compilateur javac, il vous faut tout d&rsquo;abord télécharger les sources.<br />
Depuis l&rsquo;EDI NetBeans, rien de plus simple. Il vous suffit de vous rendre sur le centre de mise à jour pour installer le module appelé OpenJDK. Ce module va en fait rajouter un nouvel exemple de projet, contenant les sources du compilateur Java SE.</p>
<p>J&rsquo;ai donc installé ce module de NetBeans me permettant de créer un projet avec les sources du compilateur.<br />
Ensuite, il suffit de faire File -> New Project -> Sample -> OpenJDK, et choisi l&rsquo;endroit où mettre le projet contenant les sources du JDK. Assurez-vous que le projet soit le principal. </p>
<p>Une fois cela fait, il vous suffit de faire Run -> Run Main Project et le compilateur java se compile. Ce qui est intéressant à noter est qu&rsquo;il se compile tout d&rsquo;abord avec le JDK utilisé par défaut (il vous faut au minimum le JDK 5). Et une fois que c&rsquo;est fini, il se recompile lui-même. </p>
<p>Il a fallu 17 secondes à mon PC pour réaliser cette opération, ce qui est tout à fait acceptable, surtout lorsque l&rsquo;on sait qu&rsquo;il se compile 2 fois de suite, finalement.</p>
<p>C&rsquo;est toujours intéressant et instructif de voir ce qui se passe dans le script Ant. Car cela pourrait être instructif pour nos projets à nous.</p>
<p>Examinons quelque peu les 2 fichiers qui nous intéressent: le build.xml et le build.properties.</p>
<blockquote>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">build.jdk.version = 1.7.0 <br />
build.release = ${build.jdk.version}-opensource <br />
build.number = b00 <br />
build.user.release.suffix = ${user.name}_${build.fullversion.time} <br />
build.full.version = ${build.release}-${build.user.release.suffix}-${build.number} <br />
&nbsp;<br />
# Set jtreg.home to jtreg installation directory <br />
# jtreg.home = &nbsp;<br />
&nbsp;<br />
# Set test.jdk.home to baseline JDK used to run the tests <br />
# test.jdk.home = &nbsp;<br />
&nbsp;<br />
compiler.source.level = 1.5</div></div>
</blockquote>
<p>On y apprend donc déjà certaines choses:<br />
1. c&rsquo;est le compilateur du JDK 7 (build 00)<br />
2. il vous faut un compilateur JAVA 5<br />
3. dans la version complète du compilateur figurera votre nom et la date et heure de sa compilation.</p>
<p>Examinons maintenant le fichier build.xml.<br />
Il commence par définir certaines propriétés pour indiquer où se trouvent les répertoires des<br />
sources et les classes générées, &#8230;</p>
<blockquote>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; &lt;property name=&quot;src&quot; value=&quot;src&quot;/&gt; <br />
&nbsp; &nbsp; &lt;property name=&quot;src.bin&quot; value=&quot;${src}/bin&quot;/&gt; <br />
&nbsp; &nbsp; &lt;property name=&quot;src.classes&quot; value=&quot;${src}/share/classes&quot;/&gt; <br />
&nbsp; &nbsp; &lt;property name=&quot;build&quot; value =&quot;build&quot;/&gt; <br />
&nbsp; &nbsp; &lt;property name=&quot;build.bootclasses&quot; value=&quot;${build}/bootclasses&quot;/&gt; <br />
&nbsp; &nbsp; &lt;property name=&quot;build.classes&quot; value=&quot;${build}/classes&quot;/&gt; <br />
&nbsp; &nbsp; &lt;property name=&quot;build.gensrc&quot; value=&quot;${build}/gensrc&quot;/&gt; <br />
&nbsp; &nbsp; &lt;property name=&quot;build.jtreg&quot; value=&quot;${build}/jtreg&quot;/&gt; <br />
&nbsp; &nbsp; &lt;property name=&quot;dist&quot; value=&quot;dist&quot;/&gt; <br />
&nbsp; &nbsp; &lt;property name=&quot;dist.javac&quot; value=&quot;${dist}&quot;/&gt;</div></div>
</blockquote>
<p>Ensuite, il définit un patternset. Qui pourra être réutilisé à plusieurs endroits, ce qui permet de ne pas devoir à chaque fois redéfinir la même chose. Très intéressant donc.</p>
<blockquote><pre>

<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;patternset id=&quot;src.javac&quot;&gt; <br />
&nbsp; &nbsp; &lt;include name=&quot;javax/annotation/processing/**/*.java&quot;/&gt; <br />
&nbsp; &nbsp; &lt;include name=&quot;javax/lang/model/**/*.java&quot;/&gt; <br />
&nbsp; &nbsp; &lt;include name=&quot;javax/tools/**/*.java&quot;/&gt; <br />
&nbsp; &nbsp; &lt;include name=&quot;com/sun/source/**/*.java&quot;/&gt; <br />
&nbsp; &nbsp; &lt;include name=&quot;com/sun/tools/javac/**/*.java&quot;/&gt; <br />
&nbsp; &nbsp; &lt;include name=&quot;com/sun/tools/javadoc/DocCommentScanner.java&quot;/&gt; <br />
&nbsp; &nbsp; &lt;exclude name=&quot;**/*-template.java&quot;/&gt; <br />
&lt;/patternset&gt;</div></div>

</pre>
</blockquote>
<p>Ils y indique les fichiers à inclure, et les fichiers à exclure. On remarque que les fichiers -template.java sont ignorés. On comprendra pourquoi plus loin.</p>
<blockquote><pre>

<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;target name=&quot;prep&quot;&gt; <br />
&nbsp; &nbsp; &lt;mkdir dir=&quot;${build.bootclasses}&quot;/&gt; <br />
&nbsp; &nbsp; &lt;mkdir dir=&quot;${build.classes}&quot;/&gt; <br />
&nbsp; &nbsp; &lt;mkdir dir=&quot;${dist.javac}/bin&quot;/&gt; <br />
&nbsp; &nbsp; &lt;mkdir dir=&quot;${dist.javac}/lib&quot;/&gt; <br />
&nbsp; &nbsp; &lt;tstamp&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;format property=&quot;build.time&quot; pattern=&quot;MM/dd/yyyy hh:mm aa&quot;/&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;format property=&quot;build.fullversion.time&quot; pattern=&quot;MM/dd/yyyy_HH_mm&quot;/&gt; <br />
&nbsp; &nbsp; &lt;/tstamp&gt; <br />
&nbsp; &nbsp; &lt;property file=&quot;build.properties&quot;/&gt; <br />
&lt;/target&gt;</div></div>

</pre>
</blockquote>
<p>Cette tâche prépare les répertoires, prend la date système et la formate de 2 façons différentes, dans de nouvelles propriétés.</p>
<blockquote><pre>

<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;mkdir dir=&quot;${build.gensrc}/com/sun/tools/javac&quot;/&gt; <br />
&lt;copy file=&quot;${src.classes}/com/sun/tools/javac/resources/version-template.java&quot; <br />
&nbsp; &nbsp; tofile=&quot;${build.gensrc}/com/sun/tools/javac/resources/version.java&quot;&gt; <br />
&nbsp; &nbsp; &lt;filterset begintoken=&quot;$(&quot; endtoken=&quot;)&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;filter token=&quot;JDK_VERSION&quot; &nbsp;value=&quot;${build.jdk.version}&quot;/&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;filter token=&quot;RELEASE&quot; &nbsp; &nbsp; &nbsp;value=&quot;${build.release}&quot;/&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;filter token=&quot;FULL_VERSION&quot; value=&quot;${build.full.version}&quot;/&gt; <br />
&nbsp; &nbsp; &lt;/filterset&gt; <br />
&lt;/copy&gt;</div></div>

</pre>
</blockquote>
<p>après avoir créé le répertoire pour le compilateur java, le script ant va modifier le template, en remplacant dans le code source certaines String par des valeurs de propriétés.<br />
Un find &#038; replace en fait. Ici, il va donc ouvrir le fichier template, remplacer les occurences de ${JDK_VERSION}, ${RELEASE} et ${FULL_VERSION} par la valeur des propriétés associées, et enregistrer la version modifiée dans un autre emplacement où se trouvent les sources générées.</p>
<blockquote><pre>

<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;!-- to compile javac, set includeAntRuntime=no to prevent javac's &nbsp;<br />
&nbsp;own tools.jar incorrectly appearing on the classpath --&gt; <br />
&lt;javac srcdir=&quot;${src.classes}:${build.gensrc}&quot; destdir=&quot;${build.bootclasses}&quot; <br />
&nbsp; &nbsp; source=&quot;${compiler.source.level}&quot; &nbsp;debug=&quot;true&quot; debuglevel=&quot;source,lines&quot; <br />
&nbsp; &nbsp; includeAntRuntime=&quot;no&quot;&gt; <br />
&nbsp; &nbsp; &lt;patternset refid=&quot;src.javac&quot;/&gt; <br />
&nbsp; &nbsp; &lt;include name=&quot;com/sun/tools/javac/resources/version.java&quot;/&gt; <br />
&lt;/javac&gt;</div></div>

</pre>
</blockquote>
<p>Voici maintenant comment compiler les sources du compilateur.<br />
C&rsquo;est très simple. On indique les 2 répertoires où se trouvent les sources, et le répertoire où se trouveront les fichiers .class.</p>
<blockquote><pre>

<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;echo message=&quot;recompiling compiler with itself&quot;/&gt; <br />
&lt;pathconvert pathsep=&quot; &quot; property=&quot;src.javac.files&quot;&gt; <br />
&nbsp; &nbsp; &lt;path&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp;&lt;fileset dir=&quot;${src.classes}&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;patternset refid=&quot;src.javac&quot;/&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp;&lt;/fileset&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp;&lt;fileset dir=&quot;${build.gensrc}&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;include name=&quot;com/sun/tools/javac/resources/version.java&quot;/&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp;&lt;/fileset&gt; <br />
&nbsp; &nbsp; &lt;/path&gt; <br />
&lt;/pathconvert&gt;</div></div>

</pre>
</blockquote>
<p>ici, on va construire le chemin pour les répertoires les uns derrière les autres en les séparant par un espace.</p>
<blockquote><pre>

<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; &nbsp; &nbsp; &lt;java fork=&quot;true&quot; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; classpath=&quot;${build.bootclasses};${src.classes}&quot; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; classname=&quot;com.sun.tools.javac.Main&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;arg value=&quot;-sourcepath&quot;/&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;arg path=&quot;${src.classes}:${build.gensrc}&quot;/&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;arg value=&quot;-d&quot;/&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;arg file=&quot;${build.classes}&quot;/&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;arg value=&quot;-g:source,lines&quot;/&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;arg line=&quot;${src.javac.files}&quot;/&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;/java&gt;</div></div>

</pre>
</blockquote>
<p>Et maintenant, on peut recompiler le compilateur, mais cette fois-ci en utilisant le compilateur que l&rsquo;on vient de compiler.</p>
<blockquote><pre>

<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; &nbsp; &nbsp; &lt;copy todir=&quot;${build.classes}&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;fileset dir=&quot;${src.classes}&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;include name=&quot;com/sun/tools/javac/resources/*.properties&quot;/&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/fileset&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;/copy&gt;</div></div>

</pre>
</blockquote>
<p>On copie les fichiers properties à leur bonne place</p>
<blockquote><pre>

<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; &nbsp; &nbsp; &lt;jar destfile=&quot;${dist.javac}/lib/javac.jar&quot; basedir=&quot;${build.classes}&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;manifest&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;attribute name=&quot;Built-By&quot; value=&quot;${user.name}&quot;/&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;attribute name=&quot;Built-At&quot; value=&quot;${build.time}&quot;/&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;attribute name=&quot;Main-Class&quot; value=&quot;com.sun.tools.javac.Main&quot;/&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/manifest&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;/jar&gt;</div></div>

</pre>
</blockquote>
<p>et le jar est fait, avec le manifest.</p>
<p>J&rsquo;ai donc maintenant un fichier jar qui contient un compilateur java.<br />
Mais comment être sûr que le compilateur Java est bien compilé.<br />
En exécutant la batterie de tests qui est livrée avec.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
