<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Frank's Java Development Blog</title>
	
	<link>http://javablog.franksalinas.net</link>
	<description>Java Enterprise Development &amp; Technology</description>
	<lastBuildDate>Sat, 26 Feb 2011 20:59:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/FranksJavaBlog" /><feedburner:info uri="franksjavablog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license><image><link>http://creativecommons.org/licenses/by-sa/3.0/</link><url>http://creativecommons.org/images/public/somerights20.gif</url><title>Some Rights Reserved</title></image><feedburner:emailServiceId>FranksJavaBlog</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Java’s Future Exist in the Enterprise</title>
		<link>http://feedproxy.google.com/~r/FranksJavaBlog/~3/pBh6aZCkWX4/</link>
		<comments>http://javablog.franksalinas.net/2011/01/28/javas-future-exist-in-the-enterprise/#comments</comments>
		<pubDate>Fri, 28 Jan 2011 15:40:32 +0000</pubDate>
		<dc:creator>Frank Salinas</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[JEE]]></category>
		<category><![CDATA[Assembler]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[COBAL]]></category>

		<guid isPermaLink="false">http://javablog.franksalinas.net/?p=1001</guid>
		<description><![CDATA[This comes as no surprise to me as in my opinion the primary strength of Java lies with it&#8217;s enterprise abilities. Forrester&#8217;s authors say that its report, &#8220;The Future of Java,&#8221; is not a Java obituary. Java is still dominant in the enterprise but no programming language has retained a central position through multiple platform [...]
No related posts.]]></description>
			<content:encoded><![CDATA[<p>This comes as no surprise to me as in my opinion the primary strength of Java lies with it&#8217;s enterprise abilities.</p>
<blockquote><p>Forrester&#8217;s authors say that its report, &#8220;The Future of Java,&#8221; is not a Java obituary. Java is still dominant in the enterprise but no programming language has retained a central position through multiple platform changes. Java will evolve just as Assembler, C and COBOL did. More so, the core message here is for application developers and how applications are distributed.</p>
<p>&#8230;</p>
<p>Oracle controls the future of Java but its road map has been accepted and that means no major disruptions for enterprise customers. But it&#8217;s clear that Java is no longer the center for technology innovation. The innovation is now on the platforms and with Ruby and open environments such as HTML 5.</p></blockquote>
<p>via <a href="http://www.readwriteweb.com/enterprise/2011/01/why-the-future-of-java-is-with.php">Why The Future of Java is with Large Customers, not Innovative, Young Developers</a>.</p>
<p>No related posts.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/016y7LCCgNvDs1qoJKmVQaRKUxg/0/da"><img src="http://feedads.g.doubleclick.net/~a/016y7LCCgNvDs1qoJKmVQaRKUxg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/016y7LCCgNvDs1qoJKmVQaRKUxg/1/da"><img src="http://feedads.g.doubleclick.net/~a/016y7LCCgNvDs1qoJKmVQaRKUxg/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=pBh6aZCkWX4:PIyjEUhmj1E:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=pBh6aZCkWX4:PIyjEUhmj1E:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=pBh6aZCkWX4:PIyjEUhmj1E:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=pBh6aZCkWX4:PIyjEUhmj1E:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=pBh6aZCkWX4:PIyjEUhmj1E:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=pBh6aZCkWX4:PIyjEUhmj1E:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=pBh6aZCkWX4:PIyjEUhmj1E:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=pBh6aZCkWX4:PIyjEUhmj1E:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=pBh6aZCkWX4:PIyjEUhmj1E:-BTjWOF_DHI"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=pBh6aZCkWX4:PIyjEUhmj1E:-BTjWOF_DHI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=pBh6aZCkWX4:PIyjEUhmj1E:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=pBh6aZCkWX4:PIyjEUhmj1E:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/FranksJavaBlog/~4/pBh6aZCkWX4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://javablog.franksalinas.net/2011/01/28/javas-future-exist-in-the-enterprise/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://javablog.franksalinas.net/2011/01/28/javas-future-exist-in-the-enterprise/</feedburner:origLink></item>
		<item>
		<title>Is Java Losing Appeal?</title>
		<link>http://feedproxy.google.com/~r/FranksJavaBlog/~3/01MVZ0wSqe0/</link>
		<comments>http://javablog.franksalinas.net/2010/10/18/is-java-losing-appeal/#comments</comments>
		<pubDate>Tue, 19 Oct 2010 04:58:40 +0000</pubDate>
		<dc:creator>Frank Salinas</dc:creator>
				<category><![CDATA[Career]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JEE]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[JRuby]]></category>
		<category><![CDATA[JVM]]></category>
		<category><![CDATA[Jython]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://javablog.franksalinas.net/?p=927</guid>
		<description><![CDATA[Is Java on it's way to being phased out by newer JVM languages?
No related posts.]]></description>
			<content:encoded><![CDATA[<blockquote><p>My theory goes like this: Good java developers are hard to find because fewer and fewer of them are being created. New developers are not choosing java to “cut their teeth” on. And I suspect that coming from whatever they are coming from, java doesn’t look appealing.</p></blockquote>
<p>via <a href="http://goodgroovy.wordpress.com/2010/10/14/i-think-i-figured-out-why-good-java-developers-are-so-hard-to-find/">I think I figured out why good Java developers are so hard to find « I love groovy</a>.</p>
<p>The excerpt above came from a <a href="http://goodgroovy.wordpress.com/2010/10/14/i-think-i-figured-out-why-good-java-developers-are-so-hard-to-find/" target="_blank">blog post</a> I read this morning. It made me ask the question: Is Java on it&#8217;s way to being phased out by newer JVM languages? <span id="more-927"></span>Judging by some of the comments to this article at least a few believe so. But which JVM language has the potential to replace it? I found this article: <a href="http://www.jroller.com/scolebourne/entry/the_next_big_jvm_language1">The Next Big JVM Language </a>which evaluates a few contenders.</p>
<p>Java is not sexy to the next generation of developers. The language is considered old, bloated, overly complex and has more than a few legacy quirks which fuel many language debates. Scala, Jython/Python, JRuby/Ruby and Groovy all seem to be popular alternatives.</p>
<blockquote cite="#commentbody-71"><p><strong><a href="#comment-71">headpower</a> :</strong></p>
<p>I’m a 15 year old person studying to become a developer (mostly in my free time), and I can tell you that Java is not something I would ever consider. I consider myself to “know” Python and [Objective-]C, but, Java isn’t even on my radar. I know some people my age who would use Java, but to me it just seems outdated and bloated to most of us, I think.</p>
<p>Since I guess I’m the “next generation”, it doesn’t seem that your situation is going to get any better…</p></blockquote>
<p>According to these sources:  <a href="http://www.numberof.net/number-of-java-developers/" target="_blank">http://www.numberof.net/number-of-java-developers/</a> and<a href="http://jaxenter.com/how-many-java-developers-are-there-10462.html" target="_blank"> http://jaxenter.com/how-many-java-developers-are-there-10462.html</a> there are 9,007,346 Java developers world-wide. That&#8217;s a very large and active user base. While it seems that Java may not be the choice of the next-generation of developers it is still the primary language for over 9 million developers.</p>
<p>No related posts.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/b5uE4rBNLu5E7Wg5E68O7r2SVw4/0/da"><img src="http://feedads.g.doubleclick.net/~a/b5uE4rBNLu5E7Wg5E68O7r2SVw4/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/b5uE4rBNLu5E7Wg5E68O7r2SVw4/1/da"><img src="http://feedads.g.doubleclick.net/~a/b5uE4rBNLu5E7Wg5E68O7r2SVw4/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=01MVZ0wSqe0:Q7jUp3gXRuA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=01MVZ0wSqe0:Q7jUp3gXRuA:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=01MVZ0wSqe0:Q7jUp3gXRuA:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=01MVZ0wSqe0:Q7jUp3gXRuA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=01MVZ0wSqe0:Q7jUp3gXRuA:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=01MVZ0wSqe0:Q7jUp3gXRuA:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=01MVZ0wSqe0:Q7jUp3gXRuA:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=01MVZ0wSqe0:Q7jUp3gXRuA:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=01MVZ0wSqe0:Q7jUp3gXRuA:-BTjWOF_DHI"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=01MVZ0wSqe0:Q7jUp3gXRuA:-BTjWOF_DHI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=01MVZ0wSqe0:Q7jUp3gXRuA:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=01MVZ0wSqe0:Q7jUp3gXRuA:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/FranksJavaBlog/~4/01MVZ0wSqe0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://javablog.franksalinas.net/2010/10/18/is-java-losing-appeal/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://javablog.franksalinas.net/2010/10/18/is-java-losing-appeal/</feedburner:origLink></item>
		<item>
		<title>GreenHopper: Agile Project Management for JIRA</title>
		<link>http://feedproxy.google.com/~r/FranksJavaBlog/~3/EszSzzZJNUQ/</link>
		<comments>http://javablog.franksalinas.net/2010/07/17/greenhopper-agile-project-management-for-jira/#comments</comments>
		<pubDate>Sat, 17 Jul 2010 14:46:57 +0000</pubDate>
		<dc:creator>Frank Salinas</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[GreenHopper]]></category>
		<category><![CDATA[JIRA]]></category>

		<guid isPermaLink="false">http://javablog.franksalinas.net/?p=917</guid>
		<description><![CDATA[This looks like a truly useful project management tool for JIRA. Check it out at: http://www.atlassian.com/software/greenhopper/ No related posts.
No related posts.]]></description>
			<content:encoded><![CDATA[<p>This looks like a truly useful project management tool for JIRA. Check it out at: <a href="http://www.atlassian.com/software/greenhopper/">http://www.atlassian.com/software/greenhopper/</a></p>
<p>No related posts.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/j4qGO2tdeSEOK0PY1b7hn-wP7XM/0/da"><img src="http://feedads.g.doubleclick.net/~a/j4qGO2tdeSEOK0PY1b7hn-wP7XM/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/j4qGO2tdeSEOK0PY1b7hn-wP7XM/1/da"><img src="http://feedads.g.doubleclick.net/~a/j4qGO2tdeSEOK0PY1b7hn-wP7XM/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=EszSzzZJNUQ:8aHgfm8R2ts:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=EszSzzZJNUQ:8aHgfm8R2ts:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=EszSzzZJNUQ:8aHgfm8R2ts:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=EszSzzZJNUQ:8aHgfm8R2ts:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=EszSzzZJNUQ:8aHgfm8R2ts:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=EszSzzZJNUQ:8aHgfm8R2ts:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=EszSzzZJNUQ:8aHgfm8R2ts:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=EszSzzZJNUQ:8aHgfm8R2ts:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=EszSzzZJNUQ:8aHgfm8R2ts:-BTjWOF_DHI"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=EszSzzZJNUQ:8aHgfm8R2ts:-BTjWOF_DHI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=EszSzzZJNUQ:8aHgfm8R2ts:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=EszSzzZJNUQ:8aHgfm8R2ts:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/FranksJavaBlog/~4/EszSzzZJNUQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://javablog.franksalinas.net/2010/07/17/greenhopper-agile-project-management-for-jira/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://javablog.franksalinas.net/2010/07/17/greenhopper-agile-project-management-for-jira/</feedburner:origLink></item>
		<item>
		<title>JavaOne and Oracle Develop 2010</title>
		<link>http://feedproxy.google.com/~r/FranksJavaBlog/~3/FMQ-_p-PE10/</link>
		<comments>http://javablog.franksalinas.net/2010/07/15/oracle-openworld-2010-registration/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 16:53:27 +0000</pubDate>
		<dc:creator>Frank Salinas</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[JEE]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Training]]></category>

		<guid isPermaLink="false">http://javablog.franksalinas.net/?p=912</guid>
		<description><![CDATA[Tomorrow is the last day for early-bird registration discounts. JavaOne and Oracle Develop 2010 No related posts.
No related posts.]]></description>
			<content:encoded><![CDATA[<p>Tomorrow is the last day for early-bird registration discounts.</p>
<p><a title="JavaOne and Oracle Develop 2010" href="http://www.oracle.com/us/javaonedevelop/index.html">JavaOne and Oracle Develop 2010</a></p>
<p>No related posts.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/UMsqXhNJGGJ7zgJSobxkKPThDOc/0/da"><img src="http://feedads.g.doubleclick.net/~a/UMsqXhNJGGJ7zgJSobxkKPThDOc/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/UMsqXhNJGGJ7zgJSobxkKPThDOc/1/da"><img src="http://feedads.g.doubleclick.net/~a/UMsqXhNJGGJ7zgJSobxkKPThDOc/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=FMQ-_p-PE10:6U8AELRdGDM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=FMQ-_p-PE10:6U8AELRdGDM:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=FMQ-_p-PE10:6U8AELRdGDM:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=FMQ-_p-PE10:6U8AELRdGDM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=FMQ-_p-PE10:6U8AELRdGDM:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=FMQ-_p-PE10:6U8AELRdGDM:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=FMQ-_p-PE10:6U8AELRdGDM:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=FMQ-_p-PE10:6U8AELRdGDM:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=FMQ-_p-PE10:6U8AELRdGDM:-BTjWOF_DHI"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=FMQ-_p-PE10:6U8AELRdGDM:-BTjWOF_DHI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=FMQ-_p-PE10:6U8AELRdGDM:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=FMQ-_p-PE10:6U8AELRdGDM:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/FranksJavaBlog/~4/FMQ-_p-PE10" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://javablog.franksalinas.net/2010/07/15/oracle-openworld-2010-registration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://javablog.franksalinas.net/2010/07/15/oracle-openworld-2010-registration/</feedburner:origLink></item>
		<item>
		<title>Best Practices: Avoid Returning Null</title>
		<link>http://feedproxy.google.com/~r/FranksJavaBlog/~3/HXYpMeDGb1o/</link>
		<comments>http://javablog.franksalinas.net/2010/06/09/avoid-returning-null/#comments</comments>
		<pubDate>Thu, 10 Jun 2010 03:36:59 +0000</pubDate>
		<dc:creator>Frank Salinas</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Collections]]></category>
		<category><![CDATA[Null]]></category>
		<category><![CDATA[NullPointerException]]></category>
		<category><![CDATA[RuntimeException]]></category>

		<guid isPermaLink="false">http://javablog.franksalinas.net/?p=836</guid>
		<description><![CDATA[A few simple tips to avoid generating NullPointerException in your code.
No related posts.]]></description>
			<content:encoded><![CDATA[<p>I recall the first oddity that struck me about Java programming is that it seems common practice to test returned objects for <code>null</code>. I find it frustrating and inefficient to scatter if conditions throughout my code just to see if I have a valid object instance returned. <span id="more-836"></span></p>
<p>Receiving null is confusing. When you make a function call and the result is null what does it mean? Was the data not found? Was there an exception in the function that was silently swallowed resulting in the return of a null object? You&#8217;re not really sure if null is an expected return value. If no exception is thrown then you just kind of assume that null is a valid return value. However, you can&#8217;t really do anything with the returned null object so what do you do now?</p>
<p>Here are a couple of alternatives to returning null:</p>
<h2>Use the Empty Collection Methods</h2>
<p>If you are working with returning collection objects from your function you should return an empty collection rather than a null object. This is very easy to do with the Collections class. There are three static methods available:</p>
<ul>
<li>Collections.emptyList()</li>
<li>Collections.emptySet()</li>
<li>Collections.emptyMap()</li>
</ul>
<p>An empty List is easily instantiated for return as shown here:</p>
<pre class="brush:java; smart-tabs:true; wrap-lines:false">   List&lt;String&gt; myList = Collections.emptyList();</pre>
<p>Returning an empty List eliminates the required check for null by the function caller. Now instead of having code which looks like this:</p>
<pre class="brush:java; smart-tabs:true; wrap-lines:false">   List&lt;String&gt; names = getNames();
   if(names != null) {
      for(String name : names) {
         System.out.println(name);
      }
   }</pre>
<p>You can simply write the following without worrying about a NullPointerException:</p>
<pre class="brush:java; smart-tabs:true; wrap-lines:false">   List&lt;String&gt; names = getNames();
   for(String name : names) {
      System.out.println(name);
   }</pre>
<p>This second example is much cleaner, easier to read and understand. Returning empty Collections is much safer as well since it avoids the potential run time exception: NullPointerException.</p>
<p>An unchecked exception represent defects in the program (bugs) - often invalid arguments passed to a non-private method. To quote from <em>The Java Programming Language</em>, by Gosling, Arnold, and Holmes : &#8220;Unchecked runtime exceptions represent conditions that, generally speaking, reflect errors in your program&#8217;s logic and cannot be reasonably recovered from at run time.&#8221; <a href="#citation">[1]</a></p>
<p>Certainly an empty collection is not a bug! So lets just return an empty collection rather than a null reference. In addition, testing for an empty collection is a lot more intuitive than testing for null.</p>
<pre class="brush:java; smart-tabs:true; wrap-lines:false">   List&lt;String&gt; names = getNames();
   if(names.isEmpty()) {
      //throw an Exception
      //or do something else
      //or do nothing at all

   }</pre>
<h2>Throw an Exception</h2>
<p>It&#8217;s perfectly acceptable to throw a custom checked exception alerting the calling client that the requested object cannot be populated or retrieved. This approach is much more revealing and forces the calling client to handle the potential problem. It also eliminates the need to check the returned object for null.</p>
<p>A checked exception is guaranteed to be handled so you gain more control over your program. A RuntimeException may or may not be handled by the caller and will bubble up until either it is caught or reaches the top of the caller chain.</p>
<h2>Conclusion</h2>
<p>Nulls are useful under certain conditions when null values are expected. However, for the above conditions with collections and data retrieval I feel it has been abused. Use the empty collection and avoid returning null objects whenever possible. It will make code cleaner, easier to read and debug.</p>
<hr />
<h4 id="citation">Citations:</h4>
<p>1. &#8220;checked versus uncheck exceptions&#8221; J<span style="text-decoration: underline;">avaPractices.com</span>. 2010 Hirondelle Systems. 6 June 2010 &lt;<a href="http://www.javapractices.com/topic/TopicAction.do?Id=129" target="_blank">http://www.javapractices.com/topic/TopicAction.do?Id=129</a>&gt;</p>
<hr />
<p>No related posts.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/dS3wT_ZcoKwr_zbWUSRaTSRXVKM/0/da"><img src="http://feedads.g.doubleclick.net/~a/dS3wT_ZcoKwr_zbWUSRaTSRXVKM/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/dS3wT_ZcoKwr_zbWUSRaTSRXVKM/1/da"><img src="http://feedads.g.doubleclick.net/~a/dS3wT_ZcoKwr_zbWUSRaTSRXVKM/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=HXYpMeDGb1o:x9z7hKYeQ-E:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=HXYpMeDGb1o:x9z7hKYeQ-E:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=HXYpMeDGb1o:x9z7hKYeQ-E:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=HXYpMeDGb1o:x9z7hKYeQ-E:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=HXYpMeDGb1o:x9z7hKYeQ-E:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=HXYpMeDGb1o:x9z7hKYeQ-E:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=HXYpMeDGb1o:x9z7hKYeQ-E:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=HXYpMeDGb1o:x9z7hKYeQ-E:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=HXYpMeDGb1o:x9z7hKYeQ-E:-BTjWOF_DHI"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=HXYpMeDGb1o:x9z7hKYeQ-E:-BTjWOF_DHI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=HXYpMeDGb1o:x9z7hKYeQ-E:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=HXYpMeDGb1o:x9z7hKYeQ-E:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/FranksJavaBlog/~4/HXYpMeDGb1o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://javablog.franksalinas.net/2010/06/09/avoid-returning-null/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://javablog.franksalinas.net/2010/06/09/avoid-returning-null/</feedburner:origLink></item>
		<item>
		<title>Poll: Which MVC Framework Do You Use?</title>
		<link>http://feedproxy.google.com/~r/FranksJavaBlog/~3/odz0JxMA69I/</link>
		<comments>http://javablog.franksalinas.net/2010/04/30/poll-which-mvc-framework-do-you-use/#comments</comments>
		<pubDate>Fri, 30 Apr 2010 17:14:38 +0000</pubDate>
		<dc:creator>Frank Salinas</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[JEE]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[JSF]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[Struts]]></category>
		<category><![CDATA[Struts 2]]></category>

		<guid isPermaLink="false">http://javablog.franksalinas.net/?p=815</guid>
		<description><![CDATA[A short poll on Java MVC frameworks and JSF components.
No related posts.]]></description>
			<content:encoded><![CDATA[<p>At work we&#8217;re looking into swapping out Struts with a different MVC framework. I&#8217;m curious as to which frameworks are most in use today. Please complete the poll below and feel free to post comments/recommendations on the subject. Share the link and spread the word, the more data received the better!<br />
<span id="more-815"></span></p>
<a href="http://polldaddy.com/poll/3133860">Take Our Poll</a>
<p>No related posts.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/dsqtzpTW_4IQhMmw-Q5LJIYckrA/0/da"><img src="http://feedads.g.doubleclick.net/~a/dsqtzpTW_4IQhMmw-Q5LJIYckrA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/dsqtzpTW_4IQhMmw-Q5LJIYckrA/1/da"><img src="http://feedads.g.doubleclick.net/~a/dsqtzpTW_4IQhMmw-Q5LJIYckrA/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=odz0JxMA69I:iF01vdMM_Ms:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=odz0JxMA69I:iF01vdMM_Ms:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=odz0JxMA69I:iF01vdMM_Ms:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=odz0JxMA69I:iF01vdMM_Ms:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=odz0JxMA69I:iF01vdMM_Ms:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=odz0JxMA69I:iF01vdMM_Ms:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=odz0JxMA69I:iF01vdMM_Ms:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=odz0JxMA69I:iF01vdMM_Ms:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=odz0JxMA69I:iF01vdMM_Ms:-BTjWOF_DHI"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=odz0JxMA69I:iF01vdMM_Ms:-BTjWOF_DHI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=odz0JxMA69I:iF01vdMM_Ms:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=odz0JxMA69I:iF01vdMM_Ms:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/FranksJavaBlog/~4/odz0JxMA69I" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://javablog.franksalinas.net/2010/04/30/poll-which-mvc-framework-do-you-use/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://javablog.franksalinas.net/2010/04/30/poll-which-mvc-framework-do-you-use/</feedburner:origLink></item>
		<item>
		<title>Java Web Services: Getting Started</title>
		<link>http://feedproxy.google.com/~r/FranksJavaBlog/~3/6T_U9vYVxpg/</link>
		<comments>http://javablog.franksalinas.net/2010/03/09/java-web-services-getting-started/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 04:49:22 +0000</pubDate>
		<dc:creator>Frank Salinas</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[JBoss]]></category>
		<category><![CDATA[JEE]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[EJB]]></category>
		<category><![CDATA[JAX-RPC]]></category>
		<category><![CDATA[JAX-WS]]></category>
		<category><![CDATA[POJO]]></category>
		<category><![CDATA[Servlet]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Web Services]]></category>
		<category><![CDATA[WSDL]]></category>

		<guid isPermaLink="false">http://javablog.franksalinas.net/?p=640</guid>
		<description><![CDATA[A short tutorial on getting started with Java Web Services (JWS) using the JAX-WS API. Sample code is provided along with step-by-step instructions.
Related posts:<ol>
<li><a href='http://javablog.franksalinas.net/2008/10/29/web-services-on-jboss/' rel='bookmark' title='Web Services on JBoss'>Web Services on JBoss</a> <small>I&#8217;ve been working on a project which requires developing some...</small></li>
<li><a href='http://javablog.franksalinas.net/2009/03/01/the-ejb-specification-concurrency-and-batch-processing/' rel='bookmark' title='The EJB Specification, Concurrency, and Batch Processing'>The EJB Specification, Concurrency, and Batch Processing</a> <small>The EJB specification does not leave much room for implementing...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>When it came time for me to tackle my first web service implementation I ran into a lot of problems. Here I will write a series of articles to address the questions and problems I encountered in hopes of helping you get started in developing web services faster than I did. The following example will show you how to create a web service using JAX-WS and packaged as a servlet.<span id="more-640"></span></p>
<h4>A Simple Service</h4>
<p>To start out you <span style="text-decoration: underline;">should</span> create an interface defining your business methods. I will keep the implementation extremely simple so we can focus on the details of web services. Here&#8217;s our interface named <code>SimpleServiceWS</code></p>
<pre class="brush:java; smart-tabs:true; wrap-lines:false">public interface SimpleServiceWS {

	public String simpleMethod();

}</pre>
<p>The next step is to create a plain java class (POJO) which implements this interface. I&#8217;ll name it <code>SimpleServiceImpl</code></p>
<pre class="brush:java; smart-tabs:true; wrap-lines:false">public class SimpleServiceImpl implements SimpleServiceWS {

	public String simpleMethod() {
		return "Simple response";
	}

}</pre>
<p><em><span style="color: #808080;"><span style="color: #000000;">Please note that it is not required to create and implement an interface and almost every web service example I found did not do so. I feel it is good practice and consistent with Java programming practices to program against interfaces.</span></span></em></p>
<p>What we have so far is just a plain Java class (POJO) that returns a simple string. Now we have to decorate our class with some annotations to make it behave as a web services.</p>
<pre class="brush:java; smart-tabs:true; wrap-lines:false">import javax.jws.WebService;

@WebService(
		serviceName="SimpleService",
		portName="SimpleServicePort",
		endpointInterface="net.franksalinas.javablog.SimpleServiceWS")
public class SimpleServiceImpl implements SimpleServiceWS {

	public String simpleMethod() {
		return "Simple response";
	}

}</pre>
<p>I added the <code>@WebService</code> annotation and supplied some values to the annotation attributes. You can simply add the <code>@WebService</code> annotation without specifying any of the attributes and they will pick up default values based on the class and package names. However, there is one exception. If you choose to define and implement an interface you must do two things:</p>
<ol>
<li>You must decorate the interface with the <code>@WebService</code> annotation.</li>
<li>You must also supply the <code>endpointInterface</code> annotation attribute with the fully qualified name of the interface in the implementation class.</li>
</ol>
<pre class="brush:java; smart-tabs:true; wrap-lines:false">import javax.jws.WebService;

@WebService()
public interface SimpleServiceWS {

	public String simpleMethod();

}</pre>
<p>As far as code goes this is all there is to it. The remaing steps describe how to package and deploy these objects.</p>
<h4>Package and Deploy</h4>
<p>As I mentioned above we will package and deploy these classes as a servlet implementation. I am most familiar with JBoss so that is the application server I will use but any servlet container should work fine.</p>
<p>Create a new xml file named <code>web.xml</code> and define the servlet mappings for the <code>SimpleServiceImpl</code> class as shown here.</p>
<pre class="brush:xml; smart-tabs:true; wrap-lines:false">&lt;?xml version="&gt;&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE web-app PUBLIC
	"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
	"http://java.sun.com/dtd/web-app_2_3.dtd"&gt;
&lt;web-app&gt;
	&lt;servlet&gt;
		&lt;servlet-name&gt;SimpleServiceWS&lt;/servlet-name&gt;
		&lt;servlet-class&gt;net.franksalinas.javablog.SimpleServiceImpl&lt;/servlet-class&gt;
	&lt;/servlet&gt;

	&lt;servlet-mapping&gt;
		&lt;servlet-name&gt;SimpleServiceWS&lt;/servlet-name&gt;
		&lt;url-pattern&gt;/SimpleService&lt;/url-pattern&gt;
	&lt;/servlet-mapping&gt;
&lt;/web-app&gt;</pre>
<p>Now create a <code>WEB-INF</code> directory and place this file there. Compile your Java files and place them in a folder named <code>classes</code>. Create a folder named <code>dist</code>. Copy the <code>WEB-INF</code> and <code>classes</code> directory to this new folder. Now create a JAR file named <code>SimpleService.war</code> containing the contents of <code>dist</code> directory. (Visit <a title="Sun WAR File Format (Wikipedia)" href="http://en.wikipedia.org/wiki/Sun_WAR_(file_format)" target="_blank">http://en.wikipedia.org/wiki/Sun_WAR_(file_format)</a> for more info on the WAR file structure.)</p>
<p>You should now have a WAR file with the following structure:</p>
<pre class="brush:xml; smart-tabs:true; wrap-lines:false">META-INF/
META-INF/MANIFEST.MF
WEB-INF/
WEB-INF/web.xml
classes/
classes/net/
classes/net/franksalinas/
classes/net/franksalinas/javablog/
classes/net/franksalinas/javablog/SimpleServiceImpl.class
classes/net/franksalinas/javablog/SimpleServiceWS.class</pre>
<p>Now you can copy this <code>SimpleService.war</code> file to your application server&#8217;s deployment directory <em>(&lt;jboss_home&gt;/server/default/deploy</em>) and start the server. Your web service will be deployed. On JBoss you can see the deployment and access the WSDL for the service at url http://127.0.0.1:8080/SimpleService/SimpleService?wsdl</p>
<p>That&#8217;s all there is to it!</p>
<p><em>Note that we did not implement the <code>javax.servlet.http.HttpServlet</code> interface in the service class. It is not required but may be considered good practice to do so depdending on your implementation.</em></p>
<h4>Summary</h4>
<p>In this example we created a simple web service using JAX-WS and packaged and deployed the implementation as a servlet configuration. We learned that web services are nothing more than plain old Java objects (POJOs) that are decorated with a few simple annotations and that servlet configurations do not require the web service class to implement the <code>javax.servlet.http.HttpServlet</code> interface. We covered packaging the code as a WAR file and deploying on the JBoss application server.</p>
<p>This is a very simple example and there&#8217;s a lot more material to cover. I hope you found this posting informative and helpful. You can download all the source code for this example here: <a href="http://javablog.franksalinas.net/wp-content/uploads/2010/02/SimpleService.zip">SimpleService.zip</a>.</p>
<p><a title="Sun WAR File Format (Wikipedia)" href="http://en.wikipedia.org/wiki/Sun_WAR_(file_format)" target="_blank"></a></p>
<p>Related posts:<ol>
<li><a href='http://javablog.franksalinas.net/2008/10/29/web-services-on-jboss/' rel='bookmark' title='Web Services on JBoss'>Web Services on JBoss</a> <small>I&#8217;ve been working on a project which requires developing some...</small></li>
<li><a href='http://javablog.franksalinas.net/2009/03/01/the-ejb-specification-concurrency-and-batch-processing/' rel='bookmark' title='The EJB Specification, Concurrency, and Batch Processing'>The EJB Specification, Concurrency, and Batch Processing</a> <small>The EJB specification does not leave much room for implementing...</small></li>
</ol></p>
<p><a href="http://feedads.g.doubleclick.net/~a/Xue6OJz8G1O6EWzT4ImHKhQxhTs/0/da"><img src="http://feedads.g.doubleclick.net/~a/Xue6OJz8G1O6EWzT4ImHKhQxhTs/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Xue6OJz8G1O6EWzT4ImHKhQxhTs/1/da"><img src="http://feedads.g.doubleclick.net/~a/Xue6OJz8G1O6EWzT4ImHKhQxhTs/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=6T_U9vYVxpg:0chfFAlsdYY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=6T_U9vYVxpg:0chfFAlsdYY:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=6T_U9vYVxpg:0chfFAlsdYY:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=6T_U9vYVxpg:0chfFAlsdYY:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=6T_U9vYVxpg:0chfFAlsdYY:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=6T_U9vYVxpg:0chfFAlsdYY:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=6T_U9vYVxpg:0chfFAlsdYY:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=6T_U9vYVxpg:0chfFAlsdYY:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=6T_U9vYVxpg:0chfFAlsdYY:-BTjWOF_DHI"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=6T_U9vYVxpg:0chfFAlsdYY:-BTjWOF_DHI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=6T_U9vYVxpg:0chfFAlsdYY:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=6T_U9vYVxpg:0chfFAlsdYY:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/FranksJavaBlog/~4/6T_U9vYVxpg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://javablog.franksalinas.net/2010/03/09/java-web-services-getting-started/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://javablog.franksalinas.net/2010/03/09/java-web-services-getting-started/</feedburner:origLink></item>
		<item>
		<title>Java tip: How to read files quickly | Nadeau Software</title>
		<link>http://feedproxy.google.com/~r/FranksJavaBlog/~3/J67e-sZgyjA/</link>
		<comments>http://javablog.franksalinas.net/2009/11/25/java-tip-how-to-read-files-quickly-nadeau-software/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 20:10:06 +0000</pubDate>
		<dc:creator>Frank Salinas</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[BufferedInputStream]]></category>
		<category><![CDATA[FileChannel]]></category>
		<category><![CDATA[FileInputStream]]></category>
		<category><![CDATA[I/O]]></category>
		<category><![CDATA[Performance]]></category>

		<guid isPermaLink="false">http://javablog.franksalinas.net/2009/11/25/java-tip-how-to-read-files-quickly-nadeau-software/</guid>
		<description><![CDATA[Here’s a good article comparing the performance of various File I/O implementations.&#160; I was particularly interested in the performance difference between the BufferedInputStream and the FileChannel. Java tip: How to read files quickly &#124; Nadeau Software No related posts.
No related posts.]]></description>
			<content:encoded><![CDATA[<p>Here’s a good article comparing the performance of various File I/O implementations.&#160; I was particularly interested in the performance difference between the BufferedInputStream and the FileChannel. </p>
<p><a href="http://nadeausoftware.com/articles/2008/02/java_tip_how_read_files_quickly#BufferedInputStreamwithbytearrayreads" title="Java tip: How to read files quickly | Nadeau Software">Java tip: How to read files quickly | Nadeau Software</a></p>
<p>No related posts.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/2HP5LMZQX12aWf2n-FHmY97mR6c/0/da"><img src="http://feedads.g.doubleclick.net/~a/2HP5LMZQX12aWf2n-FHmY97mR6c/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/2HP5LMZQX12aWf2n-FHmY97mR6c/1/da"><img src="http://feedads.g.doubleclick.net/~a/2HP5LMZQX12aWf2n-FHmY97mR6c/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=J67e-sZgyjA:QT60yTrxnPs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=J67e-sZgyjA:QT60yTrxnPs:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=J67e-sZgyjA:QT60yTrxnPs:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=J67e-sZgyjA:QT60yTrxnPs:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=J67e-sZgyjA:QT60yTrxnPs:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=J67e-sZgyjA:QT60yTrxnPs:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=J67e-sZgyjA:QT60yTrxnPs:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=J67e-sZgyjA:QT60yTrxnPs:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=J67e-sZgyjA:QT60yTrxnPs:-BTjWOF_DHI"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=J67e-sZgyjA:QT60yTrxnPs:-BTjWOF_DHI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=J67e-sZgyjA:QT60yTrxnPs:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=J67e-sZgyjA:QT60yTrxnPs:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/FranksJavaBlog/~4/J67e-sZgyjA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://javablog.franksalinas.net/2009/11/25/java-tip-how-to-read-files-quickly-nadeau-software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://javablog.franksalinas.net/2009/11/25/java-tip-how-to-read-files-quickly-nadeau-software/</feedburner:origLink></item>
		<item>
		<title>Use final</title>
		<link>http://feedproxy.google.com/~r/FranksJavaBlog/~3/_FTe08GbIqU/</link>
		<comments>http://javablog.franksalinas.net/2009/10/27/use-final-judiciously/#comments</comments>
		<pubDate>Wed, 28 Oct 2009 04:19:07 +0000</pubDate>
		<dc:creator>Frank Salinas</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Final]]></category>

		<guid isPermaLink="false">http://javablog.franksalinas.net/?p=574</guid>
		<description><![CDATA[The final keyword is one that I find is under utilized. Use final in your projects as a means of defensive programming. If you are unfamiliar with this keyword here is a great article on its usage. Renaud Waldura&#8217;s The Final Word On the final Keyword . No related posts.
No related posts.]]></description>
			<content:encoded><![CDATA[<p>The final keyword is one that I find is under utilized. Use final in your projects as a means of defensive programming. If you are unfamiliar with this keyword here is a great article on its usage.</p>
<p><a href="http://renaud.waldura.com/doc/java/final-keyword.shtml">Renaud Waldura&#8217;s The Final Word On the final Keyword </a>.</p>
<p>No related posts.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/szLpUOLKBJtji0Y_i8I5iiu7ATQ/0/da"><img src="http://feedads.g.doubleclick.net/~a/szLpUOLKBJtji0Y_i8I5iiu7ATQ/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/szLpUOLKBJtji0Y_i8I5iiu7ATQ/1/da"><img src="http://feedads.g.doubleclick.net/~a/szLpUOLKBJtji0Y_i8I5iiu7ATQ/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=_FTe08GbIqU:m3aEhmyHJR8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=_FTe08GbIqU:m3aEhmyHJR8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=_FTe08GbIqU:m3aEhmyHJR8:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=_FTe08GbIqU:m3aEhmyHJR8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=_FTe08GbIqU:m3aEhmyHJR8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=_FTe08GbIqU:m3aEhmyHJR8:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=_FTe08GbIqU:m3aEhmyHJR8:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=_FTe08GbIqU:m3aEhmyHJR8:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=_FTe08GbIqU:m3aEhmyHJR8:-BTjWOF_DHI"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=_FTe08GbIqU:m3aEhmyHJR8:-BTjWOF_DHI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=_FTe08GbIqU:m3aEhmyHJR8:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=_FTe08GbIqU:m3aEhmyHJR8:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/FranksJavaBlog/~4/_FTe08GbIqU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://javablog.franksalinas.net/2009/10/27/use-final-judiciously/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://javablog.franksalinas.net/2009/10/27/use-final-judiciously/</feedburner:origLink></item>
		<item>
		<title>EGL Community Edition 1.0</title>
		<link>http://feedproxy.google.com/~r/FranksJavaBlog/~3/bqj9Sk4Wom8/</link>
		<comments>http://javablog.franksalinas.net/2009/09/09/egl-community-edition-1-0/#comments</comments>
		<pubDate>Wed, 09 Sep 2009 21:18:40 +0000</pubDate>
		<dc:creator>Frank Salinas</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[EGL]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[IBM]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://javablog.franksalinas.net/?p=563</guid>
		<description><![CDATA[IBM releases EGL Community Edition 1.0 on September 8, 2009. EGL is a high level language designed to simplify Rich Internet Application (RIA) and Web 2.0 development. EGL is an extensible language that generates standard JavaScript and AJAX code and is not a replacement for these technologies unlike Flex and Silverlight. EGL Community Edition 1.0 is an Eclipse based tool that [...]
No related posts.]]></description>
			<content:encoded><![CDATA[<p>IBM releases EGL Community Edition 1.0 on September 8, 2009. EGL is a high level language designed to simplify Rich Internet Application (RIA) and Web 2.0 development. EGL is an extensible language that generates standard JavaScript and AJAX code and is not a replacement for these technologies unlike Flex and Silverlight.</p>
<p>EGL Community Edition 1.0 is an Eclipse based tool that is free for <a href="http://www-949.ibm.com/software/rational/cafe/community/egl/ce" target="_blank">download</a>. To learn more read the <a href="http://www-949.ibm.com/software/rational/cafe/docs/DOC-3249" target="_blank">Quick Overview</a>.</p>
<p>No related posts.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/ewnip2IHKcVMarmV1RXcaAEdT6A/0/da"><img src="http://feedads.g.doubleclick.net/~a/ewnip2IHKcVMarmV1RXcaAEdT6A/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/ewnip2IHKcVMarmV1RXcaAEdT6A/1/da"><img src="http://feedads.g.doubleclick.net/~a/ewnip2IHKcVMarmV1RXcaAEdT6A/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=bqj9Sk4Wom8:6RmkbZjZScQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=bqj9Sk4Wom8:6RmkbZjZScQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=bqj9Sk4Wom8:6RmkbZjZScQ:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=bqj9Sk4Wom8:6RmkbZjZScQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=bqj9Sk4Wom8:6RmkbZjZScQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=bqj9Sk4Wom8:6RmkbZjZScQ:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=bqj9Sk4Wom8:6RmkbZjZScQ:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=bqj9Sk4Wom8:6RmkbZjZScQ:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=bqj9Sk4Wom8:6RmkbZjZScQ:-BTjWOF_DHI"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=bqj9Sk4Wom8:6RmkbZjZScQ:-BTjWOF_DHI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/FranksJavaBlog?a=bqj9Sk4Wom8:6RmkbZjZScQ:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/FranksJavaBlog?i=bqj9Sk4Wom8:6RmkbZjZScQ:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/FranksJavaBlog/~4/bqj9Sk4Wom8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://javablog.franksalinas.net/2009/09/09/egl-community-edition-1-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://javablog.franksalinas.net/2009/09/09/egl-community-edition-1-0/</feedburner:origLink></item>
	</channel>
</rss><!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced

Served from: javablog.franksalinas.net @ 2012-05-19 05:51:39 -->

