Pros:
- Rapid development cycle.
- Suitable for small to medium scale projects.
- Plethora of plugins. Best of them is Spring security. Mail, Quartz
- Very good documentation.
- Easy setup and you can start sample application in about an hour. I am a Java developer and started using Grails 1.3.7 and was able to browse a sample application in an hour.
- Easy GORM. 7. Initially very good and now almost excellent(after learning curve).
- Change code and quickly see the results with a refresh.
- CSS framework made easy by Less CSS plugin. Believe me it's becomes tough to manage CSS for front end heavy websites.
- Dynamic configuration. Most of the configuration can be changed without server restart.
- XML processing is made easy using Groovy. You will feel the difference if you have to deal heavily with external parties.
Cons:
- Have to deal with run-time language. Error prone and all other cons by using runtime languages holds true.
- Didn't dig into and not sure the internal implementation of GORM. But it fares badly with multi-threaded application. Ex: Had 2 threads created 2 different NEW domain objects of same type but one of them is persisted and the other not.
- Have to buy IntelliJ Idea. Other IDE's either don't have or limited support. If you are sticking with Eclipse for development then the whole idea of RAD diminishes.
- Developers tend to declare variables with 'def', roughly equivalent to Object type. Very hard to maintain and less readability.
- Since controller service layer can be implemented with very less code .Not many designs patterns can be implemented effectively, easy for development but not robust application design. Not a con for Grails but including this as we inclined towards short cut code because of deadlines, etc reasons.
- Interpreted languages always add extra weight at run time.
- Of course you have to learn Groovy.
- Works like a charm with GORM(unless you face issues :) as mentioned above) but not with other ORM's.
- Not easy to integrate or less support with Maven.