<!DOCTYPE html>
<!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]>         <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]--><head>
    <meta charset='utf-8'/><meta http-equiv='X-UA-Compatible' content='IE=edge'/><meta name='viewport' content='width=device-width, initial-scale=1'/><meta name='keywords' content='groovy, records, AST transforms'/><meta name='description' content='This blog looks at Groovy records.'/><title>The Apache Groovy programming language - Blogs - Groovy Records</title><link href='../img/favicon.ico' type='image/x-ico' rel='icon'/><link rel='stylesheet' type='text/css' href='../css/bootstrap.css'/><link rel='stylesheet' type='text/css' href='../css/font-awesome.min.css'/><link rel='stylesheet' type='text/css' href='../css/style.css'/><link rel='stylesheet' type='text/css' href='https://cdnjs.cloudflare.com/ajax/libs/prettify/r298/prettify.min.css'/>
</head><body>
    <div id='fork-me'>
        <a href='https://github.com/apache/groovy'>
            <img style='position: fixed; top: 20px; right: -58px; border: 0; z-index: 100; transform: rotate(45deg);' src='/img/horizontal-github-ribbon.png'/>
        </a>
    </div><div id='st-container' class='st-container st-effect-9'>
        <nav class='st-menu st-effect-9' id='menu-12'>
            <h2 class='icon icon-lab'>Socialize</h2><ul>
                <li>
                    <a href='https://groovy-lang.org/mailing-lists.html' class='icon'><span class='fa fa-envelope'></span> Discuss on the mailing-list</a>
                </li><li>
                    <a href='https://twitter.com/ApacheGroovy' class='icon'><span class='fa fa-twitter'></span> Groovy on Twitter</a>
                </li><li>
                    <a href='https://groovy-lang.org/events.html' class='icon'><span class='fa fa-calendar'></span> Events and conferences</a>
                </li><li>
                    <a href='https://github.com/apache/groovy' class='icon'><span class='fa fa-github'></span> Source code on GitHub</a>
                </li><li>
                    <a href='https://groovy-lang.org/reporting-issues.html' class='icon'><span class='fa fa-bug'></span> Report issues in Jira</a>
                </li><li>
                    <a href='http://stackoverflow.com/questions/tagged/groovy' class='icon'><span class='fa fa-stack-overflow'></span> Stack Overflow questions</a>
                </li><li>
                    <a href='http://groovycommunity.com/' class='icon'><span class='fa fa-slack'></span> Slack Community</a>
                </li>
            </ul>
        </nav><div class='st-pusher'>
            <div class='st-content'>
                <div class='st-content-inner'>
                    <!--[if lt IE 7]>
                    <p class="browsehappy">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p>
                <![endif]--><div><div class='navbar navbar-default navbar-static-top' role='navigation'>
                            <div class='container'>
                                <div class='navbar-header'>
                                    <button type='button' class='navbar-toggle' data-toggle='collapse' data-target='.navbar-collapse'>
                                        <span class='sr-only'></span><span class='icon-bar'></span><span class='icon-bar'></span><span class='icon-bar'></span>
                                    </button><a class='navbar-brand' href='../index.html'>
                                        <i class='fa fa-star'></i> Apache Groovy
                                    </a>
                                </div><div class='navbar-collapse collapse'>
                                    <ul class='nav navbar-nav navbar-right'>
                                        <li class=''><a href='https://groovy-lang.org/learn.html'>Learn</a></li><li class=''><a href='https://groovy-lang.org/documentation.html'>Documentation</a></li><li class=''><a href='/download.html'>Download</a></li><li class=''><a href='https://groovy-lang.org/support.html'>Support</a></li><li class=''><a href='/'>Contribute</a></li><li class=''><a href='https://groovy-lang.org/ecosystem.html'>Ecosystem</a></li><li class=''><a href='/blog'>Blog posts</a></li><li class=''><a href='https://groovy.apache.org/events.html'></a></li><li>
                                            <a data-effect='st-effect-9' class='st-trigger' href='#'>Socialize</a>
                                        </li><li class=''>
                                            <a href='../search.html'>
                                                <i class='fa fa-search'></i>
                                            </a>
                                        </li>
                                    </ul>
                                </div>
                            </div>
                        </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy Records</a></li><li><a href='#_introduction' class='anchor-link'>Introduction</a></li><li><a href='#_optional_enhancements' class='anchor-link'>Optional enhancements</a></li><li><a href='#_internal_details' class='anchor-link'>Internal details</a></li><li><a href='#_declarative_customisation_of_records' class='anchor-link'>Declarative customisation of records</a></li><li><a href='#_emulated_records' class='anchor-link'>Emulated records</a></li><li><a href='#_using_records_with_other_ast_transforms' class='anchor-link'>Using records with other AST transforms</a></li><li><a href='#_related_functionality_for_reducing_boilerplate_code' class='anchor-link'>Related functionality for reducing boilerplate code</a></li><li><a href='#_summary' class='anchor-link'>Summary</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./deep-learning-and-eclipse-collections'>Deep Learning and Eclipse Collections</a></li><li><a href='./comparators-and-sorting-in-groovy'>Comparators and Sorting in Groovy</a></li><li><a href='./deck-of-cards-with-groovy'>Deck of cards with Groovy, JDK collections and Eclipse Collections</a></li><li><a href='./reading-and-writing-csv-files'>Reading and Writing CSV files with Groovy</a></li><li><a href='./using-groovy-with-apache-wayang'>Using Groovy with Apache Wayang and Apache Spark</a></li></ul></div><div class='col-lg-8 col-lg-pull-0'><a name='doc'></a><h1>Groovy Records</h1><p><span>Author: <i>Paul King</i></span><br/><span>Published: 2023-04-02 08:22PM</span></p><hr/><div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>A common scenario when programming is the need to group together a bunch
of related properties. You may be able to use arrays, some form of tuples, or maps
to group such properties. Some languages might support constructs like structs.
In Java, grouping such properties into a class is a natural fit.
Unfortunately, creating such classes, once you add in all the expected
methods and behaviors, can involve considerable boilerplate code.</p>
</div>
<div class="paragraph">
<p>Starting with JDK16 (with previews from JDK14), Java introduced <em>records</em> as a compact
form for declaring "<em>data</em>" classes. Such classes hold "data" and (almost) nothing else.
Java chose the very common scenario of holding <em>immutable</em> data.
With this context, and following a few restrictions, it becomes a relatively easy
task for the Java compiler to generate much of the boilerplate for such classes.</p>
</div>
<div class="paragraph">
<p>This blog looks at Groovy&#8217;s record implementation. Groovy supports the
same features as Java but adds some additional enhancements and customisation.
Groovy&#8217;s implementation builds upon existing techniques, like compile-time metaprogramming
(aka AST transforms), that are used to reduce boilerplate for other scenarios.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_introduction">Introduction</h2>
<div class="sectionbody">
<div class="paragraph">
<p>First, let&#8217;s look at what creating a record looks like:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="prettyprint highlight"><code data-lang="groovy">record Point(int x, int y, String color) { }</code></pre>
</div>
</div>
<div class="paragraph">
<p>The properties we are grouping, are called <em>components</em>.
In this case two integers, <code>x</code> and <code>y</code>, and a string <code>color</code>.</p>
</div>
<div class="paragraph">
<p>Using it is similar to how we&#8217;d use a traditionally defined <code>Point</code> class
which had a constructor with the same parameters as our record definition:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="prettyprint highlight"><code data-lang="groovy">var bluePointAtOrigin = new Point(0, 0, 'Blue')</code></pre>
</div>
</div>
<div class="paragraph">
<p>We might want to check the value of one of our point&#8217;s components:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="prettyprint highlight"><code data-lang="groovy">assert bluePointAtOrigin.color() == 'Blue'</code></pre>
</div>
</div>
<div class="paragraph">
<p>We can also print out the point (which calls its <code>toString()</code> method):</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="prettyprint highlight"><code data-lang="groovy">println bluePointAtOrigin</code></pre>
</div>
</div>
<div class="paragraph">
<p>Which would have this output:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>Point[x=0, y=0, color=Blue]</pre>
</div>
</div>
<div class="paragraph">
<p>All the features of Java records are supported.
One example is compact constructors.
If we wanted the color to not be left blank, we could add a check using
the compact constructors form, giving an alternative definition such as:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="prettyprint highlight"><code data-lang="groovy">record Point(int x, int y, String color) {
    Point { assert !color.blank }
}</code></pre>
</div>
</div>
<div class="paragraph">
<p>More formally, a record is a class that:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Is implicitly final (so can&#8217;t be extended)</p>
</li>
<li>
<p>Has a private final field for each component, e.g. <code>color</code></p>
</li>
<li>
<p>Has an accessor method for each component of the same name, e.g. <code>color()</code></p>
</li>
<li>
<p>Has a default <code>Point(int, int, String)</code> constructor</p>
</li>
<li>
<p>Has a default serialVersionUID of <code>0L</code> and special serialization code</p>
</li>
<li>
<p>Has implicit <code>toString()</code>, <code>equals()</code> and <code>hashCode()</code> methods</p>
</li>
<li>
<p>Implicitly extends the <code>java.lang.Record</code> class (so can&#8217;t extend
another class but may implement one or more interfaces)</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_optional_enhancements">Optional enhancements</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Groovy records by default have an additional named-argument style constructor:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="prettyprint highlight"><code data-lang="groovy">var greenPointAtOrigin = new Point(x:0, y:0, color:'Green')</code></pre>
</div>
</div>
<div class="paragraph">
<p>By default, Groovy records also have generated <code>getAt</code>, <code>size</code>, <code>toList</code>, and
<code>toMap</code> methods. The <code>getAt</code> method provides Groovy&#8217;s normal array-like indexing.
The <code>size</code> method returns the number of components.
The <code>toList</code> method returns the component values.
The <code>toMap</code> method returns the component values along with the component name.
Here are examples:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="prettyprint highlight"><code data-lang="groovy">assert bluePointAtOrigin.size() == 3
assert bluePointAtOrigin[2] == 'Blue'
assert bluePointAtOrigin.toList() == [0, 0, 'Blue']
assert bluePointAtOrigin.toMap() == [x:0, y:0, color:'Blue']</code></pre>
</div>
</div>
<div class="paragraph">
<p>The <code>getAt</code> method also enables destructuring through the multi-assignment
statement as this example shows:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="prettyprint highlight"><code data-lang="groovy">def (x, y, c) = bluePointAtOrigin
assert "$x $y $c" == '0 0 Blue'</code></pre>
</div>
</div>
<div class="paragraph">
<p>Shortly, we&#8217;ll look at <code>copyWith</code> which is useful for creating one record from another
record of the same type. The <code>toMap</code> can be handy when creating a record from a different type as shown here. In our example, we surmise that in the same month as realising a book,
we might want to release an article about the book for marketing purposes:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="prettyprint highlight"><code data-lang="groovy">record Book(String name, String author, YearMonth published) {}

record Article(String name, String author, YearMonth published, String publisher) {}

def b = new Book('Groovy in Action', 'Dierk &amp; Paul', YearMonth.of(2015, 06))
def a = new Article(*:b.toMap(), publisher: 'InfoQ')</code></pre>
</div>
</div>
<div class="paragraph">
<p>These optional enhancements can be turned off if not required by setting
various annotation attributes of the same name to <code>false</code> on the <code>RecordOptions</code> annotation.</p>
</div>
<div class="paragraph">
<p>Two other methods, <code>copyWith</code> and <code>components</code>, aren&#8217;t enabled by default
but can be enabled by setting the respectively named annotation attributes to <code>true</code>
as shown here:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="prettyprint highlight"><code data-lang="groovy">@RecordOptions(components = true, copyWith = true)
record Point(int x, int y, String color) { }</code></pre>
</div>
</div>
<div class="paragraph">
<p>The <code>copyWith</code> method can be used as follows:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="prettyprint highlight"><code data-lang="groovy">var redPointAtOrigin = bluePointAtOrigin.copyWith(color: 'Red')
assert redPointAtOrigin.toString() == 'Point[x=0, y=0, color=Red]'</code></pre>
</div>
</div>
<div class="paragraph">
<p>This is similar to Kotlin&#8217;s <code>copy</code> method for data classes.</p>
</div>
<div class="paragraph">
<p>The <code>components</code> method returns a typed tuple. This is especially useful
when type checking is enabled like in this method:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="prettyprint highlight"><code data-lang="groovy">@TypeChecked
String description(Point p) {
    p.components().with{ "${v3.toUpperCase()} point at ($v1,$v2)" }
}</code></pre>
</div>
</div>
<div class="paragraph">
<p>Note that the 3rd element in the tuple has type <code>String</code>,
so we can call the <code>toUpperCase</code> method.</p>
</div>
<div class="paragraph">
<p>We can use this method as follows:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="prettyprint highlight"><code data-lang="groovy">assert description(redPointAtOrigin) == 'RED point at (0,0)'</code></pre>
</div>
</div>
<div class="paragraph">
<p>This is Groovy&#8217;s equivalent to Kotlin&#8217;s <code>componentN</code> methods for data classes.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_internal_details">Internal details</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Some of the details in this section aren&#8217;t essential to know
but can be useful to understand how to customise record definitions.</p>
</div>
<div class="paragraph">
<p>When we write a record declaration like this:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="prettyprint highlight"><code data-lang="groovy">record Point(int x, int y, String color) { }</code></pre>
</div>
</div>
<div class="paragraph">
<p>It is equivalent to the following traditional declaration:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="prettyprint highlight"><code data-lang="groovy">@RecordType
class Point {
    int x
    int y
    String color
}</code></pre>
</div>
</div>
<div class="paragraph">
<p>You will almost never write records in this form but if you have some legacy tools
which don&#8217;t yet understand record syntax, it might prove useful.</p>
</div>
<div class="paragraph">
<p>The <code>RecordType</code> annotation is what is known as a meta-annotation (also sometimes called
an annotation collector). This means that it is an annotation made of other annotations.
Without going into the details, essentially, the compiler expands the above annotation
into the following (and <code>RecordBase</code> further calls into <code>ToString</code> and <code>EqualsAndHashCode</code>):</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="prettyprint highlight"><code data-lang="groovy">@RecordBase
@RecordOptions
@TupleConstructor(namedVariant = true, force = true, defaultsMode = AUTO)
@PropertyOptions
@KnownImmutable
@POJO
@CompileStatic
class Point {
    int x
    int y
    String color
}</code></pre>
</div>
</div>
<div class="paragraph">
<p>What this means is that if you don&#8217;t like the generated code you would normally
get with a record, you have several places where you can change
the behavior in a declarative fashion. We&#8217;ll cover that next.</p>
</div>
<div class="paragraph">
<p>Just be careful though, if you are creating a native record and try to change
something that would violate the JDKs assumptions about records,
you will likely get a compiler error.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_declarative_customisation_of_records">Declarative customisation of records</h2>
<div class="sectionbody">
<div class="paragraph">
<p>We looked earlier at ensuring that we don&#8217;t provide an empty <code>color</code>
by using the compact constructor form. We have several other alternatives
we could use. If we want to check that <code>color</code> isn&#8217;t null or the empty
string, we could use:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="prettyprint highlight"><code data-lang="groovy">@TupleConstructor(pre={ assert color })
record Point(int x, int y, String color) { }</code></pre>
</div>
</div>
<div class="paragraph">
<p>Or, to also rule out a color of only blank spaces, and also disable the
named-argument style constructor, we could use:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="prettyprint highlight"><code data-lang="groovy">@TupleConstructor(pre={ assert color &amp;&amp; !color.blank }, namedVariant=false)
record Point(int x, int y, String color) { }</code></pre>
</div>
</div>
<div class="paragraph">
<p>We can also change the <code>toString()</code> method with a declarative style:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="prettyprint highlight"><code data-lang="groovy">@ToString(excludes = 'color', cache = true)
record Point(int x, int y, String color) { }
assert new Point(0, 0, 'Gold').toString() == 'Point(0, 0)'</code></pre>
</div>
</div>
<div class="paragraph">
<p>Here we are excluding the <code>color</code> component from the toString value
and also caching the result for subsequent calls to toString.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_emulated_records">Emulated records</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Groovy also provides emulated records for JDK8+.
Emulated records are classes that don&#8217;t include a record attribute in the class file,
nor offer special record serialization, nor extend the <code>java.lang.Record</code>
class, but will follow all the other record conventions. This means that
you can use the <code>record</code> shorthand even if you are still stuck on JDK8 or JDK11.</p>
</div>
<div class="paragraph">
<p>By default, emulated records are provided for JDK8-15 and
native records for JDK16+. You can force the compiler to
always target emulated or native records using the <code>mode</code>
annotation attribute of <code>RecordOptions</code>. If you specify the
<code>NATIVE</code> mode and are on an earlier JDK or are targeting
an earlier bytecode version, you will receive a compiler error.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_using_records_with_other_ast_transforms">Using records with other AST transforms</h2>
<div class="sectionbody">
<div class="paragraph">
<p>We saw that we could customize the generated code by using variations of
the annotations which make up the <code>RecordType</code> meta-annotation.
We can also use most of the normal AST transforms available in Groovy.
Here are just a few examples:</p>
</div>
<div class="paragraph">
<p>We saw earlier a <code>description</code> method that took a <code>Point</code> as parameter.
While we generally want records to be data only, that&#8217;s the kind of method that
makes sense to place inside the record. We can do so as follows and make use of
<code>Memoized</code> to cache the result:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="prettyprint highlight"><code data-lang="groovy">record Point(int x, int y, String color) {
    @Memoized
    String description() {
        "${color.toUpperCase()} point at ($x,$y)"
    }
}

var pinkPointAtOrigin = new Point(x:0, y:0, color:'Pink')
assert pinkPointAtOrigin.description() == 'PINK point at (0,0)'</code></pre>
</div>
</div>
<div class="paragraph">
<p>We have also yet another way to check for blank colors by using
the design-by-contract functionality of <code>groovy-contracts</code>:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="prettyprint highlight"><code data-lang="groovy">@Requires({ color &amp;&amp; !color.blank })
record Point(int x, int y, String color) { }</code></pre>
</div>
</div>
<div class="paragraph">
<p>We can also make records which are easily sortable as follows:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="prettyprint highlight"><code data-lang="groovy">@Sortable
record Point(int x, int y, String color) { }

var points = [
    new Point(0, 100, 'red'),
    new Point(10, 10, 'blue'),
    new Point(100, 0, 'green'),
]

println points.toSorted(Point.comparatorByX())
println points.toSorted(Point.comparatorByY())
println points.toSorted(Point.comparatorByColor())</code></pre>
</div>
</div>
<div class="paragraph">
<p>Which has this output:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>[Point[x=0, y=100, color=red], Point[x=10, y=10, color=blue], Point[x=100, y=0, color=green]]
[Point[x=100, y=0, color=green], Point[x=10, y=10, color=blue], Point[x=0, y=100, color=red]]
[Point[x=10, y=10, color=blue], Point[x=100, y=0, color=green], Point[x=0, y=100, color=red]]</pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_related_functionality_for_reducing_boilerplate_code">Related functionality for reducing boilerplate code</h2>
<div class="sectionbody">
<div class="paragraph">
<p>While records represent a big jump in reducing boilerplate in the Java world,
we should point out the Groovy has many features for reducing boilerplate
beyond just records. Groovy already has a feature very much like records,
the <code>@Immutable</code> transform. This offers much of the boilerplate reduction
of records but follows JavaBean conventions.</p>
</div>
<div class="paragraph">
<p>If you don&#8217;t want immutability, you can use <code>@Canonical</code>, or you can just
mix in the appropriate transforms from <code>@ToString</code>, <code>@EqualsAndHashCode</code>,
<code>@TupleConstructor</code>, <code>@MapConstructor</code> and so forth.</p>
</div>
<div class="paragraph">
<p>Here is a summary of the main transforms and the provided functionality:</p>
</div>
<div class="paragraph">
<p><span class="image"><img src="img/record_like_functionality.png" alt="record like functionality"></span></p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_summary">Summary</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Let&#8217;s wrap up our introduction to records with a summary of functionality:</p>
</div>
<div class="paragraph">
<p><span class="image"><img src="img/record_feature_summary.png" alt="TodoScreenshot"></span></p>
</div>
</div>
</div></div></div></div></div><footer id='footer'>
                            <div class='row'>
                                <div class='colset-3-footer'>
                                    <div class='col-1'>
                                        <h1>Groovy</h1><ul>
                                            <li><a href='https://groovy-lang.org/learn.html'>Learn</a></li><li><a href='https://groovy-lang.org/documentation.html'>Documentation</a></li><li><a href='/download.html'>Download</a></li><li><a href='https://groovy-lang.org/support.html'>Support</a></li><li><a href='/'>Contribute</a></li><li><a href='https://groovy-lang.org/ecosystem.html'>Ecosystem</a></li><li><a href='/blog'>Blog posts</a></li><li><a href='https://groovy.apache.org/events.html'></a></li>
                                        </ul>
                                    </div><div class='col-2'>
                                        <h1>About</h1><ul>
                                            <li><a href='https://github.com/apache/groovy'>Source code</a></li><li><a href='https://groovy-lang.org/security.html'>Security</a></li><li><a href='https://groovy-lang.org/learn.html#books'>Books</a></li><li><a href='https://groovy-lang.org/thanks.html'>Thanks</a></li><li><a href='http://www.apache.org/foundation/sponsorship.html'>Sponsorship</a></li><li><a href='https://groovy-lang.org/faq.html'>FAQ</a></li><li><a href='https://groovy-lang.org/search.html'>Search</a></li>
                                        </ul>
                                    </div><div class='col-3'>
                                        <h1>Socialize</h1><ul>
                                            <li><a href='https://groovy-lang.org/mailing-lists.html'>Discuss on the mailing-list</a></li><li><a href='https://twitter.com/ApacheGroovy'>Groovy on Twitter</a></li><li><a href='https://groovy-lang.org/events.html'>Events and conferences</a></li><li><a href='https://github.com/apache/groovy'>Source code on GitHub</a></li><li><a href='https://groovy-lang.org/reporting-issues.html'>Report issues in Jira</a></li><li><a href='http://stackoverflow.com/questions/tagged/groovy'>Stack Overflow questions</a></li><li><a href='http://groovycommunity.com/'>Slack Community</a></li>
                                        </ul>
                                    </div><div class='col-right'>
                                        <p>
                                            The Groovy programming language is supported by the <a href='http://www.apache.org'>Apache Software Foundation</a> and the Groovy community.
                                        </p><div text-align='right'>
                                            <img src='../img/asf_logo.png' title='The Apache Software Foundation' alt='The Apache Software Foundation' style='width:60%'/>
                                        </div><p>Apache&reg; and the Apache feather logo are either registered trademarks or trademarks of The Apache Software Foundation.</p>
                                    </div>
                                </div><div class='clearfix'>&copy; 2003-2023 the Apache Groovy project &mdash; Groovy is Open Source: <a href='http://www.apache.org/licenses/LICENSE-2.0.html' alt='Apache 2 License'>license</a>, <a href='https://privacy.apache.org/policies/privacy-policy-public.html'>privacy policy</a>.</div>
                            </div>
                        </footer></div>
                </div>
            </div>
        </div>
    </div><script src='../js/vendor/jquery-1.10.2.min.js' defer></script><script src='../js/vendor/classie.js' defer></script><script src='../js/vendor/bootstrap.js' defer></script><script src='../js/vendor/sidebarEffects.js' defer></script><script src='../js/vendor/modernizr-2.6.2.min.js' defer></script><script src='../js/plugins.js' defer></script><script src='https://cdnjs.cloudflare.com/ajax/libs/prettify/r298/prettify.min.js'></script><script>document.addEventListener('DOMContentLoaded',prettyPrint)</script><script>
          (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
          (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
          m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
          })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

          ga('create', 'UA-257558-10', 'auto');
          ga('send', 'pageview');
    </script>
</body></html>