<?xml version="1.0" encoding="UTF-8"?><rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
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:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
xmlns:media="http://search.yahoo.com/mrss/"
> <channel><title>Commentaires sur : JavaRebel &#8211; Rechargez vos classes sans redeployer</title> <atom:link href="http://blog.xebia.fr/2008/11/14/javarebel/feed/" rel="self" type="application/rss+xml" /><link>http://blog.xebia.fr/2008/11/14/javarebel/</link> <description>J2EE, Agilité et SOA</description> <lastBuildDate>Thu, 09 Feb 2012 15:43:24 +0000</lastBuildDate> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=</generator> <item><title>Par : Dominique De Vito</title><link>http://blog.xebia.fr/2008/11/14/javarebel/#comment-9043</link> <dc:creator>Dominique De Vito</dc:creator> <pubDate>Mon, 24 Nov 2008 16:34:45 +0000</pubDate> <guid
isPermaLink="false">http://blog.xebia.fr/?p=978#comment-9043</guid> <description>Tout ce que j&#039;ai trouvé récemment, ce sont des infos datant de Septembre 2008 sur le blog de Charles Nutter : http://blog.headius.com/2008/09/first-taste-of-invokedynamic.html
Mais il n&#039;invoque pas le hotswap, mais plutôt un pb connexe/sous-jacent qui est celui de la création de (très) nombreuses classes, et de *certaines* modifications dynamiques, création-modification propre aux langages dynamiques. Pour ce faire, il propose un &#039;anonymous class loader&#039;. Je n&#039;ai pas regardé plus loin.
Quant à la sortie de la umbrella JSR Java 7, je n&#039;ai pas d&#039;idée. En fait, cela va sans doute dépendre de ce qu&#039;ils veulent inclure dedans, par ex, avec ou sans closures ? Tous les composants n&#039;ont pas le même degré d&#039;avancement :
http://tech.puredanger.com/2008/08/02/java7-prediction-update/
Par ailleurs, j&#039;ai trouvé un autre bon résumé du contenu du JDK 7 : http://tech.puredanger.com/java7</description> <content:encoded><![CDATA[<p>Tout ce que j&#8217;ai trouvé récemment, ce sont des infos datant de Septembre 2008 sur le blog de Charles Nutter : <a
href="http://blog.headius.com/2008/09/first-taste-of-invokedynamic.html" rel="nofollow">http://blog.headius.com/2008/09/first-taste-of-invokedynamic.html</a></p><p>Mais il n&#8217;invoque pas le hotswap, mais plutôt un pb connexe/sous-jacent qui est celui de la création de (très) nombreuses classes, et de *certaines* modifications dynamiques, création-modification propre aux langages dynamiques. Pour ce faire, il propose un &#8216;anonymous class loader&#8217;. Je n&#8217;ai pas regardé plus loin.</p><p>Quant à la sortie de la umbrella JSR Java 7, je n&#8217;ai pas d&#8217;idée. En fait, cela va sans doute dépendre de ce qu&#8217;ils veulent inclure dedans, par ex, avec ou sans closures ? Tous les composants n&#8217;ont pas le même degré d&#8217;avancement :<br
/> <a
href="http://tech.puredanger.com/2008/08/02/java7-prediction-update/" rel="nofollow">http://tech.puredanger.com/2008/08/02/java7-prediction-update/</a></p><p>Par ailleurs, j&#8217;ai trouvé un autre bon résumé du contenu du JDK 7 : <a
href="http://tech.puredanger.com/java7" rel="nofollow">http://tech.puredanger.com/java7</a></p> ]]></content:encoded> </item> <item><title>Par : Erwan Alliaume</title><link>http://blog.xebia.fr/2008/11/14/javarebel/#comment-8984</link> <dc:creator>Erwan Alliaume</dc:creator> <pubDate>Fri, 21 Nov 2008 20:49:18 +0000</pubDate> <guid
isPermaLink="false">http://blog.xebia.fr/?p=978#comment-8984</guid> <description>Bonne remarque ! Pourtant, s’il est probable que cette JSR (&lt;a href=&quot;http://jcp.org/en/jsr/detail?id=292 &quot; rel=&quot;nofollow&quot;&gt;JSR-292&lt;/a&gt;) fasse effectivement partie du jdk7, il me semble peu plausible que cette fonctionnalité y soit implémentée...
Sauf erreur de ma part, personne n’a plus parlé de ces améliorations du Hotswap depuis 2006, date de création de la JSR-292. L’early draft de celle-ci, disponible depuis mars dernier, n’en fait d’ailleurs &lt;u&gt;aucune&lt;/u&gt; allusion.
J’en ai profité pour refaire le tour des articles sur le sujet. Danny Coward lui-même (ancien spec lead de la JSR-292, maintenant responsable de la umbrella JSR pour Java 7) avouait &lt;a href=&quot;http://www.artima.com/lejava/articles/dynamic_languages.html &quot; rel=&quot;nofollow&quot;&gt;ne pas trop savoir&lt;/a&gt; comment s’y prendre pour permettre ce genre service. Je suis également tombé sur &lt;a href=&quot;http://blogs.sun.com/gbracha/entry/jsr292_and_hotswapping &quot; rel=&quot;nofollow&quot;&gt;un article de Gilad Bracha&lt;/a&gt; commenté par l’un des contributeurs principaux RIFE enthousiasmé par le rechargement de classes à chaud, fonctionnalité qui différencie justement son framework. Quant à Gilad, également ancien spec lead de la JSR-292, il a préféré &lt;em&gt;s’enfuir&lt;/em&gt; dans le monde de la modularité JAM/OSGi  avec leur &lt;em&gt;fine grained class loader&lt;/em&gt; plutôt que de pousser les évolutions du hotswap. Toute plaisanterie mise à part,  à mon avis, ce n’est pas encore demain que la JVM concurrencera ce que nous propose JavaRebel.
Avez-vous des informations contradictoires ?
Question bonus : avez-vous un pronostique pour la sortie de la umbrella JSR Java 7 ? Personnellement, j’avais &lt;a href=&quot;http://blog.xebia.fr/2008/02/20/nagez-avec-les-dauphins-jdk-7-proposals-overview/&quot; rel=&quot;nofollow&quot;&gt;tout misé&lt;/a&gt; sur ‘mai dernier’ ... :(</description> <content:encoded><![CDATA[<p>Bonne remarque ! Pourtant, s’il est probable que cette JSR (<a
href="http://jcp.org/en/jsr/detail?id=292 " rel="nofollow">JSR-292</a>) fasse effectivement partie du jdk7, il me semble peu plausible que cette fonctionnalité y soit implémentée&#8230;</p><p>Sauf erreur de ma part, personne n’a plus parlé de ces améliorations du Hotswap depuis 2006, date de création de la JSR-292. L’early draft de celle-ci, disponible depuis mars dernier, n’en fait d’ailleurs <u>aucune</u> allusion.</p><p>J’en ai profité pour refaire le tour des articles sur le sujet. Danny Coward lui-même (ancien spec lead de la JSR-292, maintenant responsable de la umbrella JSR pour Java 7) avouait <a
href="http://www.artima.com/lejava/articles/dynamic_languages.html " rel="nofollow">ne pas trop savoir</a> comment s’y prendre pour permettre ce genre service. Je suis également tombé sur <a
href="http://blogs.sun.com/gbracha/entry/jsr292_and_hotswapping " rel="nofollow">un article de Gilad Bracha</a> commenté par l’un des contributeurs principaux RIFE enthousiasmé par le rechargement de classes à chaud, fonctionnalité qui différencie justement son framework. Quant à Gilad, également ancien spec lead de la JSR-292, il a préféré <em>s’enfuir</em> dans le monde de la modularité JAM/OSGi  avec leur <em>fine grained class loader</em> plutôt que de pousser les évolutions du hotswap. Toute plaisanterie mise à part,  à mon avis, ce n’est pas encore demain que la JVM concurrencera ce que nous propose JavaRebel.</p><p>Avez-vous des informations contradictoires ?</p><p>Question bonus : avez-vous un pronostique pour la sortie de la umbrella JSR Java 7 ? Personnellement, j’avais <a
href="http://blog.xebia.fr/2008/02/20/nagez-avec-les-dauphins-jdk-7-proposals-overview/" rel="nofollow">tout misé</a> sur ‘mai dernier’ &#8230; <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /></p> ]]></content:encoded> </item> <item><title>Par : Dominique De Vito</title><link>http://blog.xebia.fr/2008/11/14/javarebel/#comment-8976</link> <dc:creator>Dominique De Vito</dc:creator> <pubDate>Fri, 21 Nov 2008 12:48:50 +0000</pubDate> <guid
isPermaLink="false">http://blog.xebia.fr/?p=978#comment-8976</guid> <description>Une fonctionnalité relativement similaire à JavaRebel fait partie de la JSR-292 &quot;Supporting Dynamically Typed Languages on the Java Platform&quot;.
On entend plus souvent parler d&#039;une des 2 parties de cette JSR : la fameuse instruction &quot;invokedynamic&quot; ; mais cette JSR a d&#039;autres buts :
&quot;&quot;
* to add a new JVM instruction, invokedynamic, designed to support the implementation of dynamically typed object oriented languages [...]
* also investigate support for hotswapping, the capability to modify the structure of classes at run time.
&quot;&quot;
J&#039;espère que cette JSR fera bien parti de JDK 7...</description> <content:encoded><![CDATA[<p>Une fonctionnalité relativement similaire à JavaRebel fait partie de la JSR-292 &laquo;&nbsp;Supporting Dynamically Typed Languages on the Java Platform&nbsp;&raquo;.</p><p>On entend plus souvent parler d&#8217;une des 2 parties de cette JSR : la fameuse instruction &laquo;&nbsp;invokedynamic&nbsp;&raquo; ; mais cette JSR a d&#8217;autres buts :</p><p>&laquo;&nbsp;&nbsp;&raquo;<br
/> * to add a new JVM instruction, invokedynamic, designed to support the implementation of dynamically typed object oriented languages [...]<br
/> * also investigate support for hotswapping, the capability to modify the structure of classes at run time.<br
/> &laquo;&nbsp;&nbsp;&raquo;</p><p>J&#8217;espère que cette JSR fera bien parti de JDK 7&#8230;</p> ]]></content:encoded> </item> <item><title>Par : Nicolas</title><link>http://blog.xebia.fr/2008/11/14/javarebel/#comment-8834</link> <dc:creator>Nicolas</dc:creator> <pubDate>Mon, 17 Nov 2008 08:52:55 +0000</pubDate> <guid
isPermaLink="false">http://blog.xebia.fr/?p=978#comment-8834</guid> <description>Merci pour ton article erwan, il donne envie d&#039;essayer.
Seam propose un redeploiement leger pratique lorsque l&#039;on travaille uniquement sur la partie vue (xhtml,css) et qu&#039;aucuns beans Seam n&#039;est ajoute.
Mais ce n&#039;est pas aussi pousse que ce que tu as presente.
Sinon comme tu l&#039;expliques, on oublie souvent que l&#039;on peut se connecter a un Weblogic en mode debug et recharger une partie de l&#039;application... Combien de developpeur perdent leur temps a tout recompiler ?</description> <content:encoded><![CDATA[<p>Merci pour ton article erwan, il donne envie d&#8217;essayer.</p><p>Seam propose un redeploiement leger pratique lorsque l&#8217;on travaille uniquement sur la partie vue (xhtml,css) et qu&#8217;aucuns beans Seam n&#8217;est ajoute.<br
/> Mais ce n&#8217;est pas aussi pousse que ce que tu as presente.</p><p>Sinon comme tu l&#8217;expliques, on oublie souvent que l&#8217;on peut se connecter a un Weblogic en mode debug et recharger une partie de l&#8217;application&#8230; Combien de developpeur perdent leur temps a tout recompiler ?</p> ]]></content:encoded> </item> <item><title>Par : Guillaume Carre</title><link>http://blog.xebia.fr/2008/11/14/javarebel/#comment-8757</link> <dc:creator>Guillaume Carre</dc:creator> <pubDate>Fri, 14 Nov 2008 17:54:55 +0000</pubDate> <guid
isPermaLink="false">http://blog.xebia.fr/?p=978#comment-8757</guid> <description>Si on regarde du côté des frameworks MVC les plus utilisés, en général ils ne supportent pas ce re-déploiement à chaud des classes (Struts, Struts2, Spring MVC, JBoss Seam).
Wicket ne semble pas le supporter non plus, seuls les templates html sont redéployés à chaud (c&#039;est la moindre des choses...).
Donc Tapestry 5 est bien en avance sur la concurrence sur ce point!</description> <content:encoded><![CDATA[<p>Si on regarde du côté des frameworks MVC les plus utilisés, en général ils ne supportent pas ce re-déploiement à chaud des classes (Struts, Struts2, Spring MVC, JBoss Seam).<br
/> Wicket ne semble pas le supporter non plus, seuls les templates html sont redéployés à chaud (c&#8217;est la moindre des choses&#8230;).<br
/> Donc Tapestry 5 est bien en avance sur la concurrence sur ce point!</p> ]]></content:encoded> </item> <item><title>Par : Francois</title><link>http://blog.xebia.fr/2008/11/14/javarebel/#comment-8756</link> <dc:creator>Francois</dc:creator> <pubDate>Fri, 14 Nov 2008 17:42:53 +0000</pubDate> <guid
isPermaLink="false">http://blog.xebia.fr/?p=978#comment-8756</guid> <description>J&#039;espère bien que T5 n&#039;est en effet pas le seul framework à proposer celà :)
Mais dans mon expérience limité, il se trouve que c&#039;est le seul que j&#039;utilise quotidiennement :) (note: après vérification, c&#039;est le cas pour RIFE depuis très longtemps, pour Wicket aussi, et sûrement pour d&#039;autres).
Pour ce qui est des limitations, c&#039;est tout à fait exact, c&#039;est ce que je voulais dire par &quot;[l]es classes qui correspondent aux pages et composants&quot;. Concrètement, T5 gère ses propres classloader afin de pouvoir enrichir le bytecode des classes qui correspondent aux composants/services/mixin (au sens T5), ce qui correspond à aux packages sous &quot;myapp&quot; dans l&#039;organisation de projet conventionnelle visible ici: http://tapestry.apache.org/tapestry5/guide/project-layout.html.
En gros, dès qu&#039;on touche à des classes de données ou des services externes (Spring...), le live reloading ne fonctionne plus, mais comme ce sont des classes dont les API sont souvent plus stables que les classes d&#039;UI, c&#039;est acceptable - et c&#039;est de toute manière mieux que de toujours devoir recharger l&#039;application.
(T5 recharge aussi toutes les ressources de type asset (fichier properties pour les traductions, templates, images, etc), mais ceci est beaucoup plus courant).
Pour les problèmes plus particulier dont vous parlez, je ne les ai jamais rencontré, mais ca ne veut bien sûr en aucun cas dire qu&#039;ils n&#039;existent pas :) Comme pour JavaRebel, le live-reload de T5 est une fonctionnalité qui a pour but principal d&#039;accélérer le développement, rôle qu&#039;elle remplie très bien. En cas de clastCastException, il suffit de revenir à l&#039;ancienne méthode, et de relancer l&#039;application.
Par contre, se sont des symptômes qui sont fréquents lorsque plusieurs versions de T5 sont présentes dans le même war (ce qui ne devrait pas arriver, mais Maven est parfois capricieux, ou les cleans pas toujours bien faits). Dans ce cas, les différentes versions se battent pour mettre à jours les classes, et ça peut donner des résultats intéressants :)
Bref, JavaRebel est la bonne solution à terme, parce qu&#039;elle traite le problème là où il doit l&#039;être : au niveau de la JVM (et je trouve comme vous aberrant que Sun n&#039;ait pas proposé cette fonctionnalité depuis des lustres à ce niveau là). Mais JavaRebel à aussi ses contraintes (de licence notamment) qui font que tout le monde ne peut pas se permettre de l&#039;utiliser, et dans ce cadre, la solution proposé dans T5 est mieux que rien, et est tout particulièrement adapté au contexte de la création d&#039;UI, très itérative, mais forcément dans le contexte de l&#039;application complètes (et donc avec des validations par tests unitaires plus difficiles, donc beaucoup de petites erreurs qui prennent moins de temps à être corrigé que le temps de charger l&#039;application).</description> <content:encoded><![CDATA[<p>J&#8217;espère bien que T5 n&#8217;est en effet pas le seul framework à proposer celà <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br
/> Mais dans mon expérience limité, il se trouve que c&#8217;est le seul que j&#8217;utilise quotidiennement <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> (note: après vérification, c&#8217;est le cas pour RIFE depuis très longtemps, pour Wicket aussi, et sûrement pour d&#8217;autres).</p><p>Pour ce qui est des limitations, c&#8217;est tout à fait exact, c&#8217;est ce que je voulais dire par &laquo;&nbsp;[l]es classes qui correspondent aux pages et composants&nbsp;&raquo;. Concrètement, T5 gère ses propres classloader afin de pouvoir enrichir le bytecode des classes qui correspondent aux composants/services/mixin (au sens T5), ce qui correspond à aux packages sous &laquo;&nbsp;myapp&nbsp;&raquo; dans l&#8217;organisation de projet conventionnelle visible ici: <a
href="http://tapestry.apache.org/tapestry5/guide/project-layout.html" rel="nofollow">http://tapestry.apache.org/tapestry5/guide/project-layout.html</a>.</p><p>En gros, dès qu&#8217;on touche à des classes de données ou des services externes (Spring&#8230;), le live reloading ne fonctionne plus, mais comme ce sont des classes dont les API sont souvent plus stables que les classes d&#8217;UI, c&#8217;est acceptable &#8211; et c&#8217;est de toute manière mieux que de toujours devoir recharger l&#8217;application.</p><p>(T5 recharge aussi toutes les ressources de type asset (fichier properties pour les traductions, templates, images, etc), mais ceci est beaucoup plus courant).</p><p>Pour les problèmes plus particulier dont vous parlez, je ne les ai jamais rencontré, mais ca ne veut bien sûr en aucun cas dire qu&#8217;ils n&#8217;existent pas <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> Comme pour JavaRebel, le live-reload de T5 est une fonctionnalité qui a pour but principal d&#8217;accélérer le développement, rôle qu&#8217;elle remplie très bien. En cas de clastCastException, il suffit de revenir à l&#8217;ancienne méthode, et de relancer l&#8217;application.</p><p>Par contre, se sont des symptômes qui sont fréquents lorsque plusieurs versions de T5 sont présentes dans le même war (ce qui ne devrait pas arriver, mais Maven est parfois capricieux, ou les cleans pas toujours bien faits). Dans ce cas, les différentes versions se battent pour mettre à jours les classes, et ça peut donner des résultats intéressants <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><p>Bref, JavaRebel est la bonne solution à terme, parce qu&#8217;elle traite le problème là où il doit l&#8217;être : au niveau de la JVM (et je trouve comme vous aberrant que Sun n&#8217;ait pas proposé cette fonctionnalité depuis des lustres à ce niveau là). Mais JavaRebel à aussi ses contraintes (de licence notamment) qui font que tout le monde ne peut pas se permettre de l&#8217;utiliser, et dans ce cadre, la solution proposé dans T5 est mieux que rien, et est tout particulièrement adapté au contexte de la création d&#8217;UI, très itérative, mais forcément dans le contexte de l&#8217;application complètes (et donc avec des validations par tests unitaires plus difficiles, donc beaucoup de petites erreurs qui prennent moins de temps à être corrigé que le temps de charger l&#8217;application).</p> ]]></content:encoded> </item> <item><title>Par : Erwan Alliaume</title><link>http://blog.xebia.fr/2008/11/14/javarebel/#comment-8753</link> <dc:creator>Erwan Alliaume</dc:creator> <pubDate>Fri, 14 Nov 2008 15:30:24 +0000</pubDate> <guid
isPermaLink="false">http://blog.xebia.fr/?p=978#comment-8753</guid> <description>J&#039;ai cru comprendre d&#039;un mécanisme similaire était également proposé par RIFE.
Malheureusement tous les frameworks ne proposent pas ce genre de fonctionnalités.
D&#039;autres part, dis moi si je me trompe, mais j&#039;ai cru comprendre que le mécanisme de rechargement de tapestry 5 présentait tout de même quelques lacunes :
- seuls les composants managés par tapestry sont rechargeables (c&#039;est déjà pas mal)
- le rechargement de code référençant du code non managé peut provoquer certains problèmes (fuite mémoire, ClassCastException, IllegalAccessException ...)
Vous confirmez ?</description> <content:encoded><![CDATA[<p>J&#8217;ai cru comprendre d&#8217;un mécanisme similaire était également proposé par RIFE.<br
/> Malheureusement tous les frameworks ne proposent pas ce genre de fonctionnalités.</p><p>D&#8217;autres part, dis moi si je me trompe, mais j&#8217;ai cru comprendre que le mécanisme de rechargement de tapestry 5 présentait tout de même quelques lacunes :<br
/> - seuls les composants managés par tapestry sont rechargeables (c&#8217;est déjà pas mal)<br
/> - le rechargement de code référençant du code non managé peut provoquer certains problèmes (fuite mémoire, ClassCastException, IllegalAccessException &#8230;)</p><p>Vous confirmez ?</p> ]]></content:encoded> </item> <item><title>Par : Francois</title><link>http://blog.xebia.fr/2008/11/14/javarebel/#comment-8752</link> <dc:creator>Francois</dc:creator> <pubDate>Fri, 14 Nov 2008 15:12:21 +0000</pubDate> <guid
isPermaLink="false">http://blog.xebia.fr/?p=978#comment-8752</guid> <description>Bon, depuis le temps que ça me démange, après un article comme cela, il va vraiment falloir que je test JavaRebel...
En fait, avec Tapestry 5 (http://tapestry.apache.org/tapestry5/), j&#039;ai pris de mauvaises habitudes, et je ne me rend plus compte à quel point le cycle de développement &quot;modification/compile/package/redéploiement/test&quot; est long et inefficace, en particulier pour la partie UI d&#039;une application, et encore plus dans le ca d&#039;une application Web (vous savez, ces étapes très courante au cours d&#039;un run... &quot;ha, j&#039;aimerais bien un bouton en plus pour ça... Oh, et un peu de Ajax serait plus dans l&#039;air du temps... Ah zut, j&#039;ai pas bien fait mon handler... Et si je rajoutais des tris sur ce tableau... Mince, mon comparateur est à l&#039;envers...&quot;).
Donc, Tapestry 5 prend en charge le rechargement à chaud des classes qui correspondent aux pages et composants, ce qui permet de lancer son application web dans eclipse, de modifier ses pages (templates et Java) et de simplement recharger la page dans le navigateur pour voir apparaître ses modifications.
Le développement itératif prend un vrai sens (les Groovy-er me comprendront ici - tiens d&#039;ailleurs, on peut faire du Groovy à la place de Java pour le backend des pages dans T5 - ou du Scala, si on préfère).
Vous pouvez voir un exemple sur le dernier screencast de Howard (qui traite de AJAX, mais dans lequel on voit la fonctionnalité en question) :
http://tapestryjava.blogspot.com/2008/11/tapestry-5-ajax-screencast.html
Y&#039;a plus qu&#039;à tester JavaRebel. Avec Scala, parce que c&#039;est plus marrant que Java :)</description> <content:encoded><![CDATA[<p>Bon, depuis le temps que ça me démange, après un article comme cela, il va vraiment falloir que je test JavaRebel&#8230;</p><p>En fait, avec Tapestry 5 (<a
href="http://tapestry.apache.org/tapestry5/" rel="nofollow">http://tapestry.apache.org/tapestry5/</a>), j&#8217;ai pris de mauvaises habitudes, et je ne me rend plus compte à quel point le cycle de développement &laquo;&nbsp;modification/compile/package/redéploiement/test&nbsp;&raquo; est long et inefficace, en particulier pour la partie UI d&#8217;une application, et encore plus dans le ca d&#8217;une application Web (vous savez, ces étapes très courante au cours d&#8217;un run&#8230; &laquo;&nbsp;ha, j&#8217;aimerais bien un bouton en plus pour ça&#8230; Oh, et un peu de Ajax serait plus dans l&#8217;air du temps&#8230; Ah zut, j&#8217;ai pas bien fait mon handler&#8230; Et si je rajoutais des tris sur ce tableau&#8230; Mince, mon comparateur est à l&#8217;envers&#8230;&nbsp;&raquo;).</p><p>Donc, Tapestry 5 prend en charge le rechargement à chaud des classes qui correspondent aux pages et composants, ce qui permet de lancer son application web dans eclipse, de modifier ses pages (templates et Java) et de simplement recharger la page dans le navigateur pour voir apparaître ses modifications.<br
/> Le développement itératif prend un vrai sens (les Groovy-er me comprendront ici &#8211; tiens d&#8217;ailleurs, on peut faire du Groovy à la place de Java pour le backend des pages dans T5 &#8211; ou du Scala, si on préfère).</p><p>Vous pouvez voir un exemple sur le dernier screencast de Howard (qui traite de AJAX, mais dans lequel on voit la fonctionnalité en question) :<br
/> <a
href="http://tapestryjava.blogspot.com/2008/11/tapestry-5-ajax-screencast.html" rel="nofollow">http://tapestryjava.blogspot.com/2008/11/tapestry-5-ajax-screencast.html</a></p><p>Y&#8217;a plus qu&#8217;à tester JavaRebel. Avec Scala, parce que c&#8217;est plus marrant que Java <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p> ]]></content:encoded> </item> <item><title>Par : Lien vers un article traitant de JavaRebel - @Repository("djo") - Club d'entraide des d&#233;veloppeurs francophones</title><link>http://blog.xebia.fr/2008/11/14/javarebel/#comment-8749</link> <dc:creator>Lien vers un article traitant de JavaRebel - @Repository("djo") - Club d'entraide des d&#233;veloppeurs francophones</dc:creator> <pubDate>Fri, 14 Nov 2008 13:55:30 +0000</pubDate> <guid
isPermaLink="false">http://blog.xebia.fr/?p=978#comment-8749</guid> <description>[...] Une excellente pr&#233;sentation de JavaRebel (l&#039;un des outils les plus utiles et gagne-temps dans mon trousse) sur le blog de Xebia  JavaRebel - Rechargez vos classes sans redeployer [...]</description> <content:encoded><![CDATA[<p>[...] Une excellente pr&#233;sentation de JavaRebel (l&#8217;un des outils les plus utiles et gagne-temps dans mon trousse) sur le blog de Xebia  JavaRebel &#8211; Rechargez vos classes sans redeployer [...]</p> ]]></content:encoded> </item> <item><title>Par : Jawher</title><link>http://blog.xebia.fr/2008/11/14/javarebel/#comment-8748</link> <dc:creator>Jawher</dc:creator> <pubDate>Fri, 14 Nov 2008 13:48:05 +0000</pubDate> <guid
isPermaLink="false">http://blog.xebia.fr/?p=978#comment-8748</guid> <description>Salut,
J&#039;ai la chance de disposer d&#039;une licence de JavaRebel, et je dois avouer que je suis sous le charme : j&#039;en use et abuse :D
Ca marche (presque) partout : dans une application Java SE, dans une application Web (depuis Eclipse), ça marche dans un conteneur OSGi, etc.
Vous résumez très bien la chose avec : &quot;l’essayer c’est l’adopter.&quot;
Toutefois, la face caché de l&#039;iceberg est qu&#039;il arrive parfois que JavaRebel cause des bugs bizarres et très difficiles à dépister mais surtout silencieux dans des applications un peu complexes.
donc, en face d&#039;un truc qui cloche, relancer le test sans JavaRebel peut être le geste qui sauve ;)
Jawher</description> <content:encoded><![CDATA[<p>Salut,<br
/> J&#8217;ai la chance de disposer d&#8217;une licence de JavaRebel, et je dois avouer que je suis sous le charme : j&#8217;en use et abuse <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /><br
/> Ca marche (presque) partout : dans une application Java SE, dans une application Web (depuis Eclipse), ça marche dans un conteneur OSGi, etc.<br
/> Vous résumez très bien la chose avec : &laquo;&nbsp;l’essayer c’est l’adopter.&nbsp;&raquo;</p><p> Toutefois, la face caché de l&#8217;iceberg est qu&#8217;il arrive parfois que JavaRebel cause des bugs bizarres et très difficiles à dépister mais surtout silencieux dans des applications un peu complexes.<br
/> donc, en face d&#8217;un truc qui cloche, relancer le test sans JavaRebel peut être le geste qui sauve <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /></p><p>Jawher</p> ]]></content:encoded> </item> </channel> </rss>
