blob: 22991d83d608bc3da4b32a01d6b98b0d57f98e0a [file]
<!DOCTYPE html>
<html lang="en">
<head>
<title>Apache Grails&reg; 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 5, 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/index.html'/>
<meta property='og:title' content='Apache Grails&reg; 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><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="home-bar">
<div class="content">
<h1>A powerful Groovy-based web application framework for the JVM built on top of Spring Boot</h1>
<div class="get-started-row">
<div class="call-to-action">
<h2>
<a href="https://start.grails.org/">
<span class="version">Get Started</span>
</a>
</h2>
</div>
</div>
<div class="hero-cards"><div class="hero-card"><div class="hero-card-label">Grails 7.2.0</div><div class="hero-card-actions"><a class="hero-action hero-action-download" href="https://www.apache.org/dyn/closer.lua/grails/core/7.2.0/distribution/apache-grails-7.2.0-bin.zip?action=download">Download</a><a class="hero-action hero-action-docs" href="https://grails.apache.org/docs/7.2.0/">Documentation</a></div></div><div class="hero-card"><div class="hero-card-label">Grails 7.1.3</div><div class="hero-card-actions"><a class="hero-action hero-action-download" href="https://www.apache.org/dyn/closer.lua/grails/core/7.1.3/distribution/apache-grails-7.1.3-bin.zip?action=download">Download</a><a class="hero-action hero-action-docs" href="https://grails.apache.org/docs/7.1.3/">Documentation</a></div></div><div class="hero-card"><div class="hero-card-label">Grails 7.0.13</div><div class="hero-card-actions"><a class="hero-action hero-action-download" href="https://www.apache.org/dyn/closer.lua/grails/core/7.0.13/distribution/apache-grails-7.0.13-bin.zip?action=download">Download</a><a class="hero-action hero-action-docs" href="https://grails.apache.org/docs/7.0.13/">Documentation</a></div></div></div>
<div class="get-started-row">
<div class="call-to-action">
<a class="allversions" href="https://grails.apache.org/download.html">browse all download versions</a>
<span class="allversions"> &middot; </span>
<a class="allversions" href="https://grails.apache.org/documentation.html">browse all documentation versions</a>
</div>
</div>
<div class="get-started-row">
<div class="call-to-action">
<h2>
<a href="https://grails.apache.org/support-schedule.html">
<span class="version">Support Schedule</span>
</a>
</h2>
</div>
</div>
<div class="get-started-row">
<div class="call-to-action">
<span class="allversions">NOTE: Versions prior to 7.0.0-M4 are not ASF releases. Links to those releases
are provided here as a convenience.</span>
</div>
</div>
</div>
</div>
<article id="features">
<div class="content">
<div class="three-columns">
<div class="column">
<img src="https://grails.apache.org/images/flatlearningcurve.png" alt="Flat Learning Curve" loading="lazy">
<h3>Flat Learning Curve</h3>
<p>Convention-over-configuration, sensible defaults, opinionated APIs, and the Groovy language combine
to make the Grails<sup>&reg;</sup> framework easy to learn for Java developers.</p>
</div>
<div class="column">
<img src="https://grails.apache.org/images/springboot.svg" alt="Spring Boot" loading="lazy">
<h3>On top of Spring Boot</h3>
<p>The Grails framework is built on top of Spring Boot and leverages Spring Boot's time-saving features,
such as Spring-powered dependency injection.</p>
</div>
<div class="column">
<img src="https://grails.apache.org/images/java.png" alt="Smooth Java Integration" loading="lazy">
<h3>Smooth Java Integration</h3>
<p>The Grails framework seamlessly and transparently integrates and interoperates with Java, the JVM,
and existing Java EE containers.</p>
</div>
<div class="column">
<img src="https://grails.apache.org/images/groovy.png" alt="Groovy Programming Language" loading="lazy">
<h3>Groovy-Based</h3>
<p>Apache Groovy is a language for the Java platform designed to enhance developers' productivity. It is
an optionally-typed and dynamic language but with static-typing and static compilation capabilities.
</p>
</div>
<div class="column">
<img src="https://grails.apache.org/images/gorm.png" alt="GORM - Data Access Toolkit" loading="lazy">
<h3>Seamless GORM Integration</h3>
<p>The Grails framework seamlessly integrates with GORM, a data access toolkit that provides a rich set
of APIs for accessing relational and non-relational data. GORM also includes implementations for
Hibernate (SQL), MongoDB, Cassandra, and Neo4j.</p>
</div>
<div class="column">
<img src="https://grails.apache.org/images/restapis.svg" alt="REST APIs, REACT, ANGULAR" loading="lazy">
<h3>REST APIs, REACT, ANGULAR</h3>
<p>With the use of application profiles, including React and Angular, the Grails framework allows
developers to build REST APIs or modern web applications with a JavaScript frontend.</p>
</div>
<div class="column">
<img src="https://grails.apache.org/images/plugins.svg" alt="Grails Plugins Logo" loading="lazy">
<h3>Plugins</h3>
<p>Developers can build plugins that extend and enhance the Grails framework, or they can access
existing plugins published by a vibrant plugin community.</p>
</div>
<div class="column">
<img src="https://grails.apache.org/images/view.svg" alt="View Technologies" loading="lazy">
<h3>View Technologies</h3>
<p>Technologies such as GSP, JSON Views, and Markup Views help developers effortlessly generate HTML,
JSON, and XML.</p>
</div>
<div class="column">
<img src="https://grails.apache.org/images/asynchronous.svg" alt="Asynchronous Capabilities" loading="lazy">
<h3>Asynchronous Capabilities</h3>
<p>The async features of the Grails framework aim to simplify concurrent programming. The framework's
features include the concept of Promises, a unified event model, and the use of RxJava to write
reactive logic.</p>
</div>
<div class="column">
<img src="https://grails.apache.org/images/opensource.svg" alt="Open Source" loading="lazy">
<h3>Open Source</h3>
<p>The Grails framework is an open source Apache 2 License project.</p>
</div>
<div class="column">
<img src="https://grails.apache.org/images/dsl.png" alt="Domain-Specific Languages" loading="lazy">
<h3>Domain-Specific Languages</h3>
<p>The Grails framework relies on expressive domain-specific languages (DSLs) for validation, querying,
markup rendering, and more.</p>
</div>
<div class="column">
<img src="https://grails.apache.org/images/idesupport.png" alt="IDE Support" loading="lazy">
<h3>IDE Support</h3>
<p>Developers can access support at any time via IDEs and text editors, such as Intellij IDEA, Eclipse,
Sublime, and Textmate.</p>
</div>
</div>
</div>
</article>
<article class="training">
<div class="content">
<div class="two-columns">
<div class="column">
<div class="event">
<img src="https://grails.apache.org/images/confs/communityovercode.png" alt="Community over Code" loading="lazy">
<h3>
<a href="https://communityovercode.org">Community over Code</a>
</h3>
<span class="location">Glasgow, United Kingdom</span>
<span class="dates">October 11 - 14, 2026</span>
<p>Community over Code features a dedicated Groovy &amp; Grails track.</p>
</div>
</div>
</div>
</div>
</article>
<article class="testimonials">
<div class="content">
<h2>They all use the Apache Grails Framework</h2>
<img src="https://grails.apache.org/images/testimoniallogos.png" alt="Companies using Grails" loading="lazy">
</div>
</article>&nbsp;</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>&copy; 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>