<?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>Website design and developing. Flash and CSS tools &#187; Java</title>
	<atom:link href="http://create-flash.com/category/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://create-flash.com</link>
	<description>Flash and CSS review, tutorials, tips and how-to. Wordpress themes, plugins. SEO. Fonts. Showcases and inspiration.</description>
	<lastBuildDate>Fri, 27 Jan 2012 12:10:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Top 3 List of Java Tools</title>
		<link>http://create-flash.com/2008/top-3-list-of-java-tools/</link>
		<comments>http://create-flash.com/2008/top-3-list-of-java-tools/#comments</comments>
		<pubDate>Mon, 10 Nov 2008 09:52:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://create-flash.com/?p=26</guid>
		<description><![CDATA[Lack of imagination is one of our worst sins as software developers. We do the same things over and over again, but we rarely modify our ways: me at least. After some years, these are the tools that made it into my tricks box for everyday tasks. Tiresome operations are not my thing. Chances are [...]]]></description>
			<content:encoded><![CDATA[<p>Lack of imagination is one of our worst sins as software developers. We do the same things over and over again, but we rarely modify our ways: me at least. After some years, these are the tools that made it into my tricks box for everyday tasks. Tiresome operations are not my thing.</p>
<p>Chances are you are already using at least some of these, but here we go anyways:</p>
<p><span id="more-26"></span></p>
<h3>StringUtils</h3>
<p>The bread and butter of the commons-lang library, this utility class includes some methods that should seriously have been included in String long time ago.</p>
<div id="highlighter_845328" class="syntaxhighlighter">
<div class="bar">
<div class="toolbar"><span class="item viewSource" style="width: 16px; height: 16px;"><br />
</span></div>
</div>
<div class="lines">
<div class="line alt1"><code class="number">1.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">StringUtils.isEmpty(</code><code class="keyword">null</code><code class="plain">) &amp;&amp; StringUtils.isEmpty(</code><code class="string">""</code><code class="plain">); </code><code class="comments">// true</code></span></span></div>
<div class="line alt2"><code class="number">2.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">StringUtils.isBlank(</code><code class="string">"   \n\t"</code><code class="plain">); </code><code class="comments">// true</code></span></span></div>
<div class="line alt1"><code class="number">3.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">StringUtils.substringAfterLast(</code><code class="string">"foo.bar.baz"</code><code class="plain">, </code><code class="string">"."</code><code class="plain">); </code><code class="comments">// "baz"</code></span></span></div>
<div class="line alt2"><code class="number">4.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">StringUtils.substringBeforeLast(</code><code class="string">"foo.bar.baz"</code><code class="plain">, </code><code class="string">"."</code><code class="plain">); </code><code class="comments">// "foo.bar"</code></span></span></div>
<div class="line alt1"><code class="number">5.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">StringUtils.split(</code><code class="string">"foo.bar.baz"</code><code class="plain">, </code><code class="string">'.'</code><code class="plain">); </code><code class="comments">// { "foo", "bar", "baz" }</code></span></span></div>
<div class="line alt2"><code class="number">6.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">StringUtils.split(</code><code class="string">"foo,  bar,baz"</code><code class="plain">, </code><code class="string">", "</code><code class="plain">); </code><code class="comments">// { "foo", "bar", "baz" }</code></span></span></div>
<div class="line alt1"><code class="number">7.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">StringUtils.leftPad(</code><code class="string">"1"</code><code class="plain">, </code><code class="value">3</code><code class="plain">, </code><code class="string">'0'</code><code class="plain">); </code><code class="comments">// "001"</code></span></span></div>
</div>
</div>
<h3>IOUtils and FileUtils</h3>
<p>A must-have for the rare occasions where you need to manipulate files by hand. Both are pretty much alike (FileUtils for File, IOUtils for InputStream and Reader classes) and come bundled in commons-io.</p>
<div id="highlighter_145271" class="syntaxhighlighter">
<div class="bar">
<div class="toolbar"><span class="item viewSource" style="width: 16px; height: 16px;"><br />
</span></div>
</div>
<div class="lines">
<div class="line alt1"><code class="number">01.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">File file1;</code></span></span></div>
<div class="line alt2"><code class="number">02.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">File file2;</code></span></span></div>
<div class="line alt1"><code class="number">03.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">InputStream inputStream;</code></span></span></div>
<div class="line alt2"><code class="number">04.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">OutputStream outputStream;</code></span></span></div>
<div class="line alt1"><code class="number">05.</code></div>
<div class="line alt2"><code class="number">06.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// copy one file into another</code></span></span></div>
<div class="line alt1"><code class="number">07.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">FileUtils.copyFile(file1, file2);</code></span></span></div>
<div class="line alt2"><code class="number">08.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">IOUtils.copy(inputStream, outputStream);</code></span></span></div>
<div class="line alt1"><code class="number">09.</code></div>
<div class="line alt2"><code class="number">10.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// read a file into a String</code></span></span></div>
<div class="line alt1"><code class="number">11.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">String s1 = FileUtils.readFileToString(file1);</code></span></span></div>
<div class="line alt2"><code class="number">12.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">String s2 = IOUtils.toString(inputStream);</code></span></span></div>
<div class="line alt1"><code class="number">13.</code></div>
<div class="line alt2"><code class="number">14.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// read a file into a list of Strings, one item per line</code></span></span></div>
<div class="line alt1"><code class="number">15.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">List&lt;String&gt; l1 = FileUtils.readLines(file1);</code></span></span></div>
<div class="line alt2"><code class="number">16.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">List&lt;String&gt; l2 = IOUtils.readLines(inputStream);</code></span></span></div>
<div class="line alt1"><code class="number">17.</code></div>
<div class="line alt2"><code class="number">18.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// put this in your finally() clause after manipulating streams</code></span></span></div>
<div class="line alt1"><code class="number">19.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">IOUtils.closeQuietly(inputStream);</code></span></span></div>
<div class="line alt2"><code class="number">20.</code></div>
<div class="line alt1"><code class="number">21.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// return the list of xml and text files in the specified folder and any subfolders</code></span></span></div>
<div class="line alt2"><code class="number">22.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">Collection&lt;File&gt; c1 = FileUtils.listFiles(file1, { </code><code class="string">"xml"</code><code class="plain">, </code><code class="string">"txt"</code> <code class="plain">}, </code><code class="keyword">true</code><code class="plain">);</code></span></span></div>
<div class="line alt1"><code class="number">23.</code></div>
<div class="line alt2"><code class="number">24.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// copy one folder and its contents into another</code></span></span></div>
<div class="line alt1"><code class="number">25.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">FileUtils.copyDirectoryToDirectory(file1, file2);</code></span></span></div>
<div class="line alt2"><code class="number">26.</code></div>
<div class="line alt1"><code class="number">27.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// delete one folder and its contents</code></span></span></div>
<div class="line alt2"><code class="number">28.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">FileUtils.deleteDirectory(file1);</code></span></span></div>
</div>
</div>
<h3>Google collections</h3>
<p>This is the best implementation of a collections extension that I know of. Some of these are shouting to be included in the JDK:</p>
<div id="highlighter_652717" class="syntaxhighlighter">
<div class="bar">
<div class="toolbar"><span class="item viewSource" style="width: 16px; height: 16px;"><br />
</span></div>
</div>
<div class="lines">
<div class="line alt1"><code class="number">01.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// create an ArrayList with three arguments</code></span></span></div>
<div class="line alt2"><code class="number">02.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">List&lt;String&gt; list = Lists.newArrayList(</code><code class="string">"foo"</code><code class="plain">, </code><code class="string">"bar"</code><code class="plain">, </code><code class="string">"baz"</code><code class="plain">);</code></span></span></div>
<div class="line alt1"><code class="number">03.</code></div>
<div class="line alt2"><code class="number">04.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// notice that there is no generics or class cast,</code></span></span></div>
<div class="line alt1"><code class="number">05.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// and still this line does not generate a warning.</code></span></span></div>
<div class="line alt2"><code class="number">06.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">Set&lt;String&gt; s = Sets.newConcurrentHashSet();</code></span></span></div>
<div class="line alt1"><code class="number">07.</code></div>
<div class="line alt2"><code class="number">08.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// intersect and union are basic features of a Set, if you ask me</code></span></span></div>
<div class="line alt1"><code class="number">09.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">Set&lt;String&gt; s = Sets.intersect(s1, s2);</code></span></span></div>
<div class="line alt2"><code class="number">10.</code></div>
<div class="line alt1"><code class="number">11.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// Example  of multiple values in a Map</code></span></span></div>
<div class="line alt2"><code class="number">12.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">ListMultimap&lt;String, Validator&gt; validators = </code><code class="keyword">new</code> <code class="plain">ArrayListMultimap&lt;String, Validator&gt;();</code></span></span></div>
<div class="line alt1"><code class="number">13.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">validators.put(</code><code class="string">"save"</code><code class="plain">, </code><code class="keyword">new</code> <code class="plain">RequiredValidator());</code></span></span></div>
<div class="line alt2"><code class="number">14.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">validators.put(</code><code class="string">"save"</code><code class="plain">, </code><code class="keyword">new</code> <code class="plain">StringValidator());</code></span></span></div>
<div class="line alt1"><code class="number">15.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">validators.put(</code><code class="string">"delete"</code><code class="plain">, </code><code class="keyword">new</code> <code class="plain">NumberValidator());</code></span></span></div>
<div class="line alt2"><code class="number">16.</code></div>
<div class="line alt1"><code class="number">17.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">validators.get(</code><code class="string">"save"</code><code class="plain">); </code><code class="comments">// { RequiredValidator, StringValidator }</code></span></span></div>
<div class="line alt2"><code class="number">18.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">validators.get(</code><code class="string">"foo"</code><code class="plain">); </code><code class="comments">// empty List (not null)</code></span></span></div>
<div class="line alt1"><code class="number">19.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">validators.values(); </code><code class="comments">// { RequiredValidator, StringValidator, NumberValidator }</code></span></span></div>
</div>
</div>
<h3>java.util.concurrent</h3>
<p>Not everybody needs the heavy lifting of java.util.concurrent, but the concurrent collections are handy:</p>
<div id="highlighter_487749" class="syntaxhighlighter">
<div class="bar">
<div class="toolbar"><span class="item viewSource" style="width: 16px; height: 16px;"><br />
</span></div>
</div>
<div class="lines">
<div class="line alt1"><code class="number">1.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// a map that may be modified (by the same or different thread) while being iterated</code></span></span></div>
<div class="line alt2"><code class="number">2.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">Map&lt;String, Something&gt; repository = </code><code class="keyword">new</code> <code class="plain">ConcurrentHashMap&lt;String, Something&gt;();</code></span></span></div>
<div class="line alt1"><code class="number">3.</code></div>
<div class="line alt2"><code class="number">4.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// same with lists. This one is only available with Java 6</code></span></span></div>
<div class="line alt1"><code class="number">5.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">List&lt;Something&gt; list = </code><code class="keyword">new</code> <code class="plain">CopyOnWriteArrayList&lt;Something&gt;();</code></span></span></div>
</div>
</div>
<p>Hardly a large toolbox, is it? If your favourite library is missing, feel free to add it below. <img src='http://create-flash.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://create-flash.com/2008/top-3-list-of-java-tools/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

