First they ignore you
then they ridicule you
then they fight you
then you win
    -- Mahatma Gandhi
Chinese => English     英文 => 中文             
随笔-219  评论-1047  文章-0  trackbacks-0

A month ago, if you would've told me that I was soon to become a raving Groovy and Grails fanatic, I would've told you that you were crazy. I've had a passing interest in Groovy for awhile, but not enough to really get excited. As for Grails...well...I just lumped it in along with Trails, Sails, and all of the other Rails wannabe frameworks.

But then I sat in on Venkat's Groovy and Grails talks at the LoneStar Software Symposium. In short, I was blown away!

The first thing I learned was that Groovy had matured quite a bit and is likely to reach 1.0 status in the very near future. This is good news because it will help bring Groovy out of its current "toy" status and into the proverbial "real world". Also, Venkat was able to demonstrate some killer language features in Groovy that up until now have been reserved for the Ruby folks.

Then in his next section, Venkat covered Grails. I sat in as a skeptic, but walked out a believer. Grails isn't just a's the real deal! While Venkat was demonstrating Grails, I downloaded and installed Grails and followed along, building the same example on my laptop. I was very impressed at how very Rails-like it felt. It's not a perfect match to Rails, but it's darn close...close enough to make me like it.

When developing in Grails, you can run your application within the built-in Jetty server. In many ways, this is much like running a Rails app in the built-in WebBrick server. Once you're done, Grails provides a command that creates a good old-fashioned WAR file, suitable for deployment in your favorite servlet container.

What's even more cool about Grails is that it has Spring and Hibernate under the covers. But you won't need to know that unless you want to wire dependencies into your controllers using some of Spring's dependency injection goodness or if you want to tweak the database mapping.

Speaking of database mapping, this is one place where Grails differs slightly from Rails. Where Rails uses ActiveRecord for domain object persistence, Grails uses GORM. Some folks I know are a bit put off (understandably so) by ActiveRecord which starts with a database schema and infers a domain model. GORM, on the other hand, takes the opposite approach, starting with domain objects and infers a database schema. Of course, if you don't like the inferred schema, it's Hibernate under the covers, so you're free to tweak the mapping to your heart's (or data architect's) content.

What's more, I also learned that Oracle has put their stamp of approval on Grails. Not that it matters much to me...but a big name like Oracle legitimizes Grails a bit more.

Finally, with a fewGroovy and Grails books making their debut, now's a perfect time to plug in and learn some Groovy and Grails stuff.

You'll notice that I've added a "Groovy|Grails" category to my blog. This is the first and only blog entry under that category for now. But expect more stuff here as I dig into Groovy and Grails more.

posted on 2007-04-06 23:59 山风小子 阅读(509) 评论(2)  编辑  收藏 所属分类: Groovy & Grails