<?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>Pierre Schambacher.com &#187; coup de gueule</title>
	<atom:link href="http://www.pierreschambacher.com/blog/tag/coup-de-gueule/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.pierreschambacher.com</link>
	<description>Ingénieur en Informatique pour Intellicore</description>
	<lastBuildDate>Mon, 26 Sep 2011 07:59:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Java c&#8217;est nul !</title>
		<link>http://www.pierreschambacher.com/blog/java-cest-nul/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=java-cest-nul</link>
		<comments>http://www.pierreschambacher.com/blog/java-cest-nul/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 18:02:02 +0000</pubDate>
		<dc:creator>Pierre Schambacher</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Informatique générale]]></category>
		<category><![CDATA[coup de gueule]]></category>
		<category><![CDATA[fail]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://www.pierreschambacher.com/?p=312</guid>
		<description><![CDATA[Aujourd&#8217;hui c&#8217;est coup de gueule ! Je sors de ma longue torpeur pour gueuler un coup, JAVA C&#8217;EST NUL ! http://cestnul.fr/Java Etant donné que je ne suis pas homme à gueuler sans preuve, voici la démonstration de ce que j&#8217;avance. &#8230; <a href="http://www.pierreschambacher.com/blog/java-cest-nul/">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Aujourd&#8217;hui c&#8217;est coup de gueule ! Je sors de ma longue torpeur pour gueuler un coup, JAVA C&#8217;EST NUL ! <a href="http://cestnul.fr/Java">http://cestnul.fr/Java</a></p>
<p><span id="more-312"></span></p>
<p>Etant donné que je ne suis pas homme à gueuler sans preuve, voici la démonstration de ce que j&#8217;avance.</p>
<p style="text-align: center;"><img class="aligncenter" src="http://www.pierreschambacher.com/wp-content/uploads/2010/02/javaFail-300x280.png" alt="Java Fail" /></p>
<p>Je vous laisse le temps de lire ce petit bout de code et deviner le résultat logique d&#8217;une exécution&#8230;<br />
Si vous pensez comme moi, vous vous attendez à ce résultat:</p>
<blockquote>
<div id="_mcePaste">Object: java.lang.String</div>
<div id="_mcePaste">Integer</div>
<div id="_mcePaste">Float</div>
</blockquote>
<p>Réfléchissons deux minutes.</p>
<p>Nous avons une liste qui contient différents objets, une chaîne de caractère, un entier et un nombre décimal. Notre classe Main présente une méthode polymorphique prenant en paramètre un Object, un Integer ou un Float.<br />
Pour le premier objet la méthode la plus approchante est la méthode avec le paramètre Object.<br />
Pour les deux autres la méthode avec le paramètre de type exact va être appelé du fait que la liaison en java est dynamique et décidée à l&#8217;exécution. Le fameux &laquo;&nbsp;VIRTUAL&nbsp;&raquo; des programmeurs C++.</p>
<p>Voyons le résultat de l&#8217;exécution (JVM 1.6 sur MacOS 10.6 dit &laquo;&nbsp;Snow Leopard&nbsp;&raquo;):</p>
<blockquote><p>Object: java.lang.String<br />
Object: java.lang.Integer<br />
Object: java.lang.Float</p></blockquote>
<p>Mais ????!!!! Voilà un résultat qui ferait lacher à nos amis anglo-saxons un virulent &laquo;&nbsp;WTF ?!&nbsp;&raquo;. Que c&#8217;est-il passé ?</p>
<p>Et bien c&#8217;est extrêmement facile. Nous nous trouvons devant un manique échec de Java et ses méthodes liées à l&#8217;exécution&#8230; Le compilateur voit que l&#8217;ArrayList contient des instances de Object, il voit une méthode prenant en paramètre un Object, il fait la liaison à la compilation. Dans le langage courant on dirait simplement: JAVA FAIL !</p>
<p>Si vous ne me croyez pas, vous pouvez simplement télécharger le fichier de test <a title="Démonstration du Java Fail" href="http://www.pierreschambacher.com/wp-content/uploads/2010/02/Main-exemple-1.txt" target="_blank">ici</a> (en renommant le fichier Main.java évidemment). Pour le principe j&#8217;ai changé Object en Number (superclasse de Integer, Float, Double, &#8230;) et le résultat est bien sûr le même, comme vous le constaterez <a title="Démonstration du Java Fail" href="http://www.pierreschambacher.com/wp-content/uploads/2010/02/Main-exemple-2.txt" target="_blank">là</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pierreschambacher.com/blog/java-cest-nul/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>

