<?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>Perfect Knowhow&#187; Java</title>
	<atom:link href="http://www.perfect-knowhow.de/blog/categories/java/feed" rel="self" type="application/rss+xml" />
	<link>http://www.perfect-knowhow.de/blog</link>
	<description>Findings of an inquisitive mind</description>
	<lastBuildDate>Wed, 04 Jan 2012 18:37:21 +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>FindBugs: Dead store to local variable</title>
		<link>http://www.perfect-knowhow.de/blog/archives/findbugs-dead-store-to-local-variable</link>
		<comments>http://www.perfect-knowhow.de/blog/archives/findbugs-dead-store-to-local-variable#comments</comments>
		<pubDate>Fri, 23 Sep 2011 18:52:36 +0000</pubDate>
		<dc:creator>Manfred</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Fehlersuche]]></category>
		<category><![CDATA[FindBugs]]></category>

		<guid isPermaLink="false">http://www.perfect-knowhow.de/blog/?p=1467</guid>
		<description><![CDATA[Das heisst, sofort nach der Erzeugung des ListObjekts  ist dieses Objekt nach der Folgezeile auch schon wieder Müll, bereit für die Garbadge Collection und belegt nur Speicherplatz.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.perfect-knowhow.de/blog/wp-content/uploads/Logo_FindBugs.png"><img class="alignleft size-full wp-image-1530" style="margin-right: 15px;" title="Logo_FindBugs" src="http://www.perfect-knowhow.de/blog/wp-content/uploads/Logo_FindBugs.png" alt="Findbugs Logo" width="150" height="145" /></a><br />
Das Tool FindBugs untersucht den Javacode auf Bytecode-Ebene nach signifikaten Fehlermustern und zeigt  auf die Codezeile in der der Fehler gefunden wurde.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Folgende zwei Codezeilen bewirken z.B. die Ausgabe der Fehlermeldung:  <span style="color: #ff0000;">Dead store to local variable</span>.</p>
<pre class="brush:java">List&lt;Artikel&gt; artikelListe = new List&lt;Artikel&gt;();
artikelListe = dao.getWarenkorbArtikel();</pre>
<p>Können Sie die Fehlerursache entdecken?</p>
<p>&nbsp;</p>
<p><span style="font-size: medium;"><strong>Analyse des Codes:</strong></span></p>
<p><strong>Zeile 1</strong>: In der zweiten Zeile wird die lokale Variable <span style="color: #0000ff;"><em>artikelList</em></span> angelegt und der Referenzzeiger der Variable in den Stack gelegt. Im Heap wird ein Objekt Liste&lt;Artikel&gt; erzeugt. Der Referenzzeiger zeigt auf dieses Listenobjekt.<br />
<a href="http://www.perfect-knowhow.de/blog/wp-content/uploads/dead-store-local-variable-1.gif"><img class="aligncenter size-full wp-image-1471" title="dead-store-local-variable-1" src="http://www.perfect-knowhow.de/blog/wp-content/uploads/dead-store-local-variable-1.gif" alt="" width="500" height="211" /></a></p>
<p>&nbsp;</p>
<p><strong>Zeile 2</strong>: Die Methode <span style="color: #008080;"><strong>dao.getWarenkorbArtikel</strong></span> liefert als Ergebnis ein Objekt vom Typ List&lt;Artikel&gt; zurück. Durch die Zuordnung in dieser Zeile wird die gerade erst erzeugte Referenzzuordnung von <span style="color: #0000ff;">artikelListe</span> gestrichen und der Zeiger <span style="color: #0000ff;">artikelListe</span> zeigt nun auf das von dao.getWarenkorbArtikel zurückgegebene Objekt.</p>
<p><a href="http://www.perfect-knowhow.de/blog/wp-content/uploads/dead-store-local-variable-2.gif"><img class="aligncenter size-full wp-image-1470" title="dead-store-local-variable-2" src="http://www.perfect-knowhow.de/blog/wp-content/uploads/dead-store-local-variable-2.gif" alt="" width="500" height="211" /></a></p>
<p>Das heisst, sofort nach der Erzeugung des ListObjekts  ist dieses Objekt nach der Folgezeile auch schon wieder Müll, bereit für die Garbadge Collection und belegt nur Speicherplatz.</p>
<p><strong>Richtig</strong>:  Aus den Diagrammen wird klar, dass für das obige Beispiel das Statement sinnvollerweise folgendermaßen lauten müsste:</p>
<pre class="brush:java">List&lt;Artikel&gt; artikelListe = dao.getWarenkorbArtikel();</pre>
<p><strong>Siehe auch:</strong></p>
<p>Wikipedia: <a title="Wikipedia Findbugs" href="http://de.wikipedia.org/wiki/FindBugs" target="_blank">Funktionsweise von FindBugs</a><br />
Sourceforge: <a title="Findbugs Projektseite" href="http://findbugs.sourceforge.net/downloads.html" target="_blank">FindBugs Projektseite</a></p>
<p>&nbsp;</p>
<table style="width: 470px;" border="0" cellspacing="1" cellpadding="1" align="center">
<caption style="text-align: center; font-size: 9px;">&nbsp;</caption>
<tbody>
<tr>
<td><a href="http://www1.belboon.de/adtracking/02f89208662c0278a8004154.html" target="_blank"><img src="http://www1.belboon.de/adtracking/02f89208662c0278a8004154.img" border="0" width="300" height="250" alt="" /></a></td>
</tr>
</tbody>
</table>
<div style="text-align: center;color: grey;font-size: 9px;">Anzeige</div>
<p>&nbsp;</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-delicious">
			<a href="http://www.shareaholic.com/api/share/?title=FindBugs%3A+Dead+store+to+local+variable&amp;link=http://www.perfect-knowhow.de/blog/archives/findbugs-dead-store-to-local-variable&amp;notes=Das%20heisst%2C%20sofort%20nach%20der%20Erzeugung%20des%20ListObjekts%20%20ist%20dieses%20Objekt%20nach%20der%20Folgezeile%20auch%20schon%20wieder%20M%C3%BCll%2C%20bereit%20f%C3%BCr%20die%20Garbadge%20Collection%20und%20belegt%20nur%20Speicherplatz.&amp;short_link=&amp;shortener=none&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=2&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://www.shareaholic.com/api/share/?title=FindBugs%3A+Dead+store+to+local+variable&amp;link=http://www.perfect-knowhow.de/blog/archives/findbugs-dead-store-to-local-variable&amp;notes=Das%20heisst%2C%20sofort%20nach%20der%20Erzeugung%20des%20ListObjekts%20%20ist%20dieses%20Objekt%20nach%20der%20Folgezeile%20auch%20schon%20wieder%20M%C3%BCll%2C%20bereit%20f%C3%BCr%20die%20Garbadge%20Collection%20und%20belegt%20nur%20Speicherplatz.&amp;short_link=&amp;shortener=none&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=3&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.shareaholic.com/api/share/?title=FindBugs%3A+Dead+store+to+local+variable&amp;link=http://www.perfect-knowhow.de/blog/archives/findbugs-dead-store-to-local-variable&amp;notes=Das%20heisst%2C%20sofort%20nach%20der%20Erzeugung%20des%20ListObjekts%20%20ist%20dieses%20Objekt%20nach%20der%20Folgezeile%20auch%20schon%20wieder%20M%C3%BCll%2C%20bereit%20f%C3%BCr%20die%20Garbadge%20Collection%20und%20belegt%20nur%20Speicherplatz.&amp;short_link=&amp;shortener=none&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=5&amp;tags=&amp;ctype=" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-googlebookmarks">
			<a href="http://www.shareaholic.com/api/share/?title=FindBugs%3A+Dead+store+to+local+variable&amp;link=http://www.perfect-knowhow.de/blog/archives/findbugs-dead-store-to-local-variable&amp;notes=Das%20heisst%2C%20sofort%20nach%20der%20Erzeugung%20des%20ListObjekts%20%20ist%20dieses%20Objekt%20nach%20der%20Folgezeile%20auch%20schon%20wieder%20M%C3%BCll%2C%20bereit%20f%C3%BCr%20die%20Garbadge%20Collection%20und%20belegt%20nur%20Speicherplatz.&amp;short_link=&amp;shortener=none&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=74&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to Google Bookmarks">Add this to Google Bookmarks</a>
		</li>
		<li class="shr-misterwong">
			<a href="http://www.shareaholic.com/api/share/?title=FindBugs%3A+Dead+store+to+local+variable&amp;link=http://www.perfect-knowhow.de/blog/archives/findbugs-dead-store-to-local-variable&amp;notes=Das%20heisst%2C%20sofort%20nach%20der%20Erzeugung%20des%20ListObjekts%20%20ist%20dieses%20Objekt%20nach%20der%20Folgezeile%20auch%20schon%20wieder%20M%C3%BCll%2C%20bereit%20f%C3%BCr%20die%20Garbadge%20Collection%20und%20belegt%20nur%20Speicherplatz.&amp;short_link=&amp;shortener=none&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=298&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to Mister Wong">Add this to Mister Wong</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.shareaholic.com/api/share/?title=FindBugs%3A+Dead+store+to+local+variable&amp;link=http://www.perfect-knowhow.de/blog/archives/findbugs-dead-store-to-local-variable&amp;notes=Das%20heisst%2C%20sofort%20nach%20der%20Erzeugung%20des%20ListObjekts%20%20ist%20dieses%20Objekt%20nach%20der%20Folgezeile%20auch%20schon%20wieder%20M%C3%BCll%2C%20bereit%20f%C3%BCr%20die%20Garbadge%20Collection%20und%20belegt%20nur%20Speicherplatz.&amp;short_link=&amp;shortener=none&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=38&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-technorati">
			<a href="http://www.shareaholic.com/api/share/?title=FindBugs%3A+Dead+store+to+local+variable&amp;link=http://www.perfect-knowhow.de/blog/archives/findbugs-dead-store-to-local-variable&amp;notes=Das%20heisst%2C%20sofort%20nach%20der%20Erzeugung%20des%20ListObjekts%20%20ist%20dieses%20Objekt%20nach%20der%20Folgezeile%20auch%20schon%20wieder%20M%C3%BCll%2C%20bereit%20f%C3%BCr%20die%20Garbadge%20Collection%20und%20belegt%20nur%20Speicherplatz.&amp;short_link=&amp;shortener=none&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=10&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Technorati">Share this on Technorati</a>
		</li>
		<li class="shr-twitter">
			<a href="http://www.shareaholic.com/api/share/?title=FindBugs%3A+Dead+store+to+local+variable&amp;link=http://www.perfect-knowhow.de/blog/archives/findbugs-dead-store-to-local-variable&amp;notes=Das%20heisst%2C%20sofort%20nach%20der%20Erzeugung%20des%20ListObjekts%20%20ist%20dieses%20Objekt%20nach%20der%20Folgezeile%20auch%20schon%20wieder%20M%C3%BCll%2C%20bereit%20f%C3%BCr%20die%20Garbadge%20Collection%20und%20belegt%20nur%20Speicherplatz.&amp;short_link=&amp;shortener=none&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=%24%7Btitle%7D+-+%24%7Bshort_link%7D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
</ul><div style="clear: both;"></div><div class="shr-getshr" style="visibility:hidden;font-size:10px !important"><a target="_blank" href="http://www.shareaholic.com/?src=pub">Get Shareaholic</a></div><div style="clear: both;"></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.perfect-knowhow.de/blog/archives/findbugs-dead-store-to-local-variable/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Heute Anmeldeschluß für Sun Certified Java Programmer PLUS</title>
		<link>http://www.perfect-knowhow.de/blog/archives/heute-anmeldeschlus-fur-sun-certified-java-programmer-plus</link>
		<comments>http://www.perfect-knowhow.de/blog/archives/heute-anmeldeschlus-fur-sun-certified-java-programmer-plus#comments</comments>
		<pubDate>Mon, 18 Jan 2010 14:46:41 +0000</pubDate>
		<dc:creator>Manfred</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.perfect-knowhow.de/blog/archives/122.html</guid>
		<description><![CDATA[Sun wird das derzeitige Zertifikat SCJP (Sun Certified Java Programmer) durch ein neues SCJP+ Exam ersetzen. Heute ist Anmeldeschluß Ursprünglich war für die Beta-Testphase der July 2009 angesetzt worden.  Dieser Termin hat sich um mehrere Monate verschoben. Heute, den 18. Januar 2010 läuft die Anmeldefrist für die kostenlose Teilnahme am Beta-Testprogramm ab.  SUN sucht bereits zertifizierte [...]]]></description>
			<content:encoded><![CDATA[<p>Sun wird das derzeitige Zertifikat SCJP (Sun Certified Java Programmer) durch ein <strong>neues SCJP+ Exam</strong> ersetzen.</p>
<p><span style="color: #993300;"><strong>Heute ist Anmeldeschluß<br />
</strong></span>Ursprünglich war für die Beta-Testphase der July 2009 angesetzt worden.  Dieser Termin hat sich um mehrere Monate verschoben.</p>
<p>Heute, den <strong>18. Januar 2010 </strong>läuft die Anmeldefrist für die <strong>kostenlose Teilnahme am Beta-Testprogramm</strong> ab.  SUN sucht bereits zertifizierte und unzertifizierte Programmierer, mit viel und wenig Javaerfahrung, aus verschiedenen Ländern, und, und, und &#8230; und wird sich dann einen &#8220;repräsentativen&#8221; Mix von Testkandidaten zusammenstellen.</p>
<p>Diejenigen, die von SUN eine Teilnahmemöglichkeit zugesagt bekommen, werden dann voraussichtlich im Zeitraum von Januar und Februar 2010 die Prüfung in einem Prüfungscenter ablegen müssen.</p>
<p>Wer sich also noch anmelden will, möge sich beeilen.</p>
<p><strong><span style="color: #993300;">P.S.: </span></strong>Tut mir leid, dass dieser Blogbeitrag so brandaktuell ist. Habe selbst erst heute von der neuen Deadline erfahren.</p>
<p><strong><span style="color: #993300;">P.S.-Zwei: </span></strong>Als Anmeldebestätigung versendet SUN Microsystems übrigens eine fast leere Seite.  Nicht darüber wundern. Laut Aussage von SUN ist das ein Systemfehler, der kurzfristig nicht mehr behoben werden kann. Die Anmeldungen würden aber ankommen und man würde im positiven Fall benachrichtigt werden.</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-delicious">
			<a href="http://www.shareaholic.com/api/share/?title=Heute+Anmeldeschlu%C3%9F+f%C3%BCr+Sun+Certified+Java+Programmer+PLUS&amp;link=http://www.perfect-knowhow.de/blog/archives/heute-anmeldeschlus-fur-sun-certified-java-programmer-plus&amp;notes=Sun%20wird%20das%20derzeitige%20Zertifikat%20SCJP%20%28Sun%20Certified%20Java%20Programmer%29%20durch%20ein%20neues%20SCJP%2B%20Exam%20ersetzen.%0D%0A%0D%0AHeute%20ist%20Anmeldeschlu%C3%9F%0D%0AUrspr%C3%BCnglich%20war%20f%C3%BCr%20die%20Beta-Testphase%20der%20July%202009%20angesetzt%20worden.%C2%A0%20Dieser%20Termin%20hat%20sich%20um%20mehrere%20Monate%20verschoben.%0D%0A%0D%0AHeute%2C%20den%C2%A018.%20Januar%202010%20l%C3&amp;short_link=&amp;shortener=none&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=2&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://www.shareaholic.com/api/share/?title=Heute+Anmeldeschlu%C3%9F+f%C3%BCr+Sun+Certified+Java+Programmer+PLUS&amp;link=http://www.perfect-knowhow.de/blog/archives/heute-anmeldeschlus-fur-sun-certified-java-programmer-plus&amp;notes=Sun%20wird%20das%20derzeitige%20Zertifikat%20SCJP%20%28Sun%20Certified%20Java%20Programmer%29%20durch%20ein%20neues%20SCJP%2B%20Exam%20ersetzen.%0D%0A%0D%0AHeute%20ist%20Anmeldeschlu%C3%9F%0D%0AUrspr%C3%BCnglich%20war%20f%C3%BCr%20die%20Beta-Testphase%20der%20July%202009%20angesetzt%20worden.%C2%A0%20Dieser%20Termin%20hat%20sich%20um%20mehrere%20Monate%20verschoben.%0D%0A%0D%0AHeute%2C%20den%C2%A018.%20Januar%202010%20l%C3&amp;short_link=&amp;shortener=none&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=3&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.shareaholic.com/api/share/?title=Heute+Anmeldeschlu%C3%9F+f%C3%BCr+Sun+Certified+Java+Programmer+PLUS&amp;link=http://www.perfect-knowhow.de/blog/archives/heute-anmeldeschlus-fur-sun-certified-java-programmer-plus&amp;notes=Sun%20wird%20das%20derzeitige%20Zertifikat%20SCJP%20%28Sun%20Certified%20Java%20Programmer%29%20durch%20ein%20neues%20SCJP%2B%20Exam%20ersetzen.%0D%0A%0D%0AHeute%20ist%20Anmeldeschlu%C3%9F%0D%0AUrspr%C3%BCnglich%20war%20f%C3%BCr%20die%20Beta-Testphase%20der%20July%202009%20angesetzt%20worden.%C2%A0%20Dieser%20Termin%20hat%20sich%20um%20mehrere%20Monate%20verschoben.%0D%0A%0D%0AHeute%2C%20den%C2%A018.%20Januar%202010%20l%C3&amp;short_link=&amp;shortener=none&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=5&amp;tags=&amp;ctype=" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-googlebookmarks">
			<a href="http://www.shareaholic.com/api/share/?title=Heute+Anmeldeschlu%C3%9F+f%C3%BCr+Sun+Certified+Java+Programmer+PLUS&amp;link=http://www.perfect-knowhow.de/blog/archives/heute-anmeldeschlus-fur-sun-certified-java-programmer-plus&amp;notes=Sun%20wird%20das%20derzeitige%20Zertifikat%20SCJP%20%28Sun%20Certified%20Java%20Programmer%29%20durch%20ein%20neues%20SCJP%2B%20Exam%20ersetzen.%0D%0A%0D%0AHeute%20ist%20Anmeldeschlu%C3%9F%0D%0AUrspr%C3%BCnglich%20war%20f%C3%BCr%20die%20Beta-Testphase%20der%20July%202009%20angesetzt%20worden.%C2%A0%20Dieser%20Termin%20hat%20sich%20um%20mehrere%20Monate%20verschoben.%0D%0A%0D%0AHeute%2C%20den%C2%A018.%20Januar%202010%20l%C3&amp;short_link=&amp;shortener=none&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=74&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to Google Bookmarks">Add this to Google Bookmarks</a>
		</li>
		<li class="shr-misterwong">
			<a href="http://www.shareaholic.com/api/share/?title=Heute+Anmeldeschlu%C3%9F+f%C3%BCr+Sun+Certified+Java+Programmer+PLUS&amp;link=http://www.perfect-knowhow.de/blog/archives/heute-anmeldeschlus-fur-sun-certified-java-programmer-plus&amp;notes=Sun%20wird%20das%20derzeitige%20Zertifikat%20SCJP%20%28Sun%20Certified%20Java%20Programmer%29%20durch%20ein%20neues%20SCJP%2B%20Exam%20ersetzen.%0D%0A%0D%0AHeute%20ist%20Anmeldeschlu%C3%9F%0D%0AUrspr%C3%BCnglich%20war%20f%C3%BCr%20die%20Beta-Testphase%20der%20July%202009%20angesetzt%20worden.%C2%A0%20Dieser%20Termin%20hat%20sich%20um%20mehrere%20Monate%20verschoben.%0D%0A%0D%0AHeute%2C%20den%C2%A018.%20Januar%202010%20l%C3&amp;short_link=&amp;shortener=none&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=298&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to Mister Wong">Add this to Mister Wong</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.shareaholic.com/api/share/?title=Heute+Anmeldeschlu%C3%9F+f%C3%BCr+Sun+Certified+Java+Programmer+PLUS&amp;link=http://www.perfect-knowhow.de/blog/archives/heute-anmeldeschlus-fur-sun-certified-java-programmer-plus&amp;notes=Sun%20wird%20das%20derzeitige%20Zertifikat%20SCJP%20%28Sun%20Certified%20Java%20Programmer%29%20durch%20ein%20neues%20SCJP%2B%20Exam%20ersetzen.%0D%0A%0D%0AHeute%20ist%20Anmeldeschlu%C3%9F%0D%0AUrspr%C3%BCnglich%20war%20f%C3%BCr%20die%20Beta-Testphase%20der%20July%202009%20angesetzt%20worden.%C2%A0%20Dieser%20Termin%20hat%20sich%20um%20mehrere%20Monate%20verschoben.%0D%0A%0D%0AHeute%2C%20den%C2%A018.%20Januar%202010%20l%C3&amp;short_link=&amp;shortener=none&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=38&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-technorati">
			<a href="http://www.shareaholic.com/api/share/?title=Heute+Anmeldeschlu%C3%9F+f%C3%BCr+Sun+Certified+Java+Programmer+PLUS&amp;link=http://www.perfect-knowhow.de/blog/archives/heute-anmeldeschlus-fur-sun-certified-java-programmer-plus&amp;notes=Sun%20wird%20das%20derzeitige%20Zertifikat%20SCJP%20%28Sun%20Certified%20Java%20Programmer%29%20durch%20ein%20neues%20SCJP%2B%20Exam%20ersetzen.%0D%0A%0D%0AHeute%20ist%20Anmeldeschlu%C3%9F%0D%0AUrspr%C3%BCnglich%20war%20f%C3%BCr%20die%20Beta-Testphase%20der%20July%202009%20angesetzt%20worden.%C2%A0%20Dieser%20Termin%20hat%20sich%20um%20mehrere%20Monate%20verschoben.%0D%0A%0D%0AHeute%2C%20den%C2%A018.%20Januar%202010%20l%C3&amp;short_link=&amp;shortener=none&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=10&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Technorati">Share this on Technorati</a>
		</li>
		<li class="shr-twitter">
			<a href="http://www.shareaholic.com/api/share/?title=Heute+Anmeldeschlu%C3%9F+f%C3%BCr+Sun+Certified+Java+Programmer+PLUS&amp;link=http://www.perfect-knowhow.de/blog/archives/heute-anmeldeschlus-fur-sun-certified-java-programmer-plus&amp;notes=Sun%20wird%20das%20derzeitige%20Zertifikat%20SCJP%20%28Sun%20Certified%20Java%20Programmer%29%20durch%20ein%20neues%20SCJP%2B%20Exam%20ersetzen.%0D%0A%0D%0AHeute%20ist%20Anmeldeschlu%C3%9F%0D%0AUrspr%C3%BCnglich%20war%20f%C3%BCr%20die%20Beta-Testphase%20der%20July%202009%20angesetzt%20worden.%C2%A0%20Dieser%20Termin%20hat%20sich%20um%20mehrere%20Monate%20verschoben.%0D%0A%0D%0AHeute%2C%20den%C2%A018.%20Januar%202010%20l%C3&amp;short_link=&amp;shortener=none&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=%24%7Btitle%7D+-+%24%7Bshort_link%7D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
</ul><div style="clear: both;"></div><div class="shr-getshr" style="visibility:hidden;font-size:10px !important"><a target="_blank" href="http://www.shareaholic.com/?src=pub">Get Shareaholic</a></div><div style="clear: both;"></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.perfect-knowhow.de/blog/archives/heute-anmeldeschlus-fur-sun-certified-java-programmer-plus/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>REST &#8211; Softwarearchitekturstil und Strohfeuer</title>
		<link>http://www.perfect-knowhow.de/blog/archives/rest-softwarearchitekturstil-und-strohfeuer</link>
		<comments>http://www.perfect-knowhow.de/blog/archives/rest-softwarearchitekturstil-und-strohfeuer#comments</comments>
		<pubDate>Mon, 27 Jul 2009 06:50:01 +0000</pubDate>
		<dc:creator>Manfred</dc:creator>
				<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[REST]]></category>

		<guid isPermaLink="false">http://www.perfect-knowhow.de/blog/archives/27.html</guid>
		<description><![CDATA[Ich habe gerade das Buch &#8220;RESTful PHP Webservices &#8221; gelesen (Packt Publishing; Author: Samisa Abeysinghe). Um es vorwegzunehmen, ich halte Webservices für etwas ganz Tolles. Kapselung des Codes, definierte Aufrufschnittstelle, Verknüpfung von heterogenen Systemen/Programmiersprachen das sind alles Pluspunkte für mich, aber nach dem Lesen des Buches erschließt sich für mich nicht, warum ich Webservices nach REST Style [...]]]></description>
			<content:encoded><![CDATA[<p>Ich habe gerade das Buch &#8220;<strong>RESTful <span style="color: #800000;">PHP</span> Webservices </strong>&#8221; gelesen (Packt Publishing; Author: Samisa Abeysinghe).</p>
<p>Um es vorwegzunehmen, ich halte Webservices für etwas ganz Tolles. Kapselung des Codes, definierte Aufrufschnittstelle, Verknüpfung von heterogenen Systemen/Programmiersprachen das sind alles Pluspunkte für mich, aber nach dem Lesen des Buches erschließt sich für mich nicht, warum ich Webservices nach REST Style programmieren sollte, was mir dieser Ansatz für einen Zusatznutzen bringt.</p>
<p>Warum habe ich als Java Programmierer überhaupt ein PHP-Buch gelesen. Zum einen kann man nicht leugnen, dass PHP insbesondere im Bereich der Frontendprogrammierung marktrelevant ist und seit der Version PHP 5 ist die Skriptsprache stark objektorientiert.  Das Buch &#8220;<strong>RESTful <span style="color: #800000;">Java</span> Webservices</strong>&#8221; soll erst gegen Ende des Jahres herauskommen. Kernpunkt meines Interesses war die Idee der Restprogrammierung kennenzulernen. Die Codebespiele sind in diesem Buch natürlich allesamt in PHP geschrieben, aber in welcher Programmiersprache man die  grundsätzliche Idee des REST Ansatzes umsetzt (PHP oder Java) ist von zweitrangiger Bedeutung.  Es ist für einen Programmierer absolut leicht den PHP-Code des Buchs zu verstehen und sich das Java Gegenstück dazu gedanklich vorzustellen.</p>
<p>Es wird immer wieder betont, dass <a href="http://de.wikipedia.org/wiki/Representational_State_Transfer">REST</a> (Representational State Transfer) keine neue Programmiersprache ist und auch kein neues Programmierframework, sondern ein Softwarearchitekturstil.  Und ich glaube, dass diese Kernaussage auch den Nutzen und die Limitierung von REST beschreibt. REST wird sich nicht weiterentwicklen, weil es keine Möglichkeit zur Weiterentwicklung gibt. Stillstand ist aber in der Softwareentwicklung für jede gute Idee fatal.</p>
<p>In der REST Programmierung wird alles als Ressource mit eigener URI deklariert und es ist verpönt, Parameter zu übergeben.</p>
<p>Wenn beispielsweise der Bibliotheksbenutzer (ID=4) das Buch mit der ID= 6 ausleiht, so würde man vielleicht normalerweise<br />
<span id="grauCode">pfad/kunde.php?client=4&amp;book=6</span><br />
schreiben.</p>
<p>Im REST Stil mit der verpönten Parameterübergabe schreibt man dann<br />
<span id="grauCode">pfad/kunde/4/book/6</span></p>
<p>Es tut mir leid, aber ich kann dabei keinen großen Unterschied sehen. Auch wenn dies nun als Ressource (URI) geschrieben wurde, bleibt es für mich doch grundsätzlich eine Parameterübergabe.</p>
<p>Auch bei der REST-Schreibweise existiert physikalisch keine Datei in dem angegebenen Pfad und wir kommen zu meinem ersten Kritikpunkt an REST. Für jeden Ressourceaufruf wie pfad/kunde/4/book/6 ist ein Controller zu programmieren, der den Ressourceaufruf erst einmal wieder auseinanderbaut, um dann letztendlich die erforderlichen Verarbeitungs- bzw. Datenaufbereitungsschritte durchzuführen.</p>
<p>Während man bei HTTP-Aufrufen sonst nur mit GET und POST agiert, so wird von REST fast das volle Repertoire (GET, POST, PUT, DELETE) eingesetzt.  Dies wird einem als großer Vorteil gegenüber einem normalen Webservice Aufruf verkauft, bei dem man den Modus explizit mitgibt. Aber ob ich nun den Modus des Webservices als Parameter übergeben bekomme oder ihn mir erst durch Betrachtung des HTTP-Befehls (GET, PUT, &#8230;) erschließen muss, bleibt sich für mich doch gleich.  Der Modus muss und wird auf jeden Fall übergeben, ob auf die eine oder andere Art.  Theoretisch gesehen, mag die REST Methode die sauberere Art der Modussteuerung sein, praxisbezogen würde ich sie allerdings als die schlechtere Verfahrensweise bezeichnen. Aus Sicherheitsgründen wird oft der PUT-Befehl auf Servern deaktiviert (insbesondere bei externen Serverbetreibern), so dass man mit einem Programm, welches auf der REST-Architektur basiert, ein richtiges Problem beim Deployment bekommt.  Was nützt einem das beste theoretische Konzept, wenn es auf dem Produktionsserver nicht läuft!</p>
<p>Um die URIs aufzulösen, braucht es einen Controller, der den HTTP-Befehl auflöst, dann die Parameter (die ja keine Parameter sind) interpretiert um dann in einer Art Kaskadierung mit vielen &#8220;wenn dann&#8221; Fallbetrachtungen irgendwann einmal das zuständige Aufbereitungsprogramm/die zuständigen Aufbereitungsprogramme bestimmt zu haben.<br />
Bei einfachen Webservices mag das ja noch angehen, wenn mit steigender Komplexität sehe ich auch eine steigende Fehlerträchtigkeit mit dieser Architektur und damit einhergehend eine Verschlechterung der Wartbarkeit der Software.</p>
<div id="FazitBox"><strong>Mein Fazit</strong>:<br />
REST mag ein Softwarearchitekturstil sein, den man kennen sollte, um bei der Anwendungsarchitektur mitreden zu können, wenn jemand anfängt, mit Buzzwords (Mode-Schlagworten) wie REST zu arbeiten. Aber ich sehe darin keine, die Programmierung nachhaltig beeinflußende, richtungsweisende Neuerung.</div>
<p>Das Thema REST wird bald von einem anderen Strohfeuer abgelöst werden. Die durchaus vorhandenen, positiven Gedankenanstöße von REST (zustandslose Webservices, keine Notwendigkeit von Cookies) werden hoffentlich von anderen, noch kommenden Techniken aufgegriffen und weitergeführt.</p>
<p>REST ist und bleibt das Kapitel 5 der <a class="extLink" href="http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm">Dissertation von Roy Thomas Fielding</a> aus dem Jahr 2000.</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-delicious">
			<a href="http://www.shareaholic.com/api/share/?title=REST+-+Softwarearchitekturstil+und+Strohfeuer&amp;link=http://www.perfect-knowhow.de/blog/archives/rest-softwarearchitekturstil-und-strohfeuer&amp;notes=Ich%20habe%20gerade%20das%20Buch%20%22RESTful%20PHP%20Webservices%20%22%20gelesen%20%28Packt%20Publishing%3B%20Author%3A%C2%A0Samisa%20Abeysinghe%29.%0D%0A%0D%0AUm%20es%20vorwegzunehmen%2C%20ich%20halte%20Webservices%20f%C3%BCr%20etwas%20ganz%20Tolles.%20Kapselung%20des%20Codes%2C%20definierte%20Aufrufschnittstelle%2C%20Verkn%C3%BCpfung%20von%20heterogenen%20Systemen%2FProgrammiersprachen%20das%20sind%20a&amp;short_link=&amp;shortener=none&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=2&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://www.shareaholic.com/api/share/?title=REST+-+Softwarearchitekturstil+und+Strohfeuer&amp;link=http://www.perfect-knowhow.de/blog/archives/rest-softwarearchitekturstil-und-strohfeuer&amp;notes=Ich%20habe%20gerade%20das%20Buch%20%22RESTful%20PHP%20Webservices%20%22%20gelesen%20%28Packt%20Publishing%3B%20Author%3A%C2%A0Samisa%20Abeysinghe%29.%0D%0A%0D%0AUm%20es%20vorwegzunehmen%2C%20ich%20halte%20Webservices%20f%C3%BCr%20etwas%20ganz%20Tolles.%20Kapselung%20des%20Codes%2C%20definierte%20Aufrufschnittstelle%2C%20Verkn%C3%BCpfung%20von%20heterogenen%20Systemen%2FProgrammiersprachen%20das%20sind%20a&amp;short_link=&amp;shortener=none&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=3&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.shareaholic.com/api/share/?title=REST+-+Softwarearchitekturstil+und+Strohfeuer&amp;link=http://www.perfect-knowhow.de/blog/archives/rest-softwarearchitekturstil-und-strohfeuer&amp;notes=Ich%20habe%20gerade%20das%20Buch%20%22RESTful%20PHP%20Webservices%20%22%20gelesen%20%28Packt%20Publishing%3B%20Author%3A%C2%A0Samisa%20Abeysinghe%29.%0D%0A%0D%0AUm%20es%20vorwegzunehmen%2C%20ich%20halte%20Webservices%20f%C3%BCr%20etwas%20ganz%20Tolles.%20Kapselung%20des%20Codes%2C%20definierte%20Aufrufschnittstelle%2C%20Verkn%C3%BCpfung%20von%20heterogenen%20Systemen%2FProgrammiersprachen%20das%20sind%20a&amp;short_link=&amp;shortener=none&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=5&amp;tags=&amp;ctype=" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-googlebookmarks">
			<a href="http://www.shareaholic.com/api/share/?title=REST+-+Softwarearchitekturstil+und+Strohfeuer&amp;link=http://www.perfect-knowhow.de/blog/archives/rest-softwarearchitekturstil-und-strohfeuer&amp;notes=Ich%20habe%20gerade%20das%20Buch%20%22RESTful%20PHP%20Webservices%20%22%20gelesen%20%28Packt%20Publishing%3B%20Author%3A%C2%A0Samisa%20Abeysinghe%29.%0D%0A%0D%0AUm%20es%20vorwegzunehmen%2C%20ich%20halte%20Webservices%20f%C3%BCr%20etwas%20ganz%20Tolles.%20Kapselung%20des%20Codes%2C%20definierte%20Aufrufschnittstelle%2C%20Verkn%C3%BCpfung%20von%20heterogenen%20Systemen%2FProgrammiersprachen%20das%20sind%20a&amp;short_link=&amp;shortener=none&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=74&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to Google Bookmarks">Add this to Google Bookmarks</a>
		</li>
		<li class="shr-misterwong">
			<a href="http://www.shareaholic.com/api/share/?title=REST+-+Softwarearchitekturstil+und+Strohfeuer&amp;link=http://www.perfect-knowhow.de/blog/archives/rest-softwarearchitekturstil-und-strohfeuer&amp;notes=Ich%20habe%20gerade%20das%20Buch%20%22RESTful%20PHP%20Webservices%20%22%20gelesen%20%28Packt%20Publishing%3B%20Author%3A%C2%A0Samisa%20Abeysinghe%29.%0D%0A%0D%0AUm%20es%20vorwegzunehmen%2C%20ich%20halte%20Webservices%20f%C3%BCr%20etwas%20ganz%20Tolles.%20Kapselung%20des%20Codes%2C%20definierte%20Aufrufschnittstelle%2C%20Verkn%C3%BCpfung%20von%20heterogenen%20Systemen%2FProgrammiersprachen%20das%20sind%20a&amp;short_link=&amp;shortener=none&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=298&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to Mister Wong">Add this to Mister Wong</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.shareaholic.com/api/share/?title=REST+-+Softwarearchitekturstil+und+Strohfeuer&amp;link=http://www.perfect-knowhow.de/blog/archives/rest-softwarearchitekturstil-und-strohfeuer&amp;notes=Ich%20habe%20gerade%20das%20Buch%20%22RESTful%20PHP%20Webservices%20%22%20gelesen%20%28Packt%20Publishing%3B%20Author%3A%C2%A0Samisa%20Abeysinghe%29.%0D%0A%0D%0AUm%20es%20vorwegzunehmen%2C%20ich%20halte%20Webservices%20f%C3%BCr%20etwas%20ganz%20Tolles.%20Kapselung%20des%20Codes%2C%20definierte%20Aufrufschnittstelle%2C%20Verkn%C3%BCpfung%20von%20heterogenen%20Systemen%2FProgrammiersprachen%20das%20sind%20a&amp;short_link=&amp;shortener=none&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=38&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-technorati">
			<a href="http://www.shareaholic.com/api/share/?title=REST+-+Softwarearchitekturstil+und+Strohfeuer&amp;link=http://www.perfect-knowhow.de/blog/archives/rest-softwarearchitekturstil-und-strohfeuer&amp;notes=Ich%20habe%20gerade%20das%20Buch%20%22RESTful%20PHP%20Webservices%20%22%20gelesen%20%28Packt%20Publishing%3B%20Author%3A%C2%A0Samisa%20Abeysinghe%29.%0D%0A%0D%0AUm%20es%20vorwegzunehmen%2C%20ich%20halte%20Webservices%20f%C3%BCr%20etwas%20ganz%20Tolles.%20Kapselung%20des%20Codes%2C%20definierte%20Aufrufschnittstelle%2C%20Verkn%C3%BCpfung%20von%20heterogenen%20Systemen%2FProgrammiersprachen%20das%20sind%20a&amp;short_link=&amp;shortener=none&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=10&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Technorati">Share this on Technorati</a>
		</li>
		<li class="shr-twitter">
			<a href="http://www.shareaholic.com/api/share/?title=REST+-+Softwarearchitekturstil+und+Strohfeuer&amp;link=http://www.perfect-knowhow.de/blog/archives/rest-softwarearchitekturstil-und-strohfeuer&amp;notes=Ich%20habe%20gerade%20das%20Buch%20%22RESTful%20PHP%20Webservices%20%22%20gelesen%20%28Packt%20Publishing%3B%20Author%3A%C2%A0Samisa%20Abeysinghe%29.%0D%0A%0D%0AUm%20es%20vorwegzunehmen%2C%20ich%20halte%20Webservices%20f%C3%BCr%20etwas%20ganz%20Tolles.%20Kapselung%20des%20Codes%2C%20definierte%20Aufrufschnittstelle%2C%20Verkn%C3%BCpfung%20von%20heterogenen%20Systemen%2FProgrammiersprachen%20das%20sind%20a&amp;short_link=&amp;shortener=none&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=%24%7Btitle%7D+-+%24%7Bshort_link%7D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
</ul><div style="clear: both;"></div><div class="shr-getshr" style="visibility:hidden;font-size:10px !important"><a target="_blank" href="http://www.shareaholic.com/?src=pub">Get Shareaholic</a></div><div style="clear: both;"></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.perfect-knowhow.de/blog/archives/rest-softwarearchitekturstil-und-strohfeuer/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Served from: www.perfect-knowhow.de @ 2012-02-07 15:32:48 -->
