Grails 3 will shift Grails from a framework to a library approach built on Spring Boot. It will remove or limit code generation and use Gradle plugins instead of magic. The core concepts of convention over configuration and easy incorporation of frameworks will remain along with the agile development experience. Grails 3 will make the library composable and introduce application profiles to group features. It will also improve performance and see greater Groovy adoption in the core. There is no migration path from Grails 2.x as this is a new way of doing things and plugins will likely be libraries with lifecycle hooks.
3. Agile Development
!
• Development-first experience
!
• Brought hot-reloading to enterprise development
!
• Seamless transition from "old guard"
!
• Rapid prototyping of concepts
!
• Groovy!
4. Sensible Autowirings
!
• Bringing all the platform components together, with
no effort
!
• Driving autowirings through configuration
!
• GORM -- Easy to employ DDD while maintaining an
anemic model
!
• BootStrap.groovy ... Such an undervalued premise
5. "Smart" Convention over
Configuration
!
• Encourages a common (and good!) architecture
for all Grails apps
!
• Taking MVC to the next level
!
• "Right place at the right time with the right name"
artifact generation
6. A Build System for the Web
!
• Trail blazed the programmatic build system, even
before Gradle
!
• Completely deterministic build lifecycle
!
• The basis for all Grails scripts and lifecycle events,
supporting core extensions
7. Makes the Fun Things Easy
!
• Grails put Spring, Hibernate, and Groovy into a
warp conduit!
!
• Bringing together desperate tech communities
under a common umbrella (and way of doing
things)
!
• Built infrastructure around other frameworks,
making them sensible and easy-to-use
10. Black Magic
!
• Mysterious code generation
!
• Runtime MetaClass extensions that cause non-
deterministic dispatching
!
• A "Stringly" typed framework...
!
• Goldilocks Groovy -- Grails porridge is a bit too hot
11. Too Far From The Source
!
• Debugging issues within an incorporated
framework can be really hard
!
• Stacktraces rarely would reveal the root of the
problem (this has gotten much better)
!
• Impossible to ascertain the various sources
influencing behavior
12. Bulky & Fat
!
• Wiring everything together means that everything
must be present
!
• Produces mega artifacts -- WAR by design, JAR by
option (thanks, Burt)
!
• Not a good candidate for running in PaaS/cloud
infrastructure
13. Let's build a plugin framework...
!
• ... and let's let any unknown number of sources impact
my: app lifecycle; request; development experience;
!
• Introduces high levels of complexity to every execution
cycle
!
• Binary plugins: and now we're going to let plugins hide
their source
!
• Really messes up an otherwise sound architecture
14. "Who the f*%k chose Spring?"
!
- Rob Fletcher, recent HipChat conversation
16. A Paradigm Shift in Grails...
!
• Grails 3 will take on a library approach as a
framework
!
• No more (or limited) code generation
!
• Builds will happen through Gradle, using Gradle
plugins ... Limited magic
17. The Good Parts Will Stay...
!
• The core concept of convention over configuration
!
• The sensible incorporation, and wiring together, of
best-in-breed frameworks
!
• Agile development experience will remain a
paramount goal
18. The Best is Yet To Come...
!
• Grails 3 will make the framework composable --
pick and choose functionality you need
!
• Introducing "Application Profiles" -- a strategy for
grouping goal-oriented features of the framework
!
• Improved performance -- Performance Legend, Lari
Hotari now a core team member
!
• Probably see greater adoption of Groovy in the core
19. Spring Boot
!
• Grails 3 will be built on top of Spring Boot
!
• Brings the continental Spring ecosystem, and
integration points
!
• Will add common structure and reduce verbosity of
Spring Boot applications, while garnering all the
benefits
20. Migrating from Grails 2.x to 3.x
!
• There's no migration path here... This is a whole
new way of doing things
!
• That includes plugins... It's unclear what the plugin
story is for Grails 3 -- likely libraries with lifecycle
hooks
22. Spring Boot
!
• Early adopters of Spring Boot
!
• Getting a jump start on figuring out the pain points
of Boot integration
!
• Communicating openly and frequently with the
core team at Pivotal
!
• Building our own infrastructure around Spring Boot
technologies
24. Don't get too wrapped up...
!
• Designed our PaaS without framework lock-in
!
• Very much designing for ways that we can evolve
as new technologies (like Grails 3) emerge
!
• Hoping our experiences with Boot will benefit the
Grails community