| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <title>Learning | Grails® Framework</title> |
| <meta name="keywords" content="grails,jvm,framework,groovy,gradle,spring-boot,gorm"/> |
| <meta name="description" content="A powerful Groovy-based web application framework for the JVM built on top of Spring Boot"/> |
| <meta name="date" content="July 2, 2026"/> |
| <meta name="robots" content="all"/> |
| <meta name='twitter:card' content='summary_large_image'/> |
| <meta name='twitter:site' content='@grailsframework'/> |
| <meta name='twitter:description' content='A powerful Groovy-based web application framework for the JVM built on top of Spring Boot'/> |
| <meta name='twitter:creator' content='@grailsframework'/> |
| <meta property='og:image' content='https://grails.apache.org/images/grails.png'/> |
| <meta property='og:url' content='https://grails.apache.org/learning.html'/> |
| <meta property='og:title' content='Learning | Grails® Framework'/> |
| <meta property='og:description' content='A powerful Groovy-based web application framework for the JVM built on top of Spring Boot'/> |
| <meta property='og:type' content='website'/> |
| |
| <meta charset='UTF-8'/> |
| <meta name='viewport' content='width=device-width, initial-scale=1'/> |
| <link rel='icon' href='https://grails.apache.org/images/favicon.ico'/> |
| <link rel='mask-icon' href='https://grails.apache.org/images/grails-pinned-icon.svg' color='feb672'/> |
| <link rel='alternate' type='application/rss+xml' title='RSS' href='https://grails.apache.org/rss.xml'/> |
| <link rel='stylesheet' href='https://grails.apache.org/stylesheets/screen.css'/> |
| <link rel='stylesheet' href='https://grails.apache.org/stylesheets/plugin.css'/> |
| <script src='https://grails.apache.org/javascripts/navigation.js'></script> |
| |
| <!-- Matomo --> |
| <script> |
| var _paq = window._paq = window._paq || []; |
| _paq.push(['setDoNotTrack', true]); |
| _paq.push(['disableCookies']); |
| _paq.push(['trackPageView']); |
| _paq.push(['enableLinkTracking']); |
| (function() { |
| var u = 'https://analytics.apache.org/'; |
| _paq.push(['setTrackerUrl', u + 'matomo.php']); |
| _paq.push(['setSiteId', '79']); |
| var d = document, g = d.createElement('script'), s = d.getElementsByTagName('script')[0]; |
| g.async = true; g.src = u + 'matomo.js'; s.parentNode.insertBefore(g, s); |
| })(); |
| </script> |
| <!-- End Matomo Code --> |
| |
| <script |
| async |
| src="https://widget.kapa.ai/kapa-widget.bundle.js" |
| data-website-id="d804a9f2-51a2-414c-97f7-12f2a1ba4609" |
| data-project-name="Apache Grails" |
| data-project-color="#3F4346" |
| data-font-family="system-ui,-apple-system,BlinkMacSystemFont,Roboto,Helvetica,Arial,Segoe UI,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;" |
| data-project-logo="https://grails.apache.org/images/grails.png" |
| data-modal-override-open-id="ask-ai-input" |
| data-modal-override-open-class="search-input" |
| data-user-analytics-fingerprint-enabled="true" |
| data-modal-title="Apache Grails AI Assistant" |
| data-modal-example-questions-title="Try asking me..." |
| data-modal-example-questions="How does database migration work?,How does Spring Security work?" |
| data-button-text-color="#FBB576" |
| data-modal-header-bg-color="#FFFFFF" |
| data-modal-title-color="#FBB576" |
| data-consent-required="true"></script> |
| |
| |
| <link rel='stylesheet' href='https://grails.apache.org/stylesheets/paginate.css'/> |
| <script src='https://grails.apache.org/javascripts/paginate.js'></script> |
| |
| |
| |
| <script src='https://grails.apache.org/javascripts/plugins.js'></script> |
| </head> |
| <body> |
| <header class='main-header'> |
| <div class='content'> |
| <a href='https://grails.apache.org/index.html'><img class='grails-logo' src='https://grails.apache.org/images/grails_logo.svg' alt='Grails Logo'/></a> |
| <a href='javascript:show("top-menus", "show-navigation-link")' id='show-navigation-link' |
| class='mobile align-center'>Show Navigation</a> |
| <div id='top-menus'> |
| <nav class='secondary-menu' id='secondary-menu'> |
| <ul> |
| <li><a href='https://grails.apache.org/casestudies/index.html'>Case Studies</a></li> |
| <li><a href='https://grails.apache.org/blog/index.html'>Blog</a></li> |
| <li class='active'><a href='https://grails.apache.org/learning.html'>Learning</a></li> |
| <li><a href='https://grails.apache.org/community.html'>Community</a></li> |
| <li><a href='https://grails.apache.org/search.html'>Search</a></li> |
| </ul> |
| </nav> |
| <nav class='main-menu' id='main-menu'> |
| <ul> |
| <li><a href='https://grails.apache.org/documentation.html'>Documentation</a></li> |
| <li><a href='https://grails.apache.org/download.html'>Download</a></li> |
| <li><a href='https://grails.apache.org/plugins.html'>Plugins</a></li> |
| <li><a href='https://grails.apache.org/guides'>Guides</a></li> |
| <li><a href='https://grails.apache.org/faq.html'>FAQ</a></li> |
| <li><a href='https://grails.apache.org/support.html'>Support</a></li> |
| <li><a href='https://start.grails.org'>Forge App</a></li> |
| </ul> |
| </nav> |
| </div> |
| </div> |
| </header> |
| |
| <article><div class='header-bar chalices-bg'> |
| <div class='content'> |
| <h1>Learning</h1> |
| </div> |
| </div><div class='content'> |
| <div class='two-columns'> |
| <div class='column'> |
| <div class="training" style="display: block;"> |
| <h3 class="column-header"> |
| <a href="https://objectcomputing.com/training/catalog/grails/">Grails<sup>®</sup> Training</a> |
| </h3> |
| <div id="grails-training"></div> |
| </div> |
| </div> |
| <div class='column'><div class='guide-group'> |
| <div class='guide-group-header'> |
| <img src='https://grails.apache.org/images//documentation.svg' alt='Learning' loading="lazy" /> |
| <h2>Blog Posts, Step-by-Step Tutorials</h2> |
| </div> |
| <ul> |
| <li> |
| <a href='https://grails.apache.org/guides'>Grails Guides</a> |
| </li> |
| <li> |
| <a href='https://grails.apache.org/blog/index.html'>Grails Team Blog</a> |
| </li> |
| <li> |
| <a href='https://grails.apache.org/blog/tag/webinar.html'>Grails Webinars</a> |
| </li> |
| </ul> |
| </div></div> |
| </div> |
| <h3 class='column-header'>Grails Books</h3><div class='two-columns'> |
| <div class='column'> |
| <figure class='book'> |
| <img src='https://grails.apache.org/images/books/grailsgood.png' alt='Grails Goodness Notebook' loading="lazy" /> |
| <figcaption> |
| <h3> |
| <a href='https://leanpub.com/grails-goodness-notebook'>Grails Goodness Notebook</a> |
| </h3> |
| <span class='author'>By Hubert A. Klein Ikkink</span> |
| <span class='about'>Experience the Grails framework through code snippets. Discover (hidden) Grails features through code examples and short articles. The articles and code will get you started quickly and provide deeper insight into Grails.</span> |
| </figcaption> |
| </figure> |
| <figure class='book'> |
| <img src='https://grails.apache.org/images/books/gsmith2_cover150.jpg' alt='Grails in Action' loading="lazy" /> |
| <figcaption> |
| <h3> |
| <a href="https://www.manning.com/gsmith2/">Grails in Action</a> |
| </h3> |
| <span class='author'>By Glen Smith and Peter Ledbrook</span> |
| <span class='about'>The second edition of Grails in Action is a comprehensive introduction to Grails 2 focused on helping you become super-productive fast.</span> |
| </figcaption> |
| </figure><figure class='book'> |
| <img src='https://grails.apache.org/images/books/bbeckwith_cover.gif' alt='Programming Grails' loading="lazy" /> |
| <figcaption> |
| <h3> |
| <a href='https://shop.oreilly.com/product/0636920024750.do'>Programming Grails</a> |
| </h3> |
| <span class='author'>By Burt Beckwith</span> |
| <span class='about'>Dig deeper into Grails architecture and discover how this application framework works its magic.</span> |
| </figcaption> |
| </figure></div> |
| <div class='column'><figure class='book'> |
| <img src='https://grails.apache.org/images/books/grails_3_step_by_step.png' alt='Grails 3 - Step by Step' loading="lazy" /> |
| <figcaption> |
| <h3> |
| <a href='https://grailsthreebook.com/'>Grails 3 - Step by Step</a> |
| </h3> |
| <span class='author'>By Cristian Olaru</span> |
| <span class='about'>Learn how a complete greenfield application can be implemented quickly and efficiently with Grails 3 using profiles and plugins. Use the sample application that accompanies the book as an example.</span> |
| </figcaption> |
| </figure><figure class='book'> |
| <img src='https://grails.apache.org/images/books/grails_weissmann.png' alt='Falando de Grails' loading="lazy" /> |
| <figcaption> |
| <h3> |
| <a href='https://www.casadocodigo.com.br/products/livro-grails'>Falando de Grails</a> |
| </h3> |
| <span class='author'>By Henrique Lobo Weissmann</span> |
| <span class='about'>This is the best reference on Grails 2.5 and 3.0 written in Portuguese. It&#39;s a great guide to the framework, dealing with details that many users tend to ignore.</span> |
| </figcaption> |
| </figure><figure class='book'> |
| <img src='https://grails.apache.org/images/books/grocher_jbrown_cover.jpg' alt='The Definitive Guide to Grails 2' loading="lazy" /> |
| <figcaption> |
| <h3> |
| <a href='https://www.apress.com/9781430243779'>The Definitive Guide to Grails 2</a> |
| </h3> |
| <span class='author'>By Jeff Scott Brown and Graeme Rocher</span> |
| <span class='about'>As the title states, this is the definitive reference on the Grails framework, authored by core members of the development team.</span> |
| </figcaption> |
| </figure><figure class='book'> |
| <img src='https://grails.apache.org/images/books/bklein_cover.jpg' alt='Grails 2: A Quick-Start Guide' loading="lazy" /> |
| <figcaption> |
| <h3> |
| <a href="https://www.amazon.com/gp/product/1937785777?tag=misa09-20">Grails 2: A Quick-Start Guide</a> |
| </h3> |
| <span class='author'>By Dave Klein and Ben Klein</span> |
| <span class='about'>This revised and updated edition shows you how to use Grails by iteratively building a unique, working application.</span> |
| </figcaption> |
| </figure></div> |
| </div> |
| <h3 class='column-header'>Groovy Books</h3><div class='two-columns'> |
| <div class='column'><figure class='book'> |
| <img src='https://grails.apache.org/images/books/regina.png' alt='Groovy in Action, 2nd Edition' loading="lazy" /> |
| <figcaption> |
| <h3> |
| <a href="https://www.manning.com/koenig2/">Groovy in Action, 2nd Edition</a> |
| </h3> |
| <span class='author'>By Dierk König, Guillaume Laforge, Paul King, Cédric Champeau, Hamlet D'Arcy, Erik Pragt, and Jon Skeet</span> |
| <span class='about'>This is the undisputed, definitive reference on the Groovy language, authored by core members of the development team.</span> |
| </figcaption> |
| </figure><figure class='book'> |
| <img src='https://grails.apache.org/images/books/g2cook.jpg' alt='Groovy 2 Cookbook' loading="lazy" /> |
| <figcaption> |
| <h3> |
| <a href="https://www.packtpub.com/groovy-2-cookbook/book">Groovy 2 Cookbook</a> |
| </h3> |
| <span class='author'>By Andrey Adamovitch, Luciano Fiandeso</span> |
| <span class='about'>This book contains more than 90 recipes that use the powerful features of Groovy 2 to develop solutions to everyday programming challenges.</span> |
| </figcaption> |
| </figure></div> |
| <div class='column'><figure class='book'> |
| <img src='https://grails.apache.org/images/books/Kousen-MJG.png' alt='Making Java Groovy' loading="lazy" /> |
| <figcaption> |
| <h3> |
| <a href="https://www.manning.com/kousen/">Making Java Groovy</a> |
| </h3> |
| <span class='author'>By Ken Kousen</span> |
| <span class='about'>Make Java development easier by adding Groovy. Each chapter focuses on a task Java developers do, like building, testing, or working with databases or restful web services, and shows ways Groovy can make those tasks easier.</span> |
| </figcaption> |
| </figure><figure class='book'> |
| <img src='https://grails.apache.org/images/books/gdsl.jpg' alt='Groovy for Domain-Specific Languages' loading="lazy" /> |
| <figcaption> |
| <h3> |
| <a href="https://www.packtpub.com/groovy-for-domain-specific-languages-dsl/book">Groovy for Domain-Specific Languages</a> |
| </h3> |
| <span class='author'>By Fergal Dearle</span> |
| <span class='about'>Learn how Groovy can help Java developers easily build domain-specific languages into their applications.</span> |
| </figcaption> |
| </figure><figure class='book'> |
| <img src='https://grails.apache.org/images/books/vslg2.jpg' alt='Programming Groovy 2' loading="lazy" /> |
| <figcaption> |
| <h3> |
| <a href="https://pragprog.com/book/vslg2/programming-groovy-2">Programming Groovy 2</a> |
| </h3> |
| <span class='author'>By Venkat Subramaniam</span> |
| <span class='about'>This book helps experienced Java developers learn to use Groovy 2, from the basics of the language to its latest advances.</span> |
| </figcaption> |
| </figure></div> |
| </div> |
| </div> </article> |
| <footer> |
| <div class='content'> |
| <div class='apache-grails'> |
| <p>Apache Grails is supported by the Apache Software Foundation and the Grails community.</p> |
| <a href='https://apache.org'><img src='https://www.apache.org/img/asf_logo.png' width='200px' alt='Apache Software Foundation'/></a> |
| <p>Apache, Apache Grails, Grails, Groovy, and the ASF logo are either registered trademarks or trademarks of The Apache Software Foundation.</p> |
| </div> |
| <nav class='social-media-nav'> |
| <ul> |
| <li><a href='mailto:dev@grails.apache.org'><img src='https://grails.apache.org/images/email.svg' alt='Email Icon'/></a></li> |
| <li><a href='https://slack.grails.org'><img src='https://grails.apache.org/images/slack.svg' alt='Slack Icon'/></a></li> |
| <li><a href='https://www.youtube.com/@GrailsFramework'><img src='https://grails.apache.org/images/youtube.svg' alt='Youtube Icon'/></a></li> |
| <li><a href='https://bsky.app/profile/grails.apache.org'><img src='https://grails.apache.org/images/bsky.svg' alt='Bluesky Icon'/></a></li> |
| <li><a rel="me" href="https://fosstodon.org/@grails"><img src='https://grails.apache.org/images/mastodont.svg' alt='Mastodon Icon'/></a></li> |
| <li><a href='https://www.linkedin.com/showcase/official-grails/'><img src='https://grails.apache.org/images/linkedin.svg' alt='LinkedIn Icon'/></a></li> |
| <li><a href='https://github.com/apache/grails-core'><img src='https://grails.apache.org/images/github.svg' alt='GitHub Icon'/></a></li> |
| <li><a href='https://twitter.com/grailsframework'><img src='https://grails.apache.org/images/x-twitter.svg' alt='Twitter Icon'/></a></li> |
| </ul> |
| </nav> |
| </div> |
| <div class='footer-bottom'> |
| <p>© 2005-2026 the Apache Grails project</p> |
| <p>Grails is Open Source: |
| <a href='https://www.apache.org/licenses/'>License</a>, |
| <a href='https://privacy.apache.org/policies/privacy-policy-public.html'>Privacy Policy</a>, |
| <a href='https://www.apache.org/foundation/sponsorship'>Sponsor Apache</a>, |
| <a href='https://www.apache.org/events/current-event'>Events</a>, |
| <a href='https://www.apache.org/security'>Security</a>, |
| <a href='https://www.apache.org/foundation/thanks.html'>Thanks</a>, |
| <a href='https://grails.apache.org/support-schedule.html'>Support Schedule</a> |
| </p> |
| </div> |
| </footer> |
| |
| </body> |
| </html> |