<?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>Don&#039;t Forget to Plant It! &#187; java</title>
	<atom:link href="http://blog.codeeg.com/tag/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.codeeg.com</link>
	<description></description>
	<lastBuildDate>Wed, 28 Jul 2010 12:22:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Growl Notifications for Ant</title>
		<link>http://blog.codeeg.com/2008/10/18/growl-notifications-for-ant/</link>
		<comments>http://blog.codeeg.com/2008/10/18/growl-notifications-for-ant/#comments</comments>
		<pubDate>Sat, 18 Oct 2008 13:29:33 +0000</pubDate>
		<dc:creator>Calvin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[ant]]></category>
		<category><![CDATA[Growl]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[Mac]]></category>

		<guid isPermaLink="false">http://blog.codeeg.com/?p=187</guid>
		<description><![CDATA[It&#8217;s a real refreshing change to be doing developing on Mac these days.  Currently, our Ant builds at work are less than optimal, taking ten&#8217;s of minutes to do a full build.  Fixing it is something we definitely want to do, but because of the complexity of the build and existing deadlines, right now isn&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>It&#8217;s a real refreshing change to be doing developing on Mac these days.  Currently, our Ant builds at work are less than optimal, taking ten&#8217;s of minutes to do a full build.  Fixing it is something we definitely want to do, but because of the complexity of the build and existing deadlines, right now isn&#8217;t the best time.  So instead of constantly checking on the progress of my build, I installed this <a href="http://blog.slimeslurp.net/2007/03/18/ant-build-notifications-via-growl/">Growl Ant build listener</a> which will display a Growl notification when a build has completed.</p>
<p>The <a href="http://code.google.com/p/growlbuildlistener/wiki/README">README</a> for the listener got me started &#8211; the only thing that didn&#8217;t work for me is setting the build listener using the <em>ANT_OPT</em> environment variable.  It looks like the default install of Ant on Leopard uses that environment variable as arguments to pass to the Java VM.  So instead, I just used an alias:</p>
<p><code>
<pre>
alias ant='ant -listener net.slimeslurp.growl.GrowlListener'
</pre>
<p></code></p>
<p>Just add this line to your <em>~/.bash_login</em> to use the build listener every time you build.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.codeeg.com/2008/10/18/growl-notifications-for-ant/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>25 Things I Hate about Maven</title>
		<link>http://blog.codeeg.com/2008/06/28/25-things-i-hate-about-maven/</link>
		<comments>http://blog.codeeg.com/2008/06/28/25-things-i-hate-about-maven/#comments</comments>
		<pubDate>Sat, 28 Jun 2008 15:51:10 +0000</pubDate>
		<dc:creator>Calvin</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[ant]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[maven]]></category>

		<guid isPermaLink="false">http://dontforgettoplantit.wordpress.com/?p=148</guid>
		<description><![CDATA[I&#8217;ve been doing a lot of work with Maven recently, and having a miserable time of it.  Earlier this week I was ranting about it on a mailing list I was on, when I thought it would be therapeutic to try to list 100 things that irks me about Maven 2 that I&#8217;ve personally ran [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>I&#8217;ve been doing a lot of work with Maven recently, and having a miserable time of it.  Earlier this week I was ranting about it on a mailing list I was on, when I thought it would be therapeutic to try to list 100 things that irks me about Maven 2 that I&#8217;ve personally ran into.  So, I didn&#8217;t come close &#8211; I only came up with 25.  But I do feel much better now.</p>
<p>Here goes, in no particular order:</p>
<ol>
<li>The Maven AntRun tasks allows you run ant from within Maven, but you have very limited access to the POM.</li>
<li>If you have a multi-module project configuration, changing the version of the root project requires you to change all the versions of the sub-modules</li>
<li>Maven Ant Tasks doesn&#8217;t resolve transitive dependencies exactly the same as a regular Maven project does.</li>
<li>Maven manages adding all the dependencies you need&#8230; and then some.  You end up probably spending the same amount of time having to exclude the dependencies you don&#8217;t need, especially in EAR/WAR setups</li>
<li>You pretty much have to declare the versions of every Maven plugin you use, or risk your build breaking when someone updates the plugin.</li>
<li>You can&#8217;t create a &#8216;macro goal&#8217; that is a chain of multiple goals</li>
<li>Your custom plugins might not work if it is organized as a sub-module of a project.  Inexplicably, if you run the build inside that sub-module it works.  (Might just be a problem with Ant-based plugins)</li>
<li>Maven goes out of its way to not use Ant.  So, some things that work correctly in Ant don&#8217;t in Maven (for example, building GNU compliant tarball with the assembly plugin)</li>
<li>You can activate build profiles based on OS, file existence, and environment variables in Maven, but how do you disable them?</li>
<li>You can configure the build to deploy additional artifacts (e.g. javadoc and sources), but it won&#8217;t use the repository or snapshot repository configured for your project</li>
<li>Figuring out how a build works from reading plugin declarations is not easier than reading an Ant script</li>
<li>Good luck trying to find the artifact that you need to fix your NoClassDefFoundError</li>
<li>Passing Maven properties to your AntRun configuration?  Bah! who needs that?</li>
<li>What happened to my Maven 1.x pre/post-goals?  How is attaching plugins to build phases a better solution?</li>
<li>Multi-module projects is like having old school recursive Makefiles</li>
<li>Why can&#8217;t I define variables other than artifactId, groupId, and version to be substituted when building from an archetype?</li>
<li>Why can&#8217;t all the files in archetype-resources be included in the archetype?  Why do I have to define them all in an archetype.xml as well?</li>
<li>Versions of dependencies with classifiers are not be inheritable</li>
<li>Extending a build is difficult without creating a plugin, which requires creating yet another project</li>
<li>Customizations to the build always seems to take a few takes of trial and error before you can get them working.</li>
<li>Configurations specified for an Ant-based plugin doesn&#8217;t work if they&#8217;re specified at the execution level or the build profile level.  They will work if you specify them globally</li>
<li>Maintaining updates of plugins and what bugs are fixed in what version and what Maven version it&#8217;s compatible with is a PITA.</li>
<li>Documentation sucks.  Pretty much everything out there is surface deep.  There&#8217;s 50/50 chance that features that are skimmed over in the docs won&#8217;t work as expected</li>
<li>Why does the site:deploy and site:stage-deploy behave so differently for multi-module projects?</li>
<li>Why are build profiles inheritable?</li>
</ol>
<p>So I imagine some of the explanation are vague, but my experience is that it is par for the course when you deal with builds in Maven.  Sometimes there&#8217;s seemingly no rhyme or reason for why things don&#8217;t work, and by the time you do find a workaround that does, you just don&#8217;t want to spend anymore time figuring why your previous approaches didn&#8217;t work.  I supposed the open source thing to do is to help fix the problem, but honestly, I just don&#8217;t love Maven that much.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.codeeg.com/2008/06/28/25-things-i-hate-about-maven/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Which web framework is right for your business?</title>
		<link>http://blog.codeeg.com/2007/05/18/which-web-framework-is-right-for-your-business/</link>
		<comments>http://blog.codeeg.com/2007/05/18/which-web-framework-is-right-for-your-business/#comments</comments>
		<pubDate>Sat, 19 May 2007 03:34:54 +0000</pubDate>
		<dc:creator>Calvin</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[startup]]></category>
		<category><![CDATA[web frameworks]]></category>

		<guid isPermaLink="false">http://blog.codeeg.com/2007/05/18/which-web-framework-is-right-for-your-business/</guid>
		<description><![CDATA[Jeff&#8217;s follow up answers for Thursday&#8217;s Web Entrepreneurs meetup was good idea, so I&#8217;d thought I lay out some of my answers from a Java perspective. I think Jeff is spot on when he talks about how someone should choose a web framework for their business &#8212; rely on your technology team to chose the [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><a title="Which web framework is right for your business?" href="http://blog.jeffhaynie.us/which-web-framework-is-right-for-your-business.html">Jeff&#8217;s follow up answers</a> for <a href="http://web.meetup.com/32/">Thursday&#8217;s Web Entrepreneurs meetup</a> was good idea, so I&#8217;d thought I lay out some of my answers from a Java perspective.  I think Jeff is spot on when he talks about how someone should choose a web framework for their business &#8212; rely on your technology team to chose the right one.  There isn&#8217;t one great framework out there that, by itself, will give you any significant business advantage (however, having a great technology team with a framework <strong>that&#8217;s right for them</strong> will).</p>
<p><strong>What kind of websites is your technology best suited for?  Which is it not so well suited for?</strong></p>
<p>Java is best suited for enterprise-level websites, which includes websites that are highly transactional and requires integration to legacy systems or multiple data sources.  That isn&#8217;t to say that you can&#8217;t built small websites with it (although its rather uncommon).  One of Java&#8217;s advantages to building a website is that there is a Java library for just about everything you can ever imagine doing on a website, and a you&#8217;ll find that a good number of them are free.</p>
<p>I don&#8217;t think that there&#8217;s any kind of websites Java is not well suited for (hold on&#8230; let me finish), but I do think there are other web frameworks that are much better suited for simple, database-driven websites.  The reason is that Java is traditionally used to serve a diverse set of enterprise needs, its can be very cumbersome to setup and maintain, as there are lots of pieces to put together and configuration that has to take place.</p>
<p><strong>What famous web2.0 sites are using your technology?</strong></p>
<p>This was a tricky one.  The only one I found was <a title="Zillow" href="http://www.zillow.com">Zillow</a>.  <a title="eBay" href="http://www.ebay.com">eBay</a> is another website that uses Java, and has web2.0-ish features.</p>
<p><strong>What does it cost to use your technology (e.g. hardware, software and support)?</strong></p>
<p>The Java platform is (just recently) open source and free.  There are production-ready, free versions of server software as well as commercial versions if you need support.  As for people cost, the Java talent pool is probably the largest of any of the other technologies, especially in Atlanta.   Having said that, traditional Java setups can run you quite a bit of money, and you would be competing with enterprises for top Java talent.  There is also more overhead when dealing with Java as oppose to more streamlined alternatives like the other technologies.</p>
<p><strong>How steep is the learning curve for newcomers?</strong></p>
<p>In retrospect, and after some discussion with the panelists, I&#8217;ll concede that Java has a steeper learning curve than many of the other platforms on the panel, especially when you include the server setup, configuration and other aspects of putting together a Java website.</p>
<p><strong>How easy have you found it to find skilled people?  How about in Atlanta?</strong></p>
<p>Since Atlanta is the home of so many large enterprises, the demand for Java talent (<a href="http://www.indeed.com/jobtrends?q=atlanta+java+programming%2C+atlanta+ruby+programming%2C+atlanta+python+programming%2C+atlanta+asp+programming%2C+atlanta+php+programming&amp;l=">as shown here</a>) is great, therefore there is large pool of Java talent of varying skill ranges to pull from.  Of course, the demand also means that the best Java talents get top dollar salaries.</p>
<p><strong>How much support is there for your technology? Who have you found to be reliable?</strong></p>
<p>Support is great for Java &#8212; you have options that are free (in forums, blogs), as well as commercial server products with support.  Also, you&#8217;ll often find that you can buy support for a good number of open sourced Java products.<strong>What issues (if any) did you encounter being an evangelist for your technology in your organization?  How did you overcome them?</strong></p>
<p>Since Java is often considered a standard in the enterprise, I&#8217;ve never had a problem evangelizing Java in organizations.</p>
<p><strong>What add-ons, plug-ins, tools, etc. would you recommend using?</strong></p>
<ul>
<li><a href="http://ant.apache.org">Ant </a></li>
<li><a href="http://tomcat.apache.org">Tomcat</a></li>
<li><a href="http://lucene.apache.org">Lucene</a></li>
<li><a href="http://getahead.ltd.uk/dwr/">DWR</a></li>
</ul>
<p>With the recent popularity of Ruby on Rails, there&#8217;s been many efforts in the Java community in adopting the parts of that framework into Java.  Here are a couple of those frameworks.</p>
<ul>
<li><a href="https://trails.dev.java.net/">Trails</a></li>
<li><a href="http://grails.codehaus.org/">Grails</a></li>
</ul>
<p><strong>What are some sites youâ€™d recommend?</strong></p>
<ul>
<li>Javadocs: <a href="http://java.sun.com/javase/6/docs/api/" target="_blank">http://java.sun.com/javase/6/docs/api/</a></li>
<li>Java.Net: <a href="http://www.java.net/" target="_blank">http://www.java.net/</a></li>
<li>Java Ranch: <a href="http://www.javaranch.com/" target="_blank">http://www.javaranch.com/</a></li>
</ul>
<p>During the Q&amp;A session, Alan asked which language I felt learning would make a better programmer.  My answer was Ruby, and in fact, while I do work on Java during the day, I work with Ruby on Rails on nights and weekends.  IMO, the speed of development trumps all other concerns during the early stages of the game.  And while performance concerns with RoR are valid ones, having to scale is usually a good problem to have, and I&#8217;m confident on my ability to work them out.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.codeeg.com/2007/05/18/which-web-framework-is-right-for-your-business/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Distributed Development with VMWare</title>
		<link>http://blog.codeeg.com/2006/03/05/distributed-development-with-vmware/</link>
		<comments>http://blog.codeeg.com/2006/03/05/distributed-development-with-vmware/#comments</comments>
		<pubDate>Mon, 06 Mar 2006 00:26:17 +0000</pubDate>
		<dc:creator>Calvin</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[vmware]]></category>

		<guid isPermaLink="false">http://blog.codeeg.com/2006/03/05/distributed-development-with-vmware/</guid>
		<description><![CDATA[If you ever needed to quickly build a distributed environment for development, consider using the free VMware Player. This last Friday, I was working at Panera and needed to test some distributed aspects of our application, so I took a shot at using the Browser Appliance VM as my server. Since the Browser Appliance is [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>If you ever needed to quickly build a distributed environment for development, consider using the free <a href="http://www.vmware.com/download/player/">VMware Player</a>.  This last Friday, I was working at Panera and needed to test some distributed aspects of our application, so I took a shot at using the <a href="http://www.vmware.com/vmtn/appliances/browserapp.html">Browser Appliance VM</a> as my server.  Since the Browser Appliance is just a stripped down Ubuntu installation, you can use the Synaptic Package Manager to install the necessary libraries for development (the <a href="http://www.vmware.com/pdf/bavm_getting_started_100.pdf">Getting Started Guide</a> provided by VMware has instructions on how to use the Synaptic, as well as information on getting root privileges on the VM).</p>
<p>The trickiest part was <a href="https://wiki.ubuntu.com/RestrictedFormats?action=show&amp;redirect=AddingJavaSupport#head-68565ae07a003332e82c9f23706638777396c249">installing Java on Ubuntu</a>, which requires some tricks since Sun&#8217;s Java for Linux is packaged as an RPM.  Overall, this is a nice setup, since this allows you to create a nice and portable client-server environment.  It also nicely avoids any issues with developers stepping over each other which occurs when working on the same development server.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.codeeg.com/2006/03/05/distributed-development-with-vmware/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Fight for Rails for Java is a Good One.</title>
		<link>http://blog.codeeg.com/2006/01/21/the-fight-for-rails-for-java-is-a-good-one/</link>
		<comments>http://blog.codeeg.com/2006/01/21/the-fight-for-rails-for-java-is-a-good-one/#comments</comments>
		<pubDate>Sat, 21 Jan 2006 16:51:52 +0000</pubDate>
		<dc:creator>Calvin</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[web frameworks]]></category>

		<guid isPermaLink="false">http://blog.codeeg.com/2006/01/21/the-fight-for-rails-for-java-is-a-good-one/</guid>
		<description><![CDATA[I couldn&#8217;t agree more with Chris on the reasons for a Rails-like framework for Java. In many ways, I see a lot of similarities between this struggle and the one between POJO&#8217;s vs. EJB: a struggle between robustness vs. simplicity. This has been a hard realisation for me because whereas I was a big opponent [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>I couldn&#8217;t agree more with <a title="The REASONS of Rails in Java. FIGHT BACK again PHP, LAMP,ASP" href="http://www.xeniumhk.com/blog/?postid=30">Chris on the reasons for a Rails-like framework</a> for Java.</p>
<p>In many ways, I see a lot of similarities between this struggle and the <a title="Blog Search on POJO vs EJB." href="http://blogsearch.google.com/blogsearch?hl=en&amp;utm_source=AdWords&amp;utm_campaign=us-ha-en-blogsearch&amp;utm_term=blog+search&amp;utm_medium=cpc&amp;utm_content=googleblogsearch&amp;q=pojo+vs+ejb&amp;btnG=Search+Blogs">one between POJO&#8217;s vs. EJB</a>:  a struggle between robustness vs. simplicity.  This has been a hard realisation for me because whereas I was a big opponent of EJB&#8217;s, I&#8217;ve always been (and still is) a huge supporter of Struts.  However, when you see how easy it is to build applications on frameworks such Ruby on Rails, it becomes pretty clear that the cost of innovating in Java is currently way too high.  Nowadays, whenever I want to build up a new application to test out ideas, I&#8217;m not doing it in Java anymore &#8211; it just doesn&#8217;t get me to where I want fast enough.  For the most part, web application frameworks are just a means to an end; if you&#8217;re spending too much time there you&#8217;re just jerking off.</p>
<p>And the unfortunate thing about not using Java is that as you build up your application, you find yourself missing the vast array of Java libraries and tools out there today.  On the flipside, Java misses out on the new ideas garnered from a developer&#8217;s late night binges of inspiration.  We need to be removing the obstacles and making sure that we developers get access to the heart or the Java platform quicker and easier.</p>
<p>In a lot of ways, I see Ruby on Rails  and its like as a <em><a title="An excerpt from The Innovator's Dilemma" href="http://www.businessweek.com/chapter/christensen.htm">disruptive technology</a></em>, and applaud those in the Java arena looking to embrace it.  It is pretty chaotic right now, with a new framework popping up every few weeks or so, but eventually there will be one or two that will rise to the top.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.codeeg.com/2006/01/21/the-fight-for-rails-for-java-is-a-good-one/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
