<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-AU">
<script type="text/javascript">var _sf_startpt=(new Date()).getTime()</script>
  <head>
    <meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8" />

    <!-- Navigational metadata for large websites (an accessibility feature): -->
        <link rel="stylesheet" href="/jquery/jquery-accordion/demo/demo.css" />
    <link rel="stylesheet" type="text/css" href="http://www.groovymag.com/templates/groovy2/screen.css" media="screen" title="Screen CSS" />
    <link rel="stylesheet" type="text/css" href="http://www.groovymag.com/templates/groovy2/wpstyle.css" media="screen" title="WP CSS" />
<link rel="alternate" type="application/rss+xml" title="GroovyMag RSS Feed" href="http://feeds.feedburner.com/groovymag" />

        
        <script type="text/javascript" src="/jquery/jquery-accordion/lib/jquery.js"></script>
        <script type="text/javascript" src="/jquery/jquery-accordion/lib/chili-1.7.pack.js"></script>
        
        <script type="text/javascript" src="/jquery/jquery-accordion/lib/jquery.easing.js"></script>
        <script type="text/javascript" src="/jquery/jquery-accordion/lib/jquery.dimensions.js"></script>
        <script type="text/javascript" src="/jquery/jquery-accordion/jquery.accordion.js"></script>
 <script src="http://kimsal.com/copy.js"></script> 
        <script type="text/javascript">
        jQuery().ready(function(){
 

		$(".qty").change(function(){ 
			var over1 = 0;
			$(".qty").each( function() { 
				var id=this.id.replace("qty_","");
				var licid = "license_"+id;
				if(this.value>1) { 
					over1++;
		//			$("#"+licid).show();
				} else { 
		//			$("#"+licid).hide();
				}
			});
			if(over1>0) { 
		//		$("#licenseColumn").show();	
			} else {
		//		$("#licenseColumn").hide();	

			}
		});
	});
	</script>
    <title>GroovyMag - the magazine for Groovy and Grails developers about Groovy programming and Grails development</title>
  </head>

  <body>
	<div id='bodycontent'>
    <!-- For non-visual user agents: -->
      <div id="top"><a href="#main-copy" class="doNotDisplay doNotPrint">Skip to main content.</a></div>

    <!-- ##### Header ##### -->

    <div id="header">
      <div class="midHeader">

  <a href="http://www.groovymag.com/main/" title="Home"><img border='0' height='60' style='float:left;' src="/images/gm_60.png" alt="GroovyMag - the magazine for Groovy and Grails developers about Groovy programming and Grails development"/></a>
<div id='loginArea'>
		<p><a href="https://www.groovymag.com/login/">Log in</a></p>

</div>

<div style='clear:both'></div>


</div>


</div>

<!-- ##### Side Bar ##### -->

<div class="centerit" id="side-bar" plugin="menu/show">



<div id='side-bar-in'>
<ul>
<!--
  <li><a href="http://www.groovymag.com/main.about/" title="Home">About</a></li>
-->
  <li><a href="http://www.groovymag.com/main.issues/" title="Purchase">Purchase/Subscribe</></li>
  <li><a href="http://www.groovymag.com/main.page/GroovyMag_FAQ" title="FAQ">FAQ</a></li>
  <li><a href="http://blog.groovymag.com/" title="Blog">Blog</a></li>
  <li><a href="http://www.groovymag.com/cart" >Cart</a></li>
  <li><a href="http://www.groovymag.com/authors" >Authors</a></li>
  <li><a href="http://www.groovymag.com/sponsors" >Sponsors</a></li>
  <li><a href="http://www.groovymag.com/training">Training</a></li>
  <li><a href="http://www.jsmag.com/latest">JSMag</a></li>
</li>
<!--
  <li><a href="http://www.groovymag.com/main.submit/" title="Home">Submit a topic</a></li>
-->

        </ul>
<!--
  <a style="hover:none;"  href="http://twitter.com/groovymag" target="_new"><img style="hover:none;" border="0" src="/images/twitter_icon.gif" alt="Follow GroovyMag on Twitter!"/><br/>Follow GroovyMag</a> 
-->
<!--

<div style='text-align: center; font-size: .8em'>
Credit card processing<br/>
handled by PayPal<br/>
<img src="https://www.paypalobjects.com/WEBSCR-540-20081021-1/en_US/i/logo/logo3.gif"/>
</div>
-->



    </div>
</div>
<div style='clear:both;'></div>

    <!-- ##### Main Copy ##### -->

    <div id="main-copy">
			<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Why Groovy?</title>
	<atom:link href="http://blog.groovymag.com/2009/01/why-groovy/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.groovymag.com/2009/01/why-groovy/</link>
	<description>Groovy and Grails magazine</description>
	<lastBuildDate>Thu, 15 Jul 2010 22:40:58 -0400</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: I&#8217;m Learning Groovy and So Should You! &#171; Jeff Douglas - Technology, Coding and Bears&#8230; OH MY!</title>
		<link>http://blog.groovymag.com/2009/01/why-groovy/comment-page-1/#comment-24</link>
		<dc:creator>I&#8217;m Learning Groovy and So Should You! &#171; Jeff Douglas - Technology, Coding and Bears&#8230; OH MY!</dc:creator>
		<pubDate>Fri, 06 Feb 2009 15:19:26 +0000</pubDate>
		<guid isPermaLink="false">http://blog.groovymag.com/?p=25#comment-24</guid>
		<description>[...] like it&#8217;s structure and syntax. If you haven&#8217;t looked at Groovy yet, here&#8217;s a good article on why you [...]</description>
		<content:encoded><![CDATA[<p>[...] like it&#8217;s structure and syntax. If you haven&#8217;t looked at Groovy yet, here&#8217;s a good article on why you [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Michael Easter</title>
		<link>http://blog.groovymag.com/2009/01/why-groovy/comment-page-1/#comment-13</link>
		<dc:creator>Michael Easter</dc:creator>
		<pubDate>Tue, 27 Jan 2009 18:00:37 +0000</pubDate>
		<guid isPermaLink="false">http://blog.groovymag.com/?p=25#comment-13</guid>
		<description>Well said! I agree that Grails is wildly productive (esp. for greenfield apps) but I find straight-up Groovy to be productive as well. Once one sets up the classpath for a given project, it is very nice to start scripting things quickly, with onboard support for JUnit assertions etc. 

I use Groovy _every_ day, usually to solve quick problems with our project-specific code (and/or legacy DB). It is a charming language.</description>
		<content:encoded><![CDATA[<p>Well said! I agree that Grails is wildly productive (esp. for greenfield apps) but I find straight-up Groovy to be productive as well. Once one sets up the classpath for a given project, it is very nice to start scripting things quickly, with onboard support for JUnit assertions etc. </p>
<p>I use Groovy _every_ day, usually to solve quick problems with our project-specific code (and/or legacy DB). It is a charming language.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Robert</title>
		<link>http://blog.groovymag.com/2009/01/why-groovy/comment-page-1/#comment-12</link>
		<dc:creator>Robert</dc:creator>
		<pubDate>Tue, 27 Jan 2009 05:16:10 +0000</pubDate>
		<guid isPermaLink="false">http://blog.groovymag.com/?p=25#comment-12</guid>
		<description>I think I agree with your compilation hit. When you put a grails app into production mode via the default &quot;grails war&quot; command, it compiles all your groovy code into JVM bytecode. Only in dev mode will it recompile on the fly for source changes, which is a good thing. Also, as the last commenter noted, the JVM can then further optimize the code as it runs.

I was a little skeptical at first myself, coming from a pure java background. I have personal feelings against Hibernate for example, but I&#039;ve built 6 apps in almost as many months from small (twitopolis) to medium (patriotroom) and I really like the setup. The one real detriment is hosting (applies really to all java-based apps), but if you are mildly linux aware, there are companies like Linode that have cheap VPS solutions (I have several myself).

The underlying groovy scripting language is great as well. I&#039;ve written scripts for JVM monitoring through JMX, as well as log file monitoring for error reporting. Both are kicked off from cron. It is also nice for doing quick testing of stuff. For example I use a simple groovy file when trying out regex stuff quite often. 

I also do PHP, but not so much these days, as it still has its benefits. I plan on learning ruby as well in the near future (merb looks very appealing to me). 

I like your underlying theme though, learn a new language. And don&#039;t pay attention to the &quot;ruby is better than X&quot; or &quot;groovy is better than Y&quot; garbage.</description>
		<content:encoded><![CDATA[<p>I think I agree with your compilation hit. When you put a grails app into production mode via the default &#8220;grails war&#8221; command, it compiles all your groovy code into JVM bytecode. Only in dev mode will it recompile on the fly for source changes, which is a good thing. Also, as the last commenter noted, the JVM can then further optimize the code as it runs.</p>
<p>I was a little skeptical at first myself, coming from a pure java background. I have personal feelings against Hibernate for example, but I&#8217;ve built 6 apps in almost as many months from small (twitopolis) to medium (patriotroom) and I really like the setup. The one real detriment is hosting (applies really to all java-based apps), but if you are mildly linux aware, there are companies like Linode that have cheap VPS solutions (I have several myself).</p>
<p>The underlying groovy scripting language is great as well. I&#8217;ve written scripts for JVM monitoring through JMX, as well as log file monitoring for error reporting. Both are kicked off from cron. It is also nice for doing quick testing of stuff. For example I use a simple groovy file when trying out regex stuff quite often. </p>
<p>I also do PHP, but not so much these days, as it still has its benefits. I plan on learning ruby as well in the near future (merb looks very appealing to me). </p>
<p>I like your underlying theme though, learn a new language. And don&#8217;t pay attention to the &#8220;ruby is better than X&#8221; or &#8220;groovy is better than Y&#8221; garbage.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Daniel Spiewak</title>
		<link>http://blog.groovymag.com/2009/01/why-groovy/comment-page-1/#comment-11</link>
		<dc:creator>Daniel Spiewak</dc:creator>
		<pubDate>Mon, 26 Jan 2009 15:47:54 +0000</pubDate>
		<guid isPermaLink="false">http://blog.groovymag.com/?p=25#comment-11</guid>
		<description>In general, the points you made would hold for any dynamic language on the JVM with Java integration.  For example, I could do a word-replace on your post s/Groovy/JRuby/g and come up with almost the same thing.  JRuby also has some nice features that Groovy can&#039;t match because of its design philosophy, such as a super-dynamic call stack and trivially open-classes.  This does come at a price though (performance), which is part of why Groovy doesn&#039;t allow dynamic constructs of that variety.

I think that Groovy&#039;s biggest selling point is the strength of its integration with Java.  Outside of Scala, I don&#039;t think there is any JVM language which integrates as closely.  Groovy uses the JVM call stack (unlike JRuby), real JVM classes (not faux stubs), and provides joint compilation with Java sources.  All this means that you can bring Groovy into a Java project without any serious infrastructure imposition or architectural repercussions.  This also allows Groovy to properly exploit a number of HotSpot optimizations that aren&#039;t possible in less integrated languages like Kawa or JRuby.</description>
		<content:encoded><![CDATA[<p>In general, the points you made would hold for any dynamic language on the JVM with Java integration.  For example, I could do a word-replace on your post s/Groovy/JRuby/g and come up with almost the same thing.  JRuby also has some nice features that Groovy can&#8217;t match because of its design philosophy, such as a super-dynamic call stack and trivially open-classes.  This does come at a price though (performance), which is part of why Groovy doesn&#8217;t allow dynamic constructs of that variety.</p>
<p>I think that Groovy&#8217;s biggest selling point is the strength of its integration with Java.  Outside of Scala, I don&#8217;t think there is any JVM language which integrates as closely.  Groovy uses the JVM call stack (unlike JRuby), real JVM classes (not faux stubs), and provides joint compilation with Java sources.  All this means that you can bring Groovy into a Java project without any serious infrastructure imposition or architectural repercussions.  This also allows Groovy to properly exploit a number of HotSpot optimizations that aren&#8217;t possible in less integrated languages like Kawa or JRuby.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jacques Oosthuizen</title>
		<link>http://blog.groovymag.com/2009/01/why-groovy/comment-page-1/#comment-10</link>
		<dc:creator>Jacques Oosthuizen</dc:creator>
		<pubDate>Mon, 26 Jan 2009 14:36:59 +0000</pubDate>
		<guid isPermaLink="false">http://blog.groovymag.com/?p=25#comment-10</guid>
		<description>We started using groovy/grails about 6 months ago. Must say best thing we ever did as we have a lot of Java libraries and could with the help of grails write some real complex applications really fast. I love grails and hope now that the guys from spring has bought it , it will become even better !!!!</description>
		<content:encoded><![CDATA[<p>We started using groovy/grails about 6 months ago. Must say best thing we ever did as we have a lot of Java libraries and could with the help of grails write some real complex applications really fast. I love grails and hope now that the guys from spring has bought it , it will become even better !!!!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dan Vega</title>
		<link>http://blog.groovymag.com/2009/01/why-groovy/comment-page-1/#comment-9</link>
		<dc:creator>Dan Vega</dc:creator>
		<pubDate>Mon, 26 Jan 2009 13:58:34 +0000</pubDate>
		<guid isPermaLink="false">http://blog.groovymag.com/?p=25#comment-9</guid>
		<description>Really Great write up, thanks for taking the time to do this!</description>
		<content:encoded><![CDATA[<p>Really Great write up, thanks for taking the time to do this!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ashraf Bashir</title>
		<link>http://blog.groovymag.com/2009/01/why-groovy/comment-page-1/#comment-8</link>
		<dc:creator>Ashraf Bashir</dc:creator>
		<pubDate>Mon, 26 Jan 2009 08:16:49 +0000</pubDate>
		<guid isPermaLink="false">http://blog.groovymag.com/?p=25#comment-8</guid>
		<description>The post is great, except it needs some examples (a lot of tiny ones). 
You gave drawbacks, advantages and some subjectives opinions, BUT, in such points, some examples in form of comparison between Groovy and whatever else will declare the point. It&#039;s like the desire of creating instances with *only* interfaces without implementations :) . The reader get the abstract opinion, but no more than abstracts ideas!
Anyway, that was a great post and I really enjoyed it. Thank you.</description>
		<content:encoded><![CDATA[<p>The post is great, except it needs some examples (a lot of tiny ones).<br />
You gave drawbacks, advantages and some subjectives opinions, BUT, in such points, some examples in form of comparison between Groovy and whatever else will declare the point. It&#8217;s like the desire of creating instances with *only* interfaces without implementations <img src='http://blog.groovymag.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  . The reader get the abstract opinion, but no more than abstracts ideas!<br />
Anyway, that was a great post and I really enjoyed it. Thank you.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: lowell</title>
		<link>http://blog.groovymag.com/2009/01/why-groovy/comment-page-1/#comment-7</link>
		<dc:creator>lowell</dc:creator>
		<pubDate>Mon, 26 Jan 2009 07:40:58 +0000</pubDate>
		<guid isPermaLink="false">http://blog.groovymag.com/?p=25#comment-7</guid>
		<description>i&#039;m not sure how i got here, but i&#039;m glad i did. sometimes, we get ourselves stuck in our own little worlds and miss a lot of things. i&#039;ve been working with cocoa since sometime in &#039;04 and rails since early &#039;06, and i&#039;d never heard of either groovy or grails before tonite.

grails doesn&#039;t particularly interest me as i use the real thing, but groovy looks like it might be kind of fun. and it looks like i&#039;m in luck, i can get 1.5.7 from macports! i just turned on the textmate bundle for it, and now i&#039;m gonna go play with my new toy¹ for a week or so! thanks!

¹ toy was not used in a pejorative sense ;)</description>
		<content:encoded><![CDATA[<p>i&#8217;m not sure how i got here, but i&#8217;m glad i did. sometimes, we get ourselves stuck in our own little worlds and miss a lot of things. i&#8217;ve been working with cocoa since sometime in &#8216;04 and rails since early &#8216;06, and i&#8217;d never heard of either groovy or grails before tonite.</p>
<p>grails doesn&#8217;t particularly interest me as i use the real thing, but groovy looks like it might be kind of fun. and it looks like i&#8217;m in luck, i can get 1.5.7 from macports! i just turned on the textmate bundle for it, and now i&#8217;m gonna go play with my new toy¹ for a week or so! thanks!</p>
<p>¹ toy was not used in a pejorative sense <img src='http://blog.groovymag.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: bob</title>
		<link>http://blog.groovymag.com/2009/01/why-groovy/comment-page-1/#comment-6</link>
		<dc:creator>bob</dc:creator>
		<pubDate>Mon, 26 Jan 2009 06:40:33 +0000</pubDate>
		<guid isPermaLink="false">http://blog.groovymag.com/?p=25#comment-6</guid>
		<description>I havent tried groovy but I have rails.  I quit a job because an errant manager insisted I lead a team to implement a rails app in 2-3 weeks that could have been written in Java in a few days.

Fact is, the rails project would have failed or been a waste of time prototype that got left on the cutting room floor.  It was a war of sorts the manager was trying to disenfranchise another team (a java team) by changing the game and the rules.

That probably says nothing about ruby or rails, but it is a footnote to all this escapism.  If being a professional was about tinkering with things that noone will support all the way to production and then rewriting the app in the status quo language then I agree with this post.

I think eventually there will be a de facto java scripting language.  I doubt it will be groovy or grails.</description>
		<content:encoded><![CDATA[<p>I havent tried groovy but I have rails.  I quit a job because an errant manager insisted I lead a team to implement a rails app in 2-3 weeks that could have been written in Java in a few days.</p>
<p>Fact is, the rails project would have failed or been a waste of time prototype that got left on the cutting room floor.  It was a war of sorts the manager was trying to disenfranchise another team (a java team) by changing the game and the rules.</p>
<p>That probably says nothing about ruby or rails, but it is a footnote to all this escapism.  If being a professional was about tinkering with things that noone will support all the way to production and then rewriting the app in the status quo language then I agree with this post.</p>
<p>I think eventually there will be a de facto java scripting language.  I doubt it will be groovy or grails.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Seth Schroeder</title>
		<link>http://blog.groovymag.com/2009/01/why-groovy/comment-page-1/#comment-5</link>
		<dc:creator>Seth Schroeder</dc:creator>
		<pubDate>Mon, 26 Jan 2009 04:28:00 +0000</pubDate>
		<guid isPermaLink="false">http://blog.groovymag.com/?p=25#comment-5</guid>
		<description>Here&#039;s a Groovy file I wrote to load a Spring-based war file into groovy shell, then call real methods on fully configured spring beans: http://blogs.foognostic.net/2009/01/introducing-jawarepl/</description>
		<content:encoded><![CDATA[<p>Here&#8217;s a Groovy file I wrote to load a Spring-based war file into groovy shell, then call real methods on fully configured spring beans: <a href="http://blogs.foognostic.net/2009/01/introducing-jawarepl/" rel="nofollow">http://blogs.foognostic.net/2009/01/introducing-jawarepl/</a></p>
]]></content:encoded>
	</item>
</channel>
</rss>

    </div>
	<div style='clear:both'></div>
    
    <!-- ##### Footer ##### -->

<div id='footertop'>
<a href="http://www.webdevpub.com"><img border="0" src="http://webdevpub.com/images/webdevpub.png" height="65"/></a>
</div>
    <div id="footer">
      <div class="left">
        E-mail:&nbsp;<a href="mailto:webmaster@groovymag.com" title="Contact webmaster">webmaster@groovymag.com</a>
 | <a href="/privacy">Privacy Policy</a>
 | <a href="/refund">Refund Policy</a>
 | <a href="/contact">Contact</a>
 | 
<a href="http://feeds2.feedburner.com/groovymag" title="Subscribe to my feed" rel="alternate" type="application/rss+xml">Subscribe to free RSS</a>
 
 | <a href="/love">We Love You - Really!</a>
 | <a target="_new" href="http://www.twitter.com/groovymag">Follow on Twitter (thanks!)</a>
<br />
      </div>

      <br class="doNotDisplay doNotPrint" />

      <div class="right"><br/></div>
    </div>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-224419-14");
pageTracker._trackPageview();
</script>
	</div>
<!--
<a title="Google Analytics Alternative" href="http://getclicky.com/194970"><img alt="Google Analytics Alternative" src="http://static.getclicky.com/media/links/badge.gif" border="0" /></a>
<script src="http://static.getclicky.com/js" type="text/javascript"></script>
<script type="text/javascript">clicky.init(194970);</script>
<noscript><p><img alt="Clicky" width="1" height="1" src="http://in.getclicky.com/194970ns.gif" /></p></noscript>
-->
<script type="text/javascript">
var _sf_async_config={uid:9726,domain:"groovymag.com"};
(function(){
  function loadChartbeat() {
    window._sf_endpt=(new Date()).getTime();
    var e = document.createElement('script');
    e.setAttribute('language', 'javascript');
    e.setAttribute('type', 'text/javascript');
    e.setAttribute('src',
       (("https:" == document.location.protocol) ? "https://s3.amazonaws.com/" : "http://") +
       "static.chartbeat.com/js/chartbeat.js");
    document.body.appendChild(e);
  }
  var oldonload = window.onload;
  window.onload = (typeof window.onload != 'function') ?
     loadChartbeat : function() { oldonload(); loadChartbeat(); };
})();

</script>
  </body>
</html>
