<?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>The Kaptain on ... stuff &#187; Integrated development environment</title>
	<atom:link href="http://www.kellyrob99.com/blog/tag/integrated-development-environment/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.kellyrob99.com/blog</link>
	<description>Tales of development, life and the folly that goes along with both</description>
	<lastBuildDate>Sun, 04 Dec 2011 21:51:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Developing Faster with the Atlassian IntelliJ Connector</title>
		<link>http://www.kellyrob99.com/blog/2010/02/21/developing-faster-with-the-atlassian-intellij-connector/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=developing-faster-with-the-atlassian-intellij-connector</link>
		<comments>http://www.kellyrob99.com/blog/2010/02/21/developing-faster-with-the-atlassian-intellij-connector/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 19:53:38 +0000</pubDate>
		<dc:creator>TheKaptain</dc:creator>
				<category><![CDATA[Cool Toys]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Atlassian]]></category>
		<category><![CDATA[Atlassian IntelliJ Connector]]></category>
		<category><![CDATA[Bamboo]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Fisheye]]></category>
		<category><![CDATA[Grails]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[Integrated development environment]]></category>
		<category><![CDATA[JBoss Seam]]></category>
		<category><![CDATA[Jira]]></category>
		<category><![CDATA[Jira Studio]]></category>
		<category><![CDATA[kellyrob99]]></category>
		<category><![CDATA[theKaptain]]></category>

		<guid isPermaLink="false">http://www.kellyrob99.com/blog/?p=1051</guid>
		<description><![CDATA[Once upon a time I used Eclipse as a development environment. It had a lot of things going for it: free(as in beer), rich community involvement, a plethora of plugins and probably my favorite feature: Mylyn. The problem was that it seemed everytime I wanted to upgrade to a newer version, inevitably half of the [...]
Related posts:<ol>
<li><a href='http://www.kellyrob99.com/blog/2010/01/02/atlassian-here-be-dragons/' rel='bookmark' title='Atlassian: Here Be Dragons'>Atlassian: Here Be Dragons</a></li>
<li><a href='http://www.kellyrob99.com/blog/2009/08/14/griffon-support-in-latest-intellij-eap/' rel='bookmark' title='Griffon support in latest Intellij EAP'>Griffon support in latest Intellij EAP</a></li>
<li><a href='http://www.kellyrob99.com/blog/2010/01/27/thanks-for-the-shirt-atlassian/' rel='bookmark' title='Thanks for the shirt Atlassian!'>Thanks for the shirt Atlassian!</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Once upon a time I used <a class="zem_slink" href="http://www.eclipse.org/" title="Eclipse (software)" rel="homepage">Eclipse</a> as a development environment. It had a lot of things going for it: free(as in beer), rich community involvement, a plethora of plugins and probably my favorite feature: <a href="http://www.eclipse.org/mylyn/">Mylyn</a>. The problem was that it seemed everytime I wanted to upgrade to a newer version, inevitably half of the integrations broke.   Please don&#8217;t get me wrong, Eclipse is AMAZING software and I do still use it occasionally for specific tasks &#8211; but nevertheless I now spend most of my day in <a class="zem_slink" href="http://www.jetbrains.com/idea/" title="IntelliJ IDEA" rel="homepage">IntelliJ</a>. In particular it had better support for Groovy/Grails development and Maven integration &#8211; both of which were essential to my everyday work. Throw in default included support for <a class="zem_slink" href="http://www.seamframework.org" title="JBoss Seam" rel="homepage">JBoss Seam</a>, JSF/Facelets, html and css and I didn&#8217;t really need a lot of plugins anymore. One of the ones I have been using, and that I&#8217;ve watched mature over the course of the last year, is the <a href="http://www.atlassian.com/software/ideconnector/intellij.jsp">Atlassian IntelliJ Connector</a>. Between it and the greatly improved changeset functionality I finally feel like I have a solid replacement for Mylyn&#8217;s excellent task management facilities.</p>
<p>This plugin integrates the IDE with one or more components of the <a class="zem_slink" href="http://www.atlassian.com/" title="Atlassian" rel="homepage">Atlassian</a> application suite. Multiple instances of <a class="zem_slink" href="http://atlassian.com/software/jira" title="JIRA (software)" rel="homepage">Jira</a>, <a class="zem_slink" href="http://www.atlassian.com/software/fisheye" title="FishEye (software)" rel="homepage">Fisheye</a>, <a class="zem_slink" href="http://www.atlassian.com/software/bamboo" title="Bamboo (software)" rel="homepage">Bamboo</a> and <a href="http://www.atlassian.com/software/crucible/">Crucible</a> can all be configured and used to streamline the development workflow.</p>
<p></p>
<h2>Jira</h2>
<p>This is perhaps the most essential piece of the puzzle, and inevitably the part a developer is going to interact with the most &#8211; the issue tracker. From within the IDE Jira master view you can load filters(basically stored searches for issues), do ad hoc searches and start work on a particular issue. If you drill down to a particular issue you can comment on it, assign it to yourself or another user, log work against it and generally manage it in most of the ways you can from the Jira web interface. Granted it&#8217;s not quite as pretty as the web interface, but the essential information and interaction is all there, and if you&#8217;re missing something an action is provided to open any issue in a web browser.</p>
<p>What really works for me is how the interaction supports my general workflow so closely:</p>
<div style="padding-left: 10px;">
<ul>
<li>Look in Jira for an issue to work on</li>
<li>Assign it to myself(if it&#8217;s not already)</li>
<li>Start progress on the issue, which starts a timer and creates a corresponding changeset</li>
<li>Do whatever development work that is required to satisfy the issue, pausing and resuming as necessary for<br />
            the duration of the task
        </li>
<li>Commit the changeset, optionally logging time against the issue and creating a Crucible review for later
        </li>
<li>Rinse and repeat</li>
</ul>
</div>
<p>Granted, I&#8217;m not the best at remembering to pause the timer, but being confronted with the time when I commit forces me to honestly evaluate how much time it took to complete the task when it&#8217;s clearest in my mind. And incidentally, while we&#8217;re here, the option to automatically organize imports in the commit dialog, a built in IDE function, has saved my butt from maven dependency-analyze any number of times.</p>
<p>It&#8217;s also convenient that you can see all comments and attachments for issues &#8211; viewing a screenshot describing a UI issue is pretty much essential after all, don&#8217;t you think?<br />

<a href="http://www.kellyrob99.com/blog/wp-content/gallery/atlassian-intellij-connector/jiraissuedetailview.png" title="Jira detail view for an issue, including access to commentary and attachments." class="shutterset_singlepic53" >
	<img class="ngg-singlepic" src="http://www.kellyrob99.com/blog/wp-content/gallery/cache/53__x_jiraissuedetailview.png" alt="jiraissuedetailview" title="jiraissuedetailview" />
</a>
</p>
<h2>Bamboo</h2>
<p>So once your code is committed, a build is kicked off on Bamboo. Hopefully all goes well, but if any build you&#8217;re listening to fails the IDE will give you a message to that effect. You also have access to changes, tests and any associated build logs. And whether or not your build does fail, stacktraces from the log are immediately available and clickable in the IDE. In addition, you can manually trigger builds and label or comment them.<br />

<a href="http://www.kellyrob99.com/blog/wp-content/gallery/atlassian-intellij-connector/bamboologview.png" title="Linking Bamboo logs to code in the IDE." class="shutterset_singlepic46" >
	<img class="ngg-singlepic" src="http://www.kellyrob99.com/blog/wp-content/gallery/cache/46__x_bamboologview.png" alt="bamboologview" title="bamboologview" />
</a>
</p>
<h2>Fisheye</h2>
<p>Integration with Fisheye is bi-directional between the IDE and the Fisheye webview. Context menus are available on right clicks in the IDE that open a file in Fisheye. And in the Fisheye web app clicking an IntelliJ icon will open a file in the IDE. It should be noted that this feature only appears to be available with Fisheye 2. I know because I&#8217;ve been missing it in Jira Studio, which still uses the 1.6 version of Fisheye.<br />

<a href="http://www.kellyrob99.com/blog/wp-content/gallery/atlassian-intellij-connector/fisheyealtf1menu.png" title="Alt-F1 context menu for a file linked to Fisheye." class="shutterset_singlepic50" >
	<img class="ngg-singlepic" src="http://www.kellyrob99.com/blog/wp-content/gallery/cache/50__x_fisheyealtf1menu.png" alt="fisheyealtf1menu" title="fisheyealtf1menu" />
</a>
<br />

<a href="http://www.kellyrob99.com/blog/wp-content/gallery/atlassian-intellij-connector/fisheyerightclickmenu.png" title="Right click context menu for a file linked to Fisheye." class="shutterset_singlepic52" >
	<img class="ngg-singlepic" src="http://www.kellyrob99.com/blog/wp-content/gallery/cache/52__x_fisheyerightclickmenu.png" alt="fisheyerightclickmenu" title="fisheyerightclickmenu" />
</a>
</p>
<h2>Crucible</h2>
<p>This is the one integration I&#8217;ve used the least so far, primarily because I don&#8217;t have Crucible installed locally for testing and again it seems a lot of the power of the integration is only available with version 2. The documentation certainly seems to suggest more rich functionality than I&#8217;ve found available anyhow. Fisheye and Crucible are actually bundled together for installation, so the Jira Studio version appears also restricted to the 1.6 version &#8211; for the time being at least. Mostly the Crucible integration is convenient because it provides messaging when reviews are assigned or commented.</p>
<p></p>
<h2>Documentation</h2>
<p>To be perfectly honest, I didn&#8217;t even look for these until writing this blog post. Configuring and using the plugin is very straightforward, provided you&#8217;re familiar with using these Atlassian tools at least. Nevertheless, I did discover a few additional bonuses and as usual <a href="http://confluence.atlassian.com/display/IDEPLUGIN/Atlassian+Connector+for+IntelliJ+IDEA">the docs are both complete and up to date</a>.</p>
<p></p>
<h2>Overall</h2>
<p>Really the point of using this plugin is to significantly reduce context switching; as much as possible your work is concentrated in one interface, and for the vast majority of cases you only need one piece of software running to get the job done. Where context switching is inevitable, this software tries to make it as &#8220;one-click&#8221; as possible. The end result is to put the power of your Atlassian products front and center in the IDE, where us developer types spend most of our working lives. Now, if only Jira Studio gets updated to the latest available software versions, because I&#8217;m dying to try out side-by-side diffs for Crucible reviews in IntelliJ!</p>
<p>Anyhow, if you use Atlassian tools the Connector is well worth checking out. And you Eclipse users aren&#8217;t left in the dark either. I can&#8217;t vouch for it&#8217;s quality, but there is an equivalent plugin for Eclipse available as well. </p>

<div class="ngg-galleryoverview" id="ngg-gallery-10-1051">

	<!-- Slideshow link -->
	<div class="slideshowlink">
		<a class="slideshowlink" href="http://www.kellyrob99.com/blog/2010/02/21/developing-faster-with-the-atlassian-intellij-connector/?show=slide">
			[Show as slideshow]		</a>
	</div>

	<!-- Piclense link -->
	<div class="piclenselink">
		<a class="piclenselink" href="javascript:PicLensLite.start({feedUrl:'http://www.kellyrob99.com/blog/wp-content/plugins/nextgen-gallery/xml/media-rss.php?gid=10&amp;mode=gallery'});">
			[View with PicLens]		</a>
	</div>
	
	<!-- Thumbnails -->
		
	<div id="ngg-image-42" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.kellyrob99.com/blog/wp-content/gallery/atlassian-intellij-connector/atlassianconnectorautoupdate.png" title="The plugin includes its own auto-update functionality, very handy!" class="shutterset_set_10" >
								<img title="atlassianconnectorautoupdate" alt="atlassianconnectorautoupdate" src="http://www.kellyrob99.com/blog/wp-content/gallery/atlassian-intellij-connector/thumbs/thumbs_atlassianconnectorautoupdate.png" width="81" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-43" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.kellyrob99.com/blog/wp-content/gallery/atlassian-intellij-connector/atlassianconnectorgeneralsettings.png" title="Preferences page of general settings for each application type." class="shutterset_set_10" >
								<img title="atlassianconnectorgeneralsettings" alt="atlassianconnectorgeneralsettings" src="http://www.kellyrob99.com/blog/wp-content/gallery/atlassian-intellij-connector/thumbs/thumbs_atlassianconnectorgeneralsettings.png" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-44" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.kellyrob99.com/blog/wp-content/gallery/atlassian-intellij-connector/bamboobuildcomment.png" title="Adding a comment to a completed Bamboo build." class="shutterset_set_10" >
								<img title="bamboobuildcomment" alt="bamboobuildcomment" src="http://www.kellyrob99.com/blog/wp-content/gallery/atlassian-intellij-connector/thumbs/thumbs_bamboobuildcomment.png" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-45" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.kellyrob99.com/blog/wp-content/gallery/atlassian-intellij-connector/bamboobuildpopup.png" title="This is the overview information presented when hovering over a build in the Bamboo view." class="shutterset_set_10" >
								<img title="bamboobuildpopup" alt="bamboobuildpopup" src="http://www.kellyrob99.com/blog/wp-content/gallery/atlassian-intellij-connector/thumbs/thumbs_bamboobuildpopup.png" width="96" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-46" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.kellyrob99.com/blog/wp-content/gallery/atlassian-intellij-connector/bamboologview.png" title="Linking Bamboo logs to code in the IDE." class="shutterset_set_10" >
								<img title="bamboologview" alt="bamboologview" src="http://www.kellyrob99.com/blog/wp-content/gallery/atlassian-intellij-connector/thumbs/thumbs_bamboologview.png" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-47" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.kellyrob99.com/blog/wp-content/gallery/atlassian-intellij-connector/bamboooverview.png" title="Overview of Bamboo builds you have configured." class="shutterset_set_10" >
								<img title="bamboooverview" alt="bamboooverview" src="http://www.kellyrob99.com/blog/wp-content/gallery/atlassian-intellij-connector/thumbs/thumbs_bamboooverview.png" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-48" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.kellyrob99.com/blog/wp-content/gallery/atlassian-intellij-connector/configuringnewapplications.png" title="Host specific configuration for each of the Atlassian applications." class="shutterset_set_10" >
								<img title="configuringnewapplications" alt="configuringnewapplications" src="http://www.kellyrob99.com/blog/wp-content/gallery/atlassian-intellij-connector/thumbs/thumbs_configuringnewapplications.png" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-49" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.kellyrob99.com/blog/wp-content/gallery/atlassian-intellij-connector/createajiraissue.png" title="Creating a new Jira issue from the IDE." class="shutterset_set_10" >
								<img title="createajiraissue" alt="createajiraissue" src="http://www.kellyrob99.com/blog/wp-content/gallery/atlassian-intellij-connector/thumbs/thumbs_createajiraissue.png" width="77" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-50" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.kellyrob99.com/blog/wp-content/gallery/atlassian-intellij-connector/fisheyealtf1menu.png" title="Alt-F1 context menu for a file linked to Fisheye." class="shutterset_set_10" >
								<img title="fisheyealtf1menu" alt="fisheyealtf1menu" src="http://www.kellyrob99.com/blog/wp-content/gallery/atlassian-intellij-connector/thumbs/thumbs_fisheyealtf1menu.png" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-51" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.kellyrob99.com/blog/wp-content/gallery/atlassian-intellij-connector/fisheyeexamplemacroview.png" title="Fisheye view, complete with IntelliJ button to open file directly in IDE." class="shutterset_set_10" >
								<img title="fisheyeexamplemacroview" alt="fisheyeexamplemacroview" src="http://www.kellyrob99.com/blog/wp-content/gallery/atlassian-intellij-connector/thumbs/thumbs_fisheyeexamplemacroview.png" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-52" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.kellyrob99.com/blog/wp-content/gallery/atlassian-intellij-connector/fisheyerightclickmenu.png" title="Right click context menu for a file linked to Fisheye." class="shutterset_set_10" >
								<img title="fisheyerightclickmenu" alt="fisheyerightclickmenu" src="http://www.kellyrob99.com/blog/wp-content/gallery/atlassian-intellij-connector/thumbs/thumbs_fisheyerightclickmenu.png" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-53" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.kellyrob99.com/blog/wp-content/gallery/atlassian-intellij-connector/jiraissuedetailview.png" title="Jira detail view for an issue, including access to commentary and attachments." class="shutterset_set_10" >
								<img title="jiraissuedetailview" alt="jiraissuedetailview" src="http://www.kellyrob99.com/blog/wp-content/gallery/atlassian-intellij-connector/thumbs/thumbs_jiraissuedetailview.png" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-54" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.kellyrob99.com/blog/wp-content/gallery/atlassian-intellij-connector/jiraissuepopup.png" title="This is the overview information presented when hovering over an issue in the Jira view." class="shutterset_set_10" >
								<img title="jiraissuepopup" alt="jiraissuepopup" src="http://www.kellyrob99.com/blog/wp-content/gallery/atlassian-intellij-connector/thumbs/thumbs_jiraissuepopup.png" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-55" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.kellyrob99.com/blog/wp-content/gallery/atlassian-intellij-connector/jiraissuesoverview.png" title="Overview of all Jira issues matching a filter or search." class="shutterset_set_10" >
								<img title="jiraissuesoverview" alt="jiraissuesoverview" src="http://www.kellyrob99.com/blog/wp-content/gallery/atlassian-intellij-connector/thumbs/thumbs_jiraissuesoverview.png" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-56" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.kellyrob99.com/blog/wp-content/gallery/atlassian-intellij-connector/jirastopwork.png" title="Dialog presented when 'stopping work' on a Jira issue; includes the ability to change the Jira state and log work against the issue." class="shutterset_set_10" >
								<img title="jirastopwork" alt="jirastopwork" src="http://www.kellyrob99.com/blog/wp-content/gallery/atlassian-intellij-connector/thumbs/thumbs_jirastopwork.png" width="89" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-57" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.kellyrob99.com/blog/wp-content/gallery/atlassian-intellij-connector/jiratoolbaradditions.png" title="Buttons the Connector adds to the top IDE button bar." class="shutterset_set_10" >
								<img title="jiratoolbaradditions" alt="jiratoolbaradditions" src="http://www.kellyrob99.com/blog/wp-content/gallery/atlassian-intellij-connector/thumbs/thumbs_jiratoolbaradditions.png" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 	 	
	<!-- Pagination -->
 	<div class='ngg-clear'></div>
 	
</div>


<div class="zemanta-pixie"><a class="zemanta-pixie-a" href="http://reblog.zemanta.com/zemified/51641feb-8bfa-4376-b1dc-c90be9a1987f/" title="Reblog this post [with Zemanta]"><img class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_c.png?x-id=51641feb-8bfa-4376-b1dc-c90be9a1987f" alt="Reblog this post [with Zemanta]" /></a><span class="zem-script more-related pretty-attribution"><script type="text/javascript" src="http://static.zemanta.com/readside/loader.js" defer="defer"></script></span></div>
<!-- AdSense Now! V1.95 -->
<!-- Post[count: 2] -->
<div class="adsense adsense-leadout" style="float:right;margin: 12px;"><script type="text/javascript"><!--
google_ad_client = "pub-6955914197200080";
/* 728x90, created 8/3/09 */
google_ad_slot = "4051815125";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div><p>Related posts:<ol>
<li><a href='http://www.kellyrob99.com/blog/2010/01/02/atlassian-here-be-dragons/' rel='bookmark' title='Atlassian: Here Be Dragons'>Atlassian: Here Be Dragons</a></li>
<li><a href='http://www.kellyrob99.com/blog/2009/08/14/griffon-support-in-latest-intellij-eap/' rel='bookmark' title='Griffon support in latest Intellij EAP'>Griffon support in latest Intellij EAP</a></li>
<li><a href='http://www.kellyrob99.com/blog/2010/01/27/thanks-for-the-shirt-atlassian/' rel='bookmark' title='Thanks for the shirt Atlassian!'>Thanks for the shirt Atlassian!</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.kellyrob99.com/blog/2010/02/21/developing-faster-with-the-atlassian-intellij-connector/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Favorite IntelliJ Resources, Tips and Tricks</title>
		<link>http://www.kellyrob99.com/blog/2009/08/18/my-favorite-intellij-resources-tips-and-tricks/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=my-favorite-intellij-resources-tips-and-tricks</link>
		<comments>http://www.kellyrob99.com/blog/2009/08/18/my-favorite-intellij-resources-tips-and-tricks/#comments</comments>
		<pubDate>Wed, 19 Aug 2009 06:17:33 +0000</pubDate>
		<dc:creator>TheKaptain</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Debugger]]></category>
		<category><![CDATA[Development Tools]]></category>
		<category><![CDATA[Grails]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[Integrated development environment]]></category>
		<category><![CDATA[IntelliJ IDEA]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tips and Tricks]]></category>

		<guid isPermaLink="false">http://www.kellyrob99.com/blog/?p=620</guid>
		<description><![CDATA[Today at work I was reminded that I didn&#8217;t learn how to use my IDE overnight, and that I&#8217;ve been greedily hoarding where I found good resources for learning how to drive IntelliJ in the fast lane. So without further ado, here&#8217;s the top places I&#8217;ve found and things I know. Links on the IntelliJ [...]
Related posts:<ol>
<li><a href='http://www.kellyrob99.com/blog/2009/08/14/griffon-support-in-latest-intellij-eap/' rel='bookmark' title='Griffon support in latest Intellij EAP'>Griffon support in latest Intellij EAP</a></li>
<li><a href='http://www.kellyrob99.com/blog/2010/02/21/developing-faster-with-the-atlassian-intellij-connector/' rel='bookmark' title='Developing Faster with the Atlassian IntelliJ Connector'>Developing Faster with the Atlassian IntelliJ Connector</a></li>
<li><a href='http://www.kellyrob99.com/blog/2009/02/08/my-favorite-new-groovy-trick/' rel='bookmark' title='My favorite new Groovy trick'>My favorite new Groovy trick</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Today at work I was reminded that I didn&#8217;t learn how to use my <a class="zem_slink" href="http://en.wikipedia.org/wiki/Integrated_development_environment" title="Integrated development environment" rel="wikipedia">IDE</a> overnight, and that I&#8217;ve been greedily hoarding where I found good resources for learning how to drive <a class="zem_slink" href="http://www.jetbrains.com/idea/" title="IntelliJ IDEA" rel="homepage">IntelliJ</a> in the fast lane.  So without further ado, here&#8217;s the top places I&#8217;ve found and things I know.</p>
<h2> Links on the IntelliJ site:</h2>
<ol>
<li><strong>1. </strong><a href="http://www.jetbrains.com/idea/documentation/documentation.html">The main documentation page</a></li>
<li><strong>2.</strong> <a href="http://www.jetbrains.com/idea/training/demos.html">Demos and tutorials</a> including a couple of new Groovy support demonstrations</li>
<li><strong>3. </strong><a href="http://www.jetbrains.com/idea/features/25-can.html">25 things you can do with IntelliJ 8 you can&#8217;t do with 7</a></li>
<li><strong>4.</strong> <a href="http://www.jetbrains.com/idea/docs/IntelliJIDEA8_ReferenceCard_Mac.pdf">Mac Keymap reference</a></li>
<li><strong>5.</strong> <a href="http://www.jetbrains.com/idea/docs/IntelliJIDEA8_ReferenceCard.pdf">Windows/Linux keymap reference</a></li>
<li><strong>6.</strong> <a href="http://blogs.jetbrains.com/idea/">The Jetbrains IntelliJ blog.</a> A great way of getting tips from the guys that wrote it, and keeping up to date with improvements.</li>
</ol>
<h2>DZone: Intellij in 7 pages</h2>
<ol>
<li><strong>7.</strong> <a href="http://refcardz.dzone.com/refcardz/intellij-idea-update">The DZone refcard for Intellij</a></li>
</ol>
<h2>My personal faves</h2>
<ol>
<li><strong>8.</strong> Command Shift-A to bring up a search window for actions. This one I think of as <a class="zem_slink" href="http://www.blacktree.com/" title="Quicksilver (software)" rel="homepage">Quicksilver</a> for my IDE.</li>
<li><strong>9.</strong> Alt-Enter to trigger intentions. Problem with your code? Let the IDE suggest a refactor to correct it.</li>
<li><strong>10.</strong>  Ctrl-n for auto-generation of <a class="zem_slink" href="http://java.sun.com" title="Java (software platform)" rel="homepage">Java</a> code. Getter and setter boilerplate getting you down(and you can&#8217;t switch from Java to Groovy)? Want a nice compact toString() on a class with 20 member variables? Let the IDE do the heavy lifting.</li>
<li><strong>11.</strong>  The Javadoc Sync plugin. This goes well with #10 to javadoc all those getters and setters auto-magically.</li>
</ol>
<h2>Add logging using the debugger</h2>
<ol>
<li><strong>12.</strong> Printing to the console is a basic tool for debugging code. Everybody&#8217;s done it &#8211; because it&#8217;s easy and it works. But you often come across scenarios that disallow this quick and satisfying hackish behaviour. Namely when you are debugging into code in a library, this is not necessarily an easy option. Fortunately IntelliJ provides a nice easy way to add console logging through the debugger. You can access the breakpoint configuration dialog either by right clicking on an existing line breakpoint and selecting &#8216;Properties&#8217; or by pressing Command Shift-F8 from the Debug view. From there you configure your line or Exception breakpoint with a &#8216;Suspend policy&#8217; of &#8216;None&#8217; and check the boxes under &#8216;Actions&#8217; to enable logging. A full description of the features can be <a href="http://www.jetbrains.com/idea/webhelp/configuring-breakpoints.html?permalink">found here</a>.
</p>
<p> I find this especially handy when there&#8217;s a problem iterating over a Collection and only one or some of the items in that Collection lead to an error condition during processing. Using this strategy I can provide context as to which cases passed and which failed without having to stop at a bunch of breakpoints and inspect the variables on the stack; I can just concentrate on the failure point and look back at the console output to compare against previous invocations.<br />
Here&#8217;s a couple of screencaps to show configuration for logging the size of a list on a line breakpoint. Note that the Groovy requires a little bit of extra magic, since the debugger gets passed a <a href="http://groovy.codehaus.org/api/groovy/lang/Reference.html">Reference</a> object instead of the raw List.</li>
</ol>

<div class="ngg-galleryoverview" id="ngg-gallery-6-620">

	<!-- Slideshow link -->
	<div class="slideshowlink">
		<a class="slideshowlink" href="http://www.kellyrob99.com/blog/2009/08/18/my-favorite-intellij-resources-tips-and-tricks/?show=slide">
			[Show as slideshow]		</a>
	</div>

	<!-- Piclense link -->
	<div class="piclenselink">
		<a class="piclenselink" href="javascript:PicLensLite.start({feedUrl:'http://www.kellyrob99.com/blog/wp-content/plugins/nextgen-gallery/xml/media-rss.php?gid=6&amp;mode=gallery'});">
			[View with PicLens]		</a>
	</div>
	
	<!-- Thumbnails -->
		
	<div id="ngg-image-26" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.kellyrob99.com/blog/wp-content/gallery/intellij-debugging/groovydebug.png" title="IntelliJ adding logging to a Groovy class through the debugger" class="shutterset_set_6" >
								<img title="groovydebug" alt="groovydebug" src="http://www.kellyrob99.com/blog/wp-content/gallery/intellij-debugging/thumbs/thumbs_groovydebug.png" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-27" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.kellyrob99.com/blog/wp-content/gallery/intellij-debugging/javadebug.png" title="IntelliJ adding logging to a Java class through the debugger" class="shutterset_set_6" >
								<img title="javadebug" alt="javadebug" src="http://www.kellyrob99.com/blog/wp-content/gallery/intellij-debugging/thumbs/thumbs_javadebug.png" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 	 	
	<!-- Pagination -->
 	<div class='ngg-clear'></div>
 	
</div>


<h2>Bonus from the Community</h2>
<ol>
<li><strong>13.</strong> <a href="http://jetbrains.dzone.com/articles/grails-12-creates-intellij">Grails returning the favor for the great IntelliJ support.</a></li>
</ol>
<h1>How about you?</h1>
<ol>
<li><strong>14.</strong> Do you know any other good places to learn about IntelliJ and how to get the most out of it? Please don&#8217;t keep it to yourself! I managed to line up a baker&#8217;s dozen, now you&#8217;re on the hook for number 14 smart guy.</li>
</ol>
<div class="zemanta-pixie"><a class="zemanta-pixie-a" href="http://reblog.zemanta.com/zemified/60aa60c1-1727-4e9c-9c03-3f9f4094636b/" title="Reblog this post [with Zemanta]"><img class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_c.png?x-id=60aa60c1-1727-4e9c-9c03-3f9f4094636b" alt="Reblog this post [with Zemanta]" /></a><span class="zem-script more-related pretty-attribution"><script type="text/javascript" src="http://static.zemanta.com/readside/loader.js" defer="defer"></script></span></div>
<p>Related posts:<ol>
<li><a href='http://www.kellyrob99.com/blog/2009/08/14/griffon-support-in-latest-intellij-eap/' rel='bookmark' title='Griffon support in latest Intellij EAP'>Griffon support in latest Intellij EAP</a></li>
<li><a href='http://www.kellyrob99.com/blog/2010/02/21/developing-faster-with-the-atlassian-intellij-connector/' rel='bookmark' title='Developing Faster with the Atlassian IntelliJ Connector'>Developing Faster with the Atlassian IntelliJ Connector</a></li>
<li><a href='http://www.kellyrob99.com/blog/2009/02/08/my-favorite-new-groovy-trick/' rel='bookmark' title='My favorite new Groovy trick'>My favorite new Groovy trick</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.kellyrob99.com/blog/2009/08/18/my-favorite-intellij-resources-tips-and-tricks/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Griffon support in latest Intellij EAP</title>
		<link>http://www.kellyrob99.com/blog/2009/08/14/griffon-support-in-latest-intellij-eap/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=griffon-support-in-latest-intellij-eap</link>
		<comments>http://www.kellyrob99.com/blog/2009/08/14/griffon-support-in-latest-intellij-eap/#comments</comments>
		<pubDate>Sat, 15 Aug 2009 06:23:18 +0000</pubDate>
		<dc:creator>TheKaptain</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[eap]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Grails]]></category>
		<category><![CDATA[Griffon]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[Integrated development environment]]></category>
		<category><![CDATA[IntelliJ IDEA]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[NetBeans]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[SpringSource]]></category>

		<guid isPermaLink="false">http://www.kellyrob99.com/blog/?p=608</guid>
		<description><![CDATA[The IDE world just started to look a little greener for Griffon programmers. Today&#8217;s latest early access version of JetBrains IntelliJ version Maia has initial support for Griffon! It appeared on the JetBrains blogroll a couple of weeks ago, and indeed may have showed up in an earlier release, but today was the first time [...]
Related posts:<ol>
<li><a href='http://www.kellyrob99.com/blog/2009/08/18/my-favorite-intellij-resources-tips-and-tricks/' rel='bookmark' title='My Favorite IntelliJ Resources, Tips and Tricks'>My Favorite IntelliJ Resources, Tips and Tricks</a></li>
<li><a href='http://www.kellyrob99.com/blog/2010/02/21/developing-faster-with-the-atlassian-intellij-connector/' rel='bookmark' title='Developing Faster with the Atlassian IntelliJ Connector'>Developing Faster with the Atlassian IntelliJ Connector</a></li>
<li><a href='http://www.kellyrob99.com/blog/2010/02/11/a-one-day-griffon-applicationpresentation/' rel='bookmark' title='A One Day Griffon Application/Presentation'>A One Day Griffon Application/Presentation</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>The <a class="zem_slink" href="http://en.wikipedia.org/wiki/Integrated_development_environment" title="Integrated development environment" rel="wikipedia">IDE</a> world just started to look a little greener for <a class="zem_slink" href="http://griffon.codehaus.org" title="Griffon (framework)" rel="homepage">Griffon</a> programmers. Today&#8217;s latest <a href="http://www.jetbrains.net/confluence/display/IDEADEV/Maia+EAP">early access version of JetBrains IntelliJ version Maia</a> has initial support for Griffon!</p>
<p>It appeared on the <a href="http://blogs.jetbrains.com/idea/2009/07/initial-griffon-support/">JetBrains blogroll a couple of weeks ago</a>, and indeed may have showed up in an earlier release, but today was the first time I saw it in action. I couldn&#8217;t find anything about this new feature mentioned explicitly in the release notes but sure enough, it&#8217;s there. Given the similar project structure between <a class="zem_slink" href="http://grails.org" title="Grails (framework)" rel="homepage">Grails</a> and Griffon, and the first class Grails support already available in IntelliJ, it&#8217;s really not too hard to see how this platform is in an ideal position to expand Griffon support.  Beyond that the general Groovy support seems to get better in every release. The EAP is free to try for any holder of an IntelliJ 8.x license and seems to be pretty stable despite the disclaimers &#8211; I highly recommend taking it for a spin, especially if you&#8217;re already using this IDE.  You get properly configured source directories and dependency paths, access to Griffon&#8217;s command line scripts, and even that awesome new Griffon icon shown to mark out the project. What more could you ask for?</p>
<p>JetBrains was beaten to the punch by a <a href="http://blogs.sun.com/geertjan/entry/griffon_alpha_plugin_for_netbeans">NetBeans plugin for Griffon</a> that was released in its initial version before this year&#8217;s Java One conference. I&#8217;m not a NetBeans user myself, but I am a frequent reader of Geertjan Wielenga&#8217;s blog &#8211; he&#8217;s published some great Groovy examples. Even the <a class="zem_slink" href="http://www.eclipse.org/" title="Eclipse (software)" rel="homepage">Eclipse</a> community has finally gotten around to putting out some real Groovy support, largely due to <a class="zem_slink" href="http://www.springsource.com" title="SpringSource" rel="homepage">SpringSource</a>&#8216;s commitment.</p>
<p> Hopefully their recent acquisition by <a class="zem_slink" href="http://www.vmware.com/" title="VMware" rel="homepage">VMWare</a> won&#8217;t distract them from developing it too much <img src='http://www.kellyrob99.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Regardless of which development environment you feel most comfortable with, there&#8217;s no questioning this is a great time to be a Groovy/Grails/Griffon developer so enjoy!</p>
<div class="zemanta-pixie"><a class="zemanta-pixie-a" href="http://reblog.zemanta.com/zemified/f3cf704d-a4a4-4a92-b52f-5c56053d78cd/" title="Reblog this post [with Zemanta]"><img class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_c.png?x-id=f3cf704d-a4a4-4a92-b52f-5c56053d78cd" alt="Reblog this post [with Zemanta]" /></a><span class="zem-script more-related pretty-attribution"><script type="text/javascript" src="http://static.zemanta.com/readside/loader.js" defer="defer"></script></span></div>
<p>Related posts:<ol>
<li><a href='http://www.kellyrob99.com/blog/2009/08/18/my-favorite-intellij-resources-tips-and-tricks/' rel='bookmark' title='My Favorite IntelliJ Resources, Tips and Tricks'>My Favorite IntelliJ Resources, Tips and Tricks</a></li>
<li><a href='http://www.kellyrob99.com/blog/2010/02/21/developing-faster-with-the-atlassian-intellij-connector/' rel='bookmark' title='Developing Faster with the Atlassian IntelliJ Connector'>Developing Faster with the Atlassian IntelliJ Connector</a></li>
<li><a href='http://www.kellyrob99.com/blog/2010/02/11/a-one-day-griffon-applicationpresentation/' rel='bookmark' title='A One Day Griffon Application/Presentation'>A One Day Griffon Application/Presentation</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.kellyrob99.com/blog/2009/08/14/griffon-support-in-latest-intellij-eap/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>I am a Procedural Programmer</title>
		<link>http://www.kellyrob99.com/blog/2009/07/22/i-am-a-procedural-programmer/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=i-am-a-procedural-programmer</link>
		<comments>http://www.kellyrob99.com/blog/2009/07/22/i-am-a-procedural-programmer/#comments</comments>
		<pubDate>Thu, 23 Jul 2009 08:34:41 +0000</pubDate>
		<dc:creator>TheKaptain</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Apache Ant]]></category>
		<category><![CDATA[Apache Maven]]></category>
		<category><![CDATA[Closure]]></category>
		<category><![CDATA[Functional programming]]></category>
		<category><![CDATA[Grape]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[Guice]]></category>
		<category><![CDATA[Integrated development environment]]></category>
		<category><![CDATA[Ivy]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Lisp]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Programming language]]></category>
		<category><![CDATA[Unit testing]]></category>

		<guid isPermaLink="false">http://www.kellyrob99.com/blog/?p=538</guid>
		<description><![CDATA[I had occasion today to reflect on what I&#8217;ve learned in the last few years developing software and it occured to me, not much has really changed since I first struggled with Lisp and Scheme in university. I still don&#8217;t completely &#8220;get&#8221; functional programming! Wrapping my head around all those brackets in any derivative of [...]
Related posts:<ol>
<li><a href='http://www.kellyrob99.com/blog/2009/04/14/groovy-and-bash-can-scripting-get-much-easier/' rel='bookmark' title='Groovy and Bash &#8211; can scripting get much easier?'>Groovy and Bash &#8211; can scripting get much easier?</a></li>
<li><a href='http://www.kellyrob99.com/blog/2009/04/19/groovy-and-glazed-lists-with-grape/' rel='bookmark' title='Groovy and Glazed Lists with Grape'>Groovy and Glazed Lists with Grape</a></li>
<li><a href='http://www.kellyrob99.com/blog/2009/08/14/griffon-support-in-latest-intellij-eap/' rel='bookmark' title='Griffon support in latest Intellij EAP'>Griffon support in latest Intellij EAP</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>I had occasion today to reflect on what I&#8217;ve learned in the last few years developing software and it occured to me, not much has really changed since I first struggled with <a href="http://en.wikipedia.org/wiki/Lisp_%28programming_language%29">Lisp</a> and Scheme in university. I still don&#8217;t completely &#8220;get&#8221; functional programming! Wrapping my head around all those brackets in any derivative of Lisp felt like torture, but maybe that was just academia trying to punish me for my eventual release into a world of programming languages concieved AFTER 1979. Not that Iam in any position to be critical of such seminal ideas &#8211; which after all are at the root of the Groovy Closure I know and love. I do &#8220;get&#8221; Closures, fortunately.</p>
<p> <img src='http://www.kellyrob99.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>In the last few years I&#8217;ve been exposed to a huge variety of different tools and frameworks, and have followed the transition of <a class="zem_slink" href="http://java.sun.com" title="Java (software platform)" rel="homepage">Java</a> from 1.4 to 1.6(and beyond!) Past time to take a look at just what has changed, and perhaps why it doesn&#8217;t matter so much.</p>
<p></p>
<h1>Build tools and dependency management &#8211; <a class="zem_slink" href="http://ant.apache.org/">Ant</a>, <a class="zem_slink" href="http://maven.apache.org" title="Apache Maven" rel="homepage">Maven</a>, <a class="zem_slink" href="http://ant.apache.org/ivy/">Ivy</a>, <a class="zem_slink" href="http://groovy.codehaus.org/Grape">Grape</a></h1>
<p>I started off in my programming career with lots of&nbsp; build.xml files and eventually made the (at times rough) transition from there to pom.xml. The best part of this: never having to hand-code a classpath again. Worth it right there. Maven adds enough dependency management magic to the build process to make it a nice alternative, and when you factor in the great IDE support available(I&#8217;m looking at you <a class="zem_slink" href="http://www.jetbrains.com/idea/" title="IntelliJ IDEA" rel="homepage">IntelliJ</a>) it&#8217;s almost a no brainer. When you need to switch from one project to another, as has been pretty common in my career at least, being able to open a project at first sight and have your IDE correctly load up and run out of the box is a big plus.</p>
<p>Of late I&#8217;ve been getting more experience with Grape and Ivy. These dependency management tools bring some really elegant simplicity to the table, especially Grape; good-bye to complicated command line &#8220;java -cp &#8230;&#8221; calls when all you want to do is run a little snippet locally and import a jar. Now of course, this journey takes us all the way back to ant, since it is such a close(and apparently integral) part of Ivy. Which is all right in my book &#8211; ant has really stepped up to the challenge in recent history, in no small part due to the community. The Groovy AntBuilder and Gant enable many of the iterative style features so hard to express in xml mostly trivial, greatly simplifying usage of the powerful ant capabilities and making them easier to bring to bear. Now of course, the ability to run both Groovy and ant from with Maven kind of make it a moot point &#8211; if you really want to make your life easy, it pays to get to know all of these technologies and fit them into your build in the most effective way possible.</p>
<p></p>
<h1>Dependency Injection &#8211; <a class="zem_slink" href="http://www.springsource.org/">Spring</a>, Maven, <a href="http://www.seamframework.org">Seam</a>, <a href="http://code.google.com/p/google-guice/">Guice</a></h1>
<p>First time I saw dependency injection in action was with Spring. The IOC principle has since then become central to how I look at software. I mean, if you want to unit test effectively, it&#8217;s pretty much compulsory. And it encourages you away from &#8216;bad&#8217; design patterns &#8211; static method only classes, shared instantiated utility classes, lack of interface abstraction, etc.</p>
<p>Maven and the <a class="zem_slink" href="http://plexus.codehaus.org/">Plexus</a> container makes writing Maven plugins a breeze. Baking functionality into a maven build is really pretty trivial and I have had a lot of success with GMaven plugins for applying static analysis to a build: verifying that all properties in a resource bundle are actually referenced in a web application for instance. It&#8217;s an added bonus that you can easily test your plugin for Maven&#8230; with Maven.</p>
<p>The Seam framework also provides a very nice IOC container and it has been a real pleasure to leverage that power in a real-world application. It certainly facillitates testing &#8211; my preferred stack is TestNG with Unitils to add easy annotation support. It&#8217;s the simple things like @TestedObject to clearly specify intent and @InjectInto to mock out dependencies that make testing outside of the container as painless as possible. Not only does it ease testing, it encourages good modularization of functionality.</p>
<p>Guice is comparatively the new kid on the block, and the dependency injection framework I have the least experience with, but again the idea is sound, and having another implementation that can take advantage of history is a good thing. Webbeans aims to take the paradigm to the next level, and it will be interesting to see how that implementation evolves. Anyway you want to cut it, the picture is pretty clear &#8211; don&#8217;t hardcode your dependencies &#8211; inject them!</p>
<p></p>
<h1>I am a&#8230; Functional Programmer?</h1>
<p>Somehow, since I started writing code &#8211; I started to get it! Closures now make sense to me, currying does not sound like a cooking technique and I realized that however you code certain fundamentals apply.</p>
<ul>
<li>write the code</li>
<li>test the hell out of the code</li>
<li>make sure the code gets USED, because this is the only way you&#8217;re going to find the bugs you didn&#8217;t think of in your tests(*see one line above). And no, you didn&#8217;t think of everything one line above.</li>
</ul>
<p>The real point here is don&#8217;t discriminate &#8211; use the right tools for the job and get the most out of them you can, whether it&#8217;s functional VS procedural, Ant VS Maven, etc ad infinitum. Each tool brings a slightly different skillset to the table and if you want to make your programming life easier, it does pay to know which to use when (and how much). Beyond that, taking the time to pry and prod at the tools you use challenges your assumptions and gives you a greater appreciation of just exactly what is &#8216;going on&#8217; when you hit the Big Green Go button on your build.<br />
Not to mention that all of the tools/frameworks I&#8217;ve described here have LOTS of daily users AND represent some of the most executed(and IMO best written) code out there in the Java+ community. As a developer, you can&#8217;t help but benefit from digging into such code.<br />
Whatever you do, don&#8217;t stay stuck in the past. It just doesn&#8217;t make a whole lot of sense when what you&#8217;re really after is to make your job as easy and painless as possible to do.</p>
<div class="zemanta-pixie"><a class="zemanta-pixie-a" href="http://reblog.zemanta.com/zemified/79a1ab53-0c8b-4d37-8a2e-dc7ae208bb0a/" title="Reblog this post [with Zemanta]"><img class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_c.png?x-id=79a1ab53-0c8b-4d37-8a2e-dc7ae208bb0a" alt="Reblog this post [with Zemanta]" /></a><span class="zem-script more-related pretty-attribution"><script type="text/javascript" src="http://static.zemanta.com/readside/loader.js" defer="defer"></script></span></div>
<p>Related posts:<ol>
<li><a href='http://www.kellyrob99.com/blog/2009/04/14/groovy-and-bash-can-scripting-get-much-easier/' rel='bookmark' title='Groovy and Bash &#8211; can scripting get much easier?'>Groovy and Bash &#8211; can scripting get much easier?</a></li>
<li><a href='http://www.kellyrob99.com/blog/2009/04/19/groovy-and-glazed-lists-with-grape/' rel='bookmark' title='Groovy and Glazed Lists with Grape'>Groovy and Glazed Lists with Grape</a></li>
<li><a href='http://www.kellyrob99.com/blog/2009/08/14/griffon-support-in-latest-intellij-eap/' rel='bookmark' title='Griffon support in latest Intellij EAP'>Griffon support in latest Intellij EAP</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.kellyrob99.com/blog/2009/07/22/i-am-a-procedural-programmer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

