<?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/"
		>
<channel>
	<title>Comments on: A final bit of advice</title>
	<atom:link href="http://tech.puredanger.com/index.php/2008/11/26/final-java/feed/" rel="self" type="application/rss+xml" />
	<link>http://tech.puredanger.com/2008/11/26/final-java/</link>
	<description>Alex Miller&#039;s technical blog</description>
	<lastBuildDate>Mon, 06 Feb 2012 19:39:50 -0800</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.4</generator>
	<item>
		<title>By: Jeff Grigg</title>
		<link>http://tech.puredanger.com/2008/11/26/final-java/comment-page-1/#comment-187903</link>
		<dc:creator>Jeff Grigg</dc:creator>
		<pubDate>Fri, 19 Mar 2010 12:33:06 +0000</pubDate>
		<guid isPermaLink="false">http://tech.puredanger.com/2008/11/26/final-java/#comment-187903</guid>
		<description>Yes, as the article the previous poster referenced (http://www.ibm.com/developerworks/java/library/j-jtp1029.html) says, &quot;final&quot; is useless as a performance improvement technique:  The compiler can&#039;t use it, and the JIT runtime optimizer doesn&#039;t need it.  The runtime JIT will routinely inline non-final methods that don&#039;t happen to be overridden by currently loaded sublcasses.  And it&#039;s smart enough to undo the inlining if a newly loaded subclass does override the method.  So final is useless as a performance optimization technique.</description>
		<content:encoded><![CDATA[<p>Yes, as the article the previous poster referenced (<a href="http://www.ibm.com/developerworks/java/library/j-jtp1029.html" rel="nofollow">http://www.ibm.com/developerworks/java/library/j-jtp1029.html</a>) says, &#8220;final&#8221; is useless as a performance improvement technique:  The compiler can&#8217;t use it, and the JIT runtime optimizer doesn&#8217;t need it.  The runtime JIT will routinely inline non-final methods that don&#8217;t happen to be overridden by currently loaded sublcasses.  And it&#8217;s smart enough to undo the inlining if a newly loaded subclass does override the method.  So final is useless as a performance optimization technique.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Anonymous</title>
		<link>http://tech.puredanger.com/2008/11/26/final-java/comment-page-1/#comment-113810</link>
		<dc:creator>Anonymous</dc:creator>
		<pubDate>Sat, 29 Nov 2008 01:44:48 +0000</pubDate>
		<guid isPermaLink="false">http://tech.puredanger.com/2008/11/26/final-java/#comment-113810</guid>
		<description>FYI, a complete discussion on the topic: http://www.ibm.com/developerworks/java/library/j-jtp1029.html</description>
		<content:encoded><![CDATA[<p>FYI, a complete discussion on the topic: <a href="http://www.ibm.com/developerworks/java/library/j-jtp1029.html" rel="nofollow">http://www.ibm.com/developerworks/java/library/j-jtp1029.html</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Buddy Casino</title>
		<link>http://tech.puredanger.com/2008/11/26/final-java/comment-page-1/#comment-113194</link>
		<dc:creator>Buddy Casino</dc:creator>
		<pubDate>Thu, 27 Nov 2008 09:23:30 +0000</pubDate>
		<guid isPermaLink="false">http://tech.puredanger.com/2008/11/26/final-java/#comment-113194</guid>
		<description>I like final method parameters in larger methods, especially for primitive types. That way, I don&#039;t have to scan the whole method body for parameter modification and can just safely assume that I get what I think I get.

I agree with the rest, though.</description>
		<content:encoded><![CDATA[<p>I like final method parameters in larger methods, especially for primitive types. That way, I don&#8217;t have to scan the whole method body for parameter modification and can just safely assume that I get what I think I get.</p>
<p>I agree with the rest, though.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Paul Holser</title>
		<link>http://tech.puredanger.com/2008/11/26/final-java/comment-page-1/#comment-113025</link>
		<dc:creator>Paul Holser</dc:creator>
		<pubDate>Thu, 27 Nov 2008 02:24:51 +0000</pubDate>
		<guid isPermaLink="false">http://tech.puredanger.com/2008/11/26/final-java/#comment-113025</guid>
		<description>&lt;a href=&quot;http://cleveralias.blogs.com/thought_spearmints/2006/11/java_final_in_a.html&quot; rel=&quot;nofollow&quot;&gt;Right on&lt;/a&gt;.</description>
		<content:encoded><![CDATA[<p><a href="http://cleveralias.blogs.com/thought_spearmints/2006/11/java_final_in_a.html" rel="nofollow">Right on</a>.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Alex</title>
		<link>http://tech.puredanger.com/2008/11/26/final-java/comment-page-1/#comment-112938</link>
		<dc:creator>Alex</dc:creator>
		<pubDate>Wed, 26 Nov 2008 21:24:20 +0000</pubDate>
		<guid isPermaLink="false">http://tech.puredanger.com/2008/11/26/final-java/#comment-112938</guid>
		<description>@Casper: I didn&#039;t comment as any performance tip like this has a half life of about 6 months.  I&#039;d love to see a program that could actually detect a difference in performance between a final and non-final method. :)  Worrying about that is a waste of time...

I agree that it would be good to have more official options regardng &quot;effectively immutable&quot; objects.  This comes up occasionally on the Java Memory Model and concurrency mailing lists.  See here for example: &lt;a href=&quot;http://artisans-serverintellect-com.si-eioswww6.com/default.asp?W151&quot; rel=&quot;nofollow&quot;&gt;Documenting Effective Immutability&lt;/a&gt;.  It does seem like something that JSR 305 could define and that tools like FindBugs could verify.</description>
		<content:encoded><![CDATA[<p>@Casper: I didn&#8217;t comment as any performance tip like this has a half life of about 6 months.  I&#8217;d love to see a program that could actually detect a difference in performance between a final and non-final method. :)  Worrying about that is a waste of time&#8230;</p>
<p>I agree that it would be good to have more official options regardng &#8220;effectively immutable&#8221; objects.  This comes up occasionally on the Java Memory Model and concurrency mailing lists.  See here for example: <a href="http://artisans-serverintellect-com.si-eioswww6.com/default.asp?W151" rel="nofollow">Documenting Effective Immutability</a>.  It does seem like something that JSR 305 could define and that tools like FindBugs could verify.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

