2023/07/18 08:54:56: Generated dev website from groovy-website@20cb76e
diff --git a/blog/feed.atom b/blog/feed.atom
index 88058b5..b7687e1 100644
--- a/blog/feed.atom
+++ b/blog/feed.atom
@@ -710,7 +710,7 @@
     </author>
     <title>Using Apache Pekko actors and GPars actors with Groovy</title>
     <link href="http://groovy.apache.org/blog/groovy-pekko-gpars"/>
-    <updated>2023-07-17T23:24:56+00:00</updated>
+    <updated>2023-07-18T18:45:00+00:00</updated>
     <published>2023-07-17T23:24:56+00:00</published>
     <summary>This post looks at using Apache Pekko Actors and GPars Actors with Groovy.</summary>
   </entry>
diff --git a/blog/groovy-pekko-gpars.html b/blog/groovy-pekko-gpars.html
index 6ad5a78..6eb6339 100644
--- a/blog/groovy-pekko-gpars.html
+++ b/blog/groovy-pekko-gpars.html
@@ -53,7 +53,7 @@
                                     </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'>Using Apache Pekko actors and GPars actors with Groovy</a></li><li><a href='#_the_example' class='anchor-link'>The example</a></li><li><a href='#_a_pekko_implementation_in_groovy' class='anchor-link'>A Pekko implementation in Groovy</a></li><li><a href='#_a_gpars_implementation_in_groovy' class='anchor-link'>A GPars implementation in Groovy</a></li><li><a href='#_conclusion' class='anchor-link'>Conclusion</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='./gpars-meets-virtual-threads'>GPars meets Virtual Threads</a></li><li><a href='./groovy-list-processing-cheat-sheet'>Groovy List Processing Cheat Sheet</a></li></ul></div><div class='col-lg-8 col-lg-pull-0'><a name='doc'></a><h1>Using Apache Pekko actors and GPars actors with Groovy</h1><p><span>Author: <i>Paul King</i></span><br/><span>Published: 2023-07-17 11:24PM</span></p><hr/><div id="preamble">
+                        </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'>Using Apache Pekko actors and GPars actors with Groovy</a></li><li><a href='#_the_example' class='anchor-link'>The example</a></li><li><a href='#_a_pekko_implementation_in_groovy' class='anchor-link'>A Pekko implementation in Groovy</a></li><li><a href='#_a_gpars_implementation_in_groovy' class='anchor-link'>A GPars implementation in Groovy</a></li><li><a href='#_discussion' class='anchor-link'>Discussion</a></li><li><a href='#_conclusion' class='anchor-link'>Conclusion</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='./gpars-meets-virtual-threads'>GPars meets Virtual Threads</a></li><li><a href='./groovy-list-processing-cheat-sheet'>Groovy List Processing Cheat Sheet</a></li></ul></div><div class='col-lg-8 col-lg-pull-0'><a name='doc'></a><h1>Using Apache Pekko actors and GPars actors with Groovy</h1><p><span>Author: <i>Paul King</i></span><br/><span>Published: 2023-07-17 11:24PM (Last updated: 2023-07-18 06:45PM)</span></p><hr/><div id="preamble">
 <div class="sectionbody">
 <div class="paragraph">
 <p><span class="image right"><img src="https://pekko.apache.org/assets/images/pekko_logo.png" alt="pekko logo" width="100"></span>
@@ -117,8 +117,8 @@
 <h2 id="_a_pekko_implementation_in_groovy">A Pekko implementation in Groovy</h2>
 <div class="sectionbody">
 <div class="paragraph">
-<p>This example uses Groovy 4.0.13, JDK11 and Pekko 1.0.0, but should also
-run using later JDK versions.</p>
+<p>This example uses Groovy 4.0.13 and Pekko 1.0.0.
+It was tested with JDK 11 and 17.</p>
 </div>
 <div class="paragraph">
 <p>The Pekko documentation gives Java and Scala implementations.
@@ -283,8 +283,8 @@
 <h2 id="_a_gpars_implementation_in_groovy">A GPars implementation in Groovy</h2>
 <div class="sectionbody">
 <div class="paragraph">
-<p>This example uses Groovy 4.0.13, JDK11 and GPars 1.2.1, but should
-run with any JDK 8+ version.</p>
+<p>This example uses Groovy 4.0.13 and GPars 1.2.1.
+It was tested with JDK 8, 11 and 17.</p>
 </div>
 <div class="paragraph">
 <p>We&#8217;ll follow the same conventions for strongly typed messages in our GPars example.
@@ -304,7 +304,7 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="prettyprint highlight"><code data-lang="groovy">helloWorld = actor {
+<pre class="prettyprint highlight"><code data-lang="groovy">greeter = actor {
     loop {
         react { Greet command -&gt;
             println "Hello $command.whom!"
@@ -322,14 +322,15 @@
 </div>
 <div class="paragraph">
 <p>If we don&#8217;t want to use the DSL syntax, we can use the related classes directly.
-Here we&#8217;ll define a <code>BotActor</code> using this slightly more verbose style.
+Here we&#8217;ll define a <code>HelloWorldBot</code> using this slightly more verbose style.
 It shows adding the state variables we need for tracking the invocation count:</p>
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="prettyprint highlight"><code data-lang="groovy">class BotActor extends DefaultActor {
+<pre class="prettyprint highlight"><code data-lang="groovy">class HelloWorldBot extends DefaultActor {
     int max
     private int greetingCounter = 0
+
     @Override
     protected void act() {
         loop {
@@ -353,7 +354,7 @@
 <pre class="prettyprint highlight"><code data-lang="groovy">var main = actor {
     loop {
         react { SayHello command -&gt;
-            helloWorld &lt;&lt; new Greet(command.name, new BotActor(max: 3).start())
+            greeter &lt;&lt; new Greet(command.name, new HelloWorldBot(max: 3).start())
         }
     }
 }</code></pre>
@@ -390,6 +391,56 @@
 </div>
 </div>
 <div class="sect1">
+<h2 id="_discussion">Discussion</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The GPars implementation is less verbose compared to the Pekko implementation but Pekko
+is known for providing additional type safety for actor messages and that is partly what we are seeing.</p>
+</div>
+<div class="paragraph">
+<p>GPars supports a mixture of styles, some offering less verbosity at the expense of capturing some
+errors at runtime rather than compile-time. Such code can be useful when wanting very succinct code
+using Groovy&#8217;s dynamic nature. When using Groovy&#8217;s static nature or Java, you might consider using
+select parts of the GPars API.</p>
+</div>
+<div class="paragraph">
+<p>For example, we can provide an alternative definition for <code>HelloWorldBot</code> like this:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="prettyprint highlight"><code data-lang="groovy">class HelloWorldBot extends StaticDispatchActor&lt;Greeted&gt; {
+    int max
+    private int greetingCounter = 0
+
+    @Override
+    void onMessage(Greeted message) {
+        greetingCounter++
+        println "Greeting $greetingCounter for $message.whom"
+        if (greetingCounter &lt; max) message.from &lt;&lt; new Greet(message.whom, this)
+        else terminate()
+    }
+}</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The <code>StaticDispatchActor</code> dispatches the message solely based on the compile-time information.
+This can be more efficient when dispatching based on message run-time type is not necessary.</p>
+</div>
+<div class="paragraph">
+<p>We could also provide an alternative definition for <code>Greet</code> as follows:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="prettyprint highlight"><code data-lang="groovy">record Greet(String whom, StaticDispatchActor&lt;Greeted&gt; replyTo) { }</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>With changes like these in place we can code a solution with additional message type safety
+when using Groovy&#8217;s static nature.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
 <h2 id="_conclusion">Conclusion</h2>
 <div class="sectionbody">
 <div class="paragraph">
diff --git a/blog/index.html b/blog/index.html
index 4bc86c2..d786af5 100644
--- a/blog/index.html
+++ b/blog/index.html
@@ -53,7 +53,7 @@
                                     </ul>
                                 </div>
                             </div>
-                        </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3' id='blog-index'><ul class='nav-sidebar list'><li class='active'><a href='/blog/'>Blogs</a></li><li><a href='groovy-pekko-gpars'>Using Apache Pekko actors and GPars actors with Groovy</a></li><li><a href='groovy-dauphine'>Processing Results for the Critérium du Dauphiné</a></li><li><a href='create-groovy-blog'>Creating a Groovy Blog Post</a></li><li><a href='groovy-record-performance'>Groovy Record Performance</a></li><li><a href='groovy-sequenced-collections'>Groovy and Sequenced Collections (JEP-431)</a></li><li><a href='lego-bricks-with-groovy'>Lego Bricks with Groovy</a></li><li><a href='helloworldemoji'>Hello World with Emojis</a></li><li><a href='groovy-records'>Groovy Records</a></li><li><a href='groovy-haiku-processing'>Groovy Haiku processing</a></li><li><a href='testing_permutations_combinations'>Groovy Testing with Combinations and Permutations</a></li><li><a href='apache-nlpcraft-with-groovy'>Converting natural language into actions with NLPCraft and Groovy</a></li><li><a href='quake3-inverse-square-root'>Quake III Arena and the fast inverse square root algorithm</a></li><li><a href='australian-timezones'>Australian Time Zones</a></li><li><a href='wordle-checker'>Checking Wordle with Groovy</a></li><li><a href='groovy-null-processing'>Groovy Processing Nulls In Lists</a></li><li><a href='groundhog-day'>Groundhog Day</a></li><li><a href='fun-with-rating-stars'>Fun with rating stars</a></li><li><a href='apache-groovy-2022-year-in'>Apache Groovy 2022 Year In Review</a></li><li><a href='jvm-hello-world-with-groovy'>JVM Hello World with Groovy</a></li><li><a href='adventures-with-groovyfx'>Adventures with GroovyFX</a></li><li><a href='fun-with-obfuscated-groovy'>Fun with obfuscated Groovy</a></li><li><a href='zipping-collections-with-groovy'>Zipping Collections with Groovy</a></li><li><a href='whiskey-clustering-with-groovy-and'>Whiskey Clustering with Groovy and Apache Ignite</a></li><li><a href='groovy-dates-and-times-cheat'>Groovy Dates And Times Cheat Sheet</a></li><li><a href='fruity-eclipse-collections'>Fruity Eclipse Collections</a></li><li><a href='deep-learning-and-eclipse-collections'>Deep Learning and Eclipse Collections</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='encryption-and-decryption-with-groovy'>Encryption and decryption with Groovy</a></li><li><a href='calculating-fibonacci-with-groovy-revisited'>Calculating Fibonacci with Groovy revisited</a></li><li><a href='solving-cryptarithmetic-puzzles-with-groovy'>Solving cryptarithmetic puzzles with Groovy and constraint programming using Choco, JaCoP, and OR-Tools</a></li><li><a href='groovy-list-processing-cheat-sheet'>Groovy List Processing Cheat Sheet</a></li><li><a href='matrix-calculations-with-groovy-apache'>Matrix calculations with Groovy, Apache Commons Math, ojAlgo, Nd4j and EJML</a></li><li><a href='life-on-mars-units-of'>Life on Mars: Units of Measurement systems, Groovy, and domain specific languages (DSLs)</a></li><li><a href='natural-language-processing-with-groovy'>Natural Language Processing with Groovy, OpenNLP, CoreNLP, Nlp4j, Datumbox, Smile, Spark NLP, DJL and TensorFlow</a></li><li><a href='detecting-objects-with-groovy-the'>Detecting objects with Groovy, the Deep Java Library (DJL), and Apache MXNet</a></li><li><a href='working-with-sql-databases-with'>Working with SQL databases with Groovy and GraalVM</a></li><li><a href='reading-and-writing-csv-files'>Reading and Writing CSV files with Groovy</a></li><li><a href='groovy-release-train-4-0'>Groovy release train: 4.0.4, 3.0.12, 2.5.18</a></li><li><a href='comparators-and-sorting-in-groovy'>Comparators and Sorting in Groovy</a></li><li><a href='testing-your-java-with-groovy'>Testing your Java with Groovy, Spock, JUnit5, Jacoco, Jqwik and Pitest</a></li><li><a href='parsing-json-with-groovy'>Parsing JSON with Groovy</a></li><li><a href='classifying-iris-flowers-with-deep'>Classifying Iris Flowers with Deep Learning, Groovy and GraalVM</a></li><li><a href='using-groovy-with-apache-wayang'>Using Groovy with Apache Wayang and Apache Spark</a></li><li><a href='gpars-meets-virtual-threads'>GPars meets Virtual Threads</a></li><li><a href='groovy-4-0-3-released'>Groovy 4.0.3 Released</a></li><li><a href='groovy-3-highlights'>Groovy 3 Highlights</a></li><li><a href='groovy-3-0-0-beta2'>Groovy 3.0.0-beta-2 Windows Installer Released (Community Release)</a></li><li><a href='groovy-3-0-0-beta1'>Groovy 3.0.0-beta-2 Released</a></li><li><a href='groovy-2-5-7-and'>Groovy 2.5.7 and 3.0.0-beta-1 Windows Installers Released (Community Artifacts)</a></li><li><a href='groovy-3-0-0-beta'>Groovy 3.0.0-beta-1 Released</a></li><li><a href='groovy-2-5-7-released'>Groovy 2.5.7 Released</a></li><li><a href='groovy-2-4-17-released'>Groovy 2.4.17 Released</a></li><li><a href='groovy-2-5-6-released'>Groovy 2.5.6 Released</a></li><li><a href='groovy-3-0-0-alpha1'>Groovy 3.0.0-alpha-4 Windows Installer Released (Community Artifact)</a></li><li><a href='groovy-3-0-0-alpha'>Groovy 3.0.0-alpha-4 Released</a></li><li><a href='groovy-2-5-5-windows'>Groovy 2.5.5 Windows Installer Released (Community Artifact)</a></li><li><a href='groovy-2-5-5-released'>Groovy 2.5.5 released</a></li><li><a href='groovy-2-4-16-windows'>Groovy 2.4.16 Windows Installer Released (Community Artifact)</a></li><li><a href='groovy-2-4-16-released'>Groovy 2.4.16 Released</a></li><li><a href='groovy-2-5-4-windows'>Groovy 2.5.4 Windows Installer Released (Community Artifact)</a></li><li><a href='groovy-2-5-4-released'>Groovy 2.5.4 Released</a></li><li><a href='apache-groovy-committer-graeme-rocher'>Apache Groovy committer Graeme Rocher receives Oracle Groundbreaker award</a></li><li><a href='gmavenplus-1-6-2-released'>GMavenPlus 1.6.2 Released (Community Artifact)</a></li><li><a href='groovy-2-5-3-windows'>Groovy 2.5.3 Windows Installer Released (Community Artifact)</a></li><li><a href='groovy-2-5-3-released'>Groovy 2.5.3 Released</a></li><li><a href='groovy-2-5-2-windows'>Groovy 2.5.2 Windows Installer Released (Community Artifact)</a></li><li><a href='groovy-2-5-2-released'>Groovy 2.5.2 released</a></li><li><a href='groovy-2-5-1-released'>Groovy 2.5.1 released</a></li><li><a href='announce-announcing-codenarc-1-2'>Announcing CodeNarc 1.2</a></li><li><a href='groovy-2-5-clibuilder-renewal'>Apache Groovy 2.5 CliBuilder Renewal</a></li><li><a href='groovy-2-5-0-released'>Groovy 2.5.0 released</a></li></ul><ul class='pagination'/></div><div class='col-lg-8 col-lg-pull-0'><h1>Blogs for Groovy</h1><div id='chartdiv'></div><p>Here you can find the Blogs for the Groovy programming language:</p><div id='blog-list'><div><span>Search: </span><input type='text' class='search'/></div><ul class='list'><li><p class='name'><a href='groovy-pekko-gpars'>Using Apache Pekko actors and GPars actors with Groovy</a><br/>Published by Paul King on 2023-07-17 11:24PM<br/>This post looks at using Apache Pekko Actors and GPars Actors with Groovy.</p></li><li><p class='name'><a href='groovy-dauphine'>Processing Results for the Critérium du Dauphiné</a><br/>Published by Paul King on 2023-06-13 05:00PM<br/>This post looks at processing the general classification results for the Critérium du Dauphiné using Groovy, GQuery and DuckDB.</p></li><li><p class='name'><a href='create-groovy-blog'>Creating a Groovy Blog Post</a><br/>Published by Paul King on 2023-05-25 11:35PM<br/>This post looks at the steps to create a blog post.</p></li><li><p class='name'><a href='groovy-record-performance'>Groovy Record Performance</a><br/>Published by Paul King on 2023-05-09 11:39PM<br/>Last updated: 2023-05-10 07:57PM<br/>This post looks at the performance of some of the generated methods in Groovy records.</p></li><li><p class='name'><a href='groovy-sequenced-collections'>Groovy and Sequenced Collections (JEP-431)</a><br/>Published by Paul King on 2023-04-29 09:00AM<br/>This post looks at Groovy support for sequenced collections.</p></li><li><p class='name'><a href='lego-bricks-with-groovy'>Lego Bricks with Groovy</a><br/>Published by Paul King on 2023-04-25 11:28PM<br/>Last updated: 2023-04-27 10:42PM<br/>This post compares Groovy built-in capabilities to Java and Eclipse Collections.</p></li><li><p class='name'><a href='helloworldemoji'>Hello World with Emojis</a><br/>Published by Paul King on 2023-04-04 12:24PM<br/>This post looks at a Groovy hello world with some emoji fun.</p></li><li><p class='name'><a href='groovy-records'>Groovy Records</a><br/>Published by Paul King on 2023-04-02 08:22PM<br/>This blog looks at Groovy records.</p></li><li><p class='name'><a href='groovy-haiku-processing'>Groovy Haiku processing</a><br/>Published by Paul King on 2023-11-07 07:22PM<br/>This blog looks at processing some creative writing looking at various properties of the letters within the text.</p></li><li><p class='name'><a href='testing_permutations_combinations'>Groovy Testing with Combinations and Permutations</a><br/>Published by Paul King on 2023-03-19 05:23PM<br/>This blog looks at testing with Groovy using Combinations and Permutations.</p></li><li><p class='name'><a href='apache-nlpcraft-with-groovy'>Converting natural language into actions with NLPCraft and Groovy</a><br/>Published by Paul King on 2023-03-10 07:22PM<br/>Last updated: 2023-03-13 01:32PM<br/>This blog looks at using Apache NLPCraft from Groovy.</p></li><li><p class='name'><a href='quake3-inverse-square-root'>Quake III Arena and the fast inverse square root algorithm</a><br/>Published by Paul King on 2023-02-28 12:05AM<br/>Inspired by a recent tweet, this blog looks at the fast inverse square root algorithm made famous in Quake III Arena.</p></li><li><p class='name'><a href='australian-timezones'>Australian Time Zones</a><br/>Published by Paul King on 2023-02-20 08:00PM<br/>Inspired by a recent update related to Antarctic timezones, this post looks at some interesting Australian time zone facts.</p></li><li><p class='name'><a href='wordle-checker'>Checking Wordle with Groovy</a><br/>Published by Paul King on 2023-02-08 12:00AM<br/>This post looks at writing a Wordle checker in Groovy.</p></li><li><p class='name'><a href='groovy-null-processing'>Groovy Processing Nulls In Lists</a><br/>Published by Paul King on 2023-02-06 12:00AM<br/>This post looks at processing lists containing nulls in Groovy.</p></li><li><p class='name'><a href='groundhog-day'>Groundhog Day</a><br/>Published by Paul King on 2023-02-02 12:00AM<br/>Inspired by a recent tweet, this blog looks at some datetime manipulations to calculate the period between Groundhog day and the start of Spring.</p></li><li><p class='name'><a href='fun-with-rating-stars'>Fun with rating stars</a><br/>Published by Paul King on 2023-01-25 12:00AM<br/>Inspired by a recent tweet, this blog looks at producing a string of stars corresponding to a rating.</p></li><li><p class='name'><a href='apache-groovy-2022-year-in'>Apache Groovy 2022 Year In Review</a><br/>Published by Paul King on 2022-12-29 02:28PM<br/>This post looks back at some highlights for Groovy in 2022.</p></li><li><p class='name'><a href='jvm-hello-world-with-groovy'>JVM Hello World with Groovy</a><br/>Published by Paul King on 2022-12-22 02:24PM<br/>This post looks at using bytecode libraries to generate class files. It&apos;s a deep dive into how compilers and other tools work behind the scenes.</p></li><li><p class='name'><a href='adventures-with-groovyfx'>Adventures with GroovyFX</a><br/>Published by Paul King on 2022-12-12 02:22PM<br/>This blog looks at a GroovyFX TODO application.</p></li><li><p class='name'><a href='fun-with-obfuscated-groovy'>Fun with obfuscated Groovy</a><br/>Published by Paul King on 2022-12-08 12:40AM<br/>This post looks at some Obfuscated code for outputting some well-known text.</p></li><li><p class='name'><a href='zipping-collections-with-groovy'>Zipping Collections with Groovy</a><br/>Published by Paul King on 2022-11-17 12:50PM<br/>This post looks at zipping collections.</p></li><li><p class='name'><a href='whiskey-clustering-with-groovy-and'>Whiskey Clustering with Groovy and Apache Ignite</a><br/>Published by Paul King on 2022-10-27 11:13AM<br/>This post looks at using Apache Ignite with Apache Groovy and the K-Means algorithm to cluster scotch whiskeys.</p></li><li><p class='name'><a href='groovy-dates-and-times-cheat'>Groovy Dates And Times Cheat Sheet</a><br/>Published by Paul King on 2022-10-24 07:27AM<br/>This post looks at data and time functionality in Groovy including classic and Java date time, JSR310, functionality.</p></li><li><p class='name'><a href='fruity-eclipse-collections'>Fruity Eclipse Collections</a><br/>Published by Paul King on 2022-10-13 11:05AM<br/>This post looks at using KMeans to compare fruit nominated color with the colors used in its emoji.</p></li><li><p class='name'><a href='deep-learning-and-eclipse-collections'>Deep Learning and Eclipse Collections</a><br/>Published by Paul King on 2022-10-11 10:41AM<br/>This post uses Emojis and Eclipse Collections to process pet records. We then use deep learning to predict whether each emoji looks like a dog or cat.</p></li><li><p class='name'><a href='deck-of-cards-with-groovy'>Deck of cards with Groovy, JDK collections and Eclipse Collections</a><br/>Published by Paul King on 2022-09-23 10:18AM<br/>Last updated: 2022-09-25 11:15AM<br/>This post highlights some code for modelling and manipulating cards with records, JDK collections, and Eclipse Collections.</p></li><li><p class='name'><a href='encryption-and-decryption-with-groovy'>Encryption and decryption with Groovy</a><br/>Published by Paul King on 2022-09-19 02:34PM<br/>This post looks at encrypting and decrypting data using Groovy with the AES and CAST5 algorithms.</p></li><li><p class='name'><a href='calculating-fibonacci-with-groovy-revisited'>Calculating Fibonacci with Groovy revisited</a><br/>Published by Paul King on 2022-09-08 10:59AM<br/>This post looks at various ways to calculate Fibonacci numbers such as recursion and iteration including optimisations like tail recursion and memoization.</p></li><li><p class='name'><a href='solving-cryptarithmetic-puzzles-with-groovy'>Solving cryptarithmetic puzzles with Groovy and constraint programming using Choco, JaCoP, and OR-Tools</a><br/>Published by Paul King on 2022-09-05 01:43PM<br/>This post looks at solving cryptarithmetic puzzles using Groovy.</p></li><li><p class='name'><a href='groovy-list-processing-cheat-sheet'>Groovy List Processing Cheat Sheet</a><br/>Published by Paul King on 2022-08-28 08:46AM<br/>This post looks at the common Groovy features for processing lists.</p></li><li><p class='name'><a href='matrix-calculations-with-groovy-apache'>Matrix calculations with Groovy, Apache Commons Math, ojAlgo, Nd4j and EJML</a><br/>Published by Paul King on 2022-08-18 01:41PM<br/>This post looks at using Groovy to write a number of applications involving matrices. It uses a number of open source matrix libraries.</p></li><li><p class='name'><a href='life-on-mars-units-of'>Life on Mars: Units of Measurement systems, Groovy, and domain specific languages (DSLs)</a><br/>Published by Paul King on 2022-08-13 06:31AM<br/>This post looks at using the JSR 385 unit of measurement system and writing domain specific languages with examples including the Mars rover robot.</p></li><li><p class='name'><a href='natural-language-processing-with-groovy'>Natural Language Processing with Groovy, OpenNLP, CoreNLP, Nlp4j, Datumbox, Smile, Spark NLP, DJL and TensorFlow</a><br/>Published by Paul King on 2022-08-07 07:34AM<br/>This post looks at numerous common natural language processing tasks using Groovy and a range of NLP libraries.</p></li><li><p class='name'><a href='detecting-objects-with-groovy-the'>Detecting objects with Groovy, the Deep Java Library (DJL), and Apache MXNet</a><br/>Published by Paul King on 2022-08-01 11:52AM<br/>This post looks at using Apache Groovy, DLJ and Apache MXNet to use neural networks to detect objects within an image.</p></li><li><p class='name'><a href='working-with-sql-databases-with'>Working with SQL databases with Groovy and GraalVM</a><br/>Published by Paul King on 2022-07-29 02:07PM<br/>This post looks at a simple H2 database application. It shows how to create a native version of the application using GraalVM.</p></li><li><p class='name'><a href='reading-and-writing-csv-files'>Reading and Writing CSV files with Groovy</a><br/>Published by Paul King on 2022-07-25 02:26PM<br/>This post looks at processing CSV files using OpenCSV, Commons CSV, and Jackson Databind libraries.</p></li><li><p class='name'><a href='groovy-release-train-4-0'>Groovy release train: 4.0.4, 3.0.12, 2.5.18</a><br/>Published by Paul King on 2022-07-24 12:55PM<br/>Groovy 4.0.4, 3.0.12 and 2.5.18 Release Announcement.</p></li><li><p class='name'><a href='comparators-and-sorting-in-groovy'>Comparators and Sorting in Groovy</a><br/>Published by Paul King on 2022-07-21 03:51PM<br/>This post looks at Groovy functionality for making your classes comparable and/or sortable.</p></li><li><p class='name'><a href='testing-your-java-with-groovy'>Testing your Java with Groovy, Spock, JUnit5, Jacoco, Jqwik and Pitest</a><br/>Published by Paul King on 2022-07-15 08:26AM<br/>This post looks at testing Java using Groovy, Spock, JUnit5, Jacoco, Jqwik and Pitest</p></li><li><p class='name'><a href='parsing-json-with-groovy'>Parsing JSON with Groovy</a><br/>Published by Paul King on 2022-07-10 02:00PM<br/>This post looks at parsing JSON using Groovy&apos;s in-built capabilities as well as some other libraries.</p></li><li><p class='name'><a href='classifying-iris-flowers-with-deep'>Classifying Iris Flowers with Deep Learning, Groovy and GraalVM</a><br/>Published by Paul King on 2022-06-25 10:52AM<br/>Last updated: 2022-06-27 11:16AM<br/>This post looks at classifying Iris flowers using traditional and neural net based approaches using Eclipse DeepLearning4j, Encog, Deep Netts and GraalVM.</p></li><li><p class='name'><a href='using-groovy-with-apache-wayang'>Using Groovy with Apache Wayang and Apache Spark</a><br/>Published by Paul King on 2022-06-19 01:01PM<br/>This post looks at using Apache Wayang and Apache Spark with Apache Groovy to cluster various Whiskies.</p></li><li><p class='name'><a href='gpars-meets-virtual-threads'>GPars meets Virtual Threads</a><br/>Published by Paul King on 2022-06-15 11:28AM<br/>Last updated: 2023-04-14 06:23PM<br/>This post looks at using GPars with virtual threads.</p></li><li><p class='name'><a href='groovy-4-0-3-released'>Groovy 4.0.3 Released</a><br/>Published by Paul King on 2022-06-15 08:16AM<br/>Groovy 4.0.3 Release Announcement.</p></li><li><p class='name'><a href='groovy-3-highlights'>Groovy 3 Highlights</a><br/>Published by Paul King on 2020-02-13 02:28AM<br/>A summary of the highlights for Groovy 3.</p></li><li><p class='name'><a href='groovy-3-0-0-beta2'>Groovy 3.0.0-beta-2 Windows Installer Released (Community Release)</a><br/>Published by Remko Popma on 2019-07-15 10:30AM<br/>Groovy 3.0.0-beta-2 Windows Installer Release Announcement.</p></li><li><p class='name'><a href='groovy-3-0-0-beta1'>Groovy 3.0.0-beta-2 Released</a><br/>Published by Remko Popma on 2019-07-15 10:25AM<br/>Groovy 3.0.0-beta-2 Release Announcement.</p></li><li><p class='name'><a href='groovy-2-5-7-and'>Groovy 2.5.7 and 3.0.0-beta-1 Windows Installers Released (Community Artifacts)</a><br/>Published by Remko Popma on 2019-05-12 10:49PM<br/>Groovy 2.5.7 and 3.0.0-beta-1 Windows Installer Release Announcement.</p></li><li><p class='name'><a href='groovy-3-0-0-beta'>Groovy 3.0.0-beta-1 Released</a><br/>Published by Remko Popma on 2019-05-12 10:41PM<br/>Groovy 3.0.0-beta-1 Release Announcement.</p></li><li><p class='name'><a href='groovy-2-5-7-released'>Groovy 2.5.7 Released</a><br/>Published by Remko Popma on 2019-05-12 10:39PM<br/>Groovy 2.5.7 Release Announcement.</p></li><li><p class='name'><a href='groovy-2-4-17-released'>Groovy 2.4.17 Released</a><br/>Published by Remko Popma on 2019-05-12 10:32PM<br/>Groovy 2.4.17 Release Announcement.</p></li><li><p class='name'><a href='groovy-2-5-6-released'>Groovy 2.5.6 Released</a><br/>Published by Remko Popma on 2019-02-04 10:19PM<br/>Groovy 2.5.6 Release Announcement.</p></li><li><p class='name'><a href='groovy-3-0-0-alpha1'>Groovy 3.0.0-alpha-4 Windows Installer Released (Community Artifact)</a><br/>Published by Remko Popma on 2019-01-01 09:28AM<br/>Groovy 2.4.16 Windows Installer Release Announcement.</p></li><li><p class='name'><a href='groovy-3-0-0-alpha'>Groovy 3.0.0-alpha-4 Released</a><br/>Published by Remko Popma on 2019-01-01 09:24AM<br/>Groovy 3.0.0-alpha-4 Release Announcement.</p></li><li><p class='name'><a href='groovy-2-5-5-windows'>Groovy 2.5.5 Windows Installer Released (Community Artifact)</a><br/>Published by Remko Popma on 2018-12-24 10:02PM<br/>Groovy 2.5.5 Windows Installer Release Announcement.</p></li><li><p class='name'><a href='groovy-2-5-5-released'>Groovy 2.5.5 released</a><br/>Published by Remko Popma on 2018-12-24 11:53AM<br/>Groovy 2.5.5 Release Announcement.</p></li><li><p class='name'><a href='groovy-2-4-16-windows'>Groovy 2.4.16 Windows Installer Released (Community Artifact)</a><br/>Published by Remko Popma on 2018-12-18 10:06PM<br/>Groovy 2.4.16 Windows Installer Release Announcement.</p></li><li><p class='name'><a href='groovy-2-4-16-released'>Groovy 2.4.16 Released</a><br/>Published by Remko Popma on 2018-12-18 10:04PM<br/>Groovy 2.4.16 Release Announcement.</p></li><li><p class='name'><a href='groovy-2-5-4-windows'>Groovy 2.5.4 Windows Installer Released (Community Artifact)</a><br/>Published by Remko Popma on 2018-11-12 11:43AM<br/>Groovy 2.5.4 Windows Installer Release Announcement.</p></li><li><p class='name'><a href='groovy-2-5-4-released'>Groovy 2.5.4 Released</a><br/>Published by Remko Popma on 2018-11-12 11:42AM<br/>Groovy 2.5.4 Release Announcement.</p></li><li><p class='name'><a href='apache-groovy-committer-graeme-rocher'>Apache Groovy committer Graeme Rocher receives Oracle Groundbreaker award</a><br/>Published by Paul King on 2018-10-24 11:33PM<br/>Congratulations to Graeme Rocher for receiving the Oracle Groundbreaker award.</p></li><li><p class='name'><a href='gmavenplus-1-6-2-released'>GMavenPlus 1.6.2 Released (Community Artifact)</a><br/>Published by Remko Popma on 2018-10-14 10:00PM<br/>GMavenPlus 1.6.2 Release Announcement.</p></li><li><p class='name'><a href='groovy-2-5-3-windows'>Groovy 2.5.3 Windows Installer Released (Community Artifact)</a><br/>Published by Remko Popma on 2018-10-14 09:47PM<br/>Groovy 2.5.3 Windows Installer Release Announcement.</p></li><li><p class='name'><a href='groovy-2-5-3-released'>Groovy 2.5.3 Released</a><br/>Published by Remko Popma on 2018-10-14 09:43PM<br/>Groovy 2.5.3 Release Announcement.</p></li><li><p class='name'><a href='groovy-2-5-2-windows'>Groovy 2.5.2 Windows Installer Released (Community Artifact)</a><br/>Published by Remko Popma on 2018-08-19 09:50AM<br/>Groovy 2.5.2 Windows Installer Release Announcement.</p></li><li><p class='name'><a href='groovy-2-5-2-released'>Groovy 2.5.2 released</a><br/>Published by Remko Popma on 2018-08-16 02:52AM<br/>Groovy 2.5.2 Release Announcement.</p></li><li><p class='name'><a href='groovy-2-5-1-released'>Groovy 2.5.1 released</a><br/>Published by Remko Popma on 2018-07-14 02:18AM<br/>Groovy 2.5.1 Release Announcement.</p></li><li><p class='name'><a href='announce-announcing-codenarc-1-2'>Announcing CodeNarc 1.2</a><br/>Published by Remko Popma on 2018-07-10 10:16AM<br/>CodeNarc 1.2 Release Announcement.</p></li><li><p class='name'><a href='groovy-2-5-clibuilder-renewal'>Apache Groovy 2.5 CliBuilder Renewal</a><br/>Published by Remko Popma on 2018-05-30 11:28AM<br/>This post looks at new CliBuilder features from Groovy 2.5 in particular the Picocli-based implementation.</p></li><li><p class='name'><a href='groovy-2-5-0-released'>Groovy 2.5.0 released</a><br/>Published by Remko Popma on 2018-05-30 11:28AM<br/>Groovy 2.5.0 Release Announcement.</p></li></ul><ul class='pagination'/></div></div></div></div></div><footer id='footer'>
+                        </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3' id='blog-index'><ul class='nav-sidebar list'><li class='active'><a href='/blog/'>Blogs</a></li><li><a href='groovy-pekko-gpars'>Using Apache Pekko actors and GPars actors with Groovy</a></li><li><a href='groovy-dauphine'>Processing Results for the Critérium du Dauphiné</a></li><li><a href='create-groovy-blog'>Creating a Groovy Blog Post</a></li><li><a href='groovy-record-performance'>Groovy Record Performance</a></li><li><a href='groovy-sequenced-collections'>Groovy and Sequenced Collections (JEP-431)</a></li><li><a href='lego-bricks-with-groovy'>Lego Bricks with Groovy</a></li><li><a href='helloworldemoji'>Hello World with Emojis</a></li><li><a href='groovy-records'>Groovy Records</a></li><li><a href='groovy-haiku-processing'>Groovy Haiku processing</a></li><li><a href='testing_permutations_combinations'>Groovy Testing with Combinations and Permutations</a></li><li><a href='apache-nlpcraft-with-groovy'>Converting natural language into actions with NLPCraft and Groovy</a></li><li><a href='quake3-inverse-square-root'>Quake III Arena and the fast inverse square root algorithm</a></li><li><a href='australian-timezones'>Australian Time Zones</a></li><li><a href='wordle-checker'>Checking Wordle with Groovy</a></li><li><a href='groovy-null-processing'>Groovy Processing Nulls In Lists</a></li><li><a href='groundhog-day'>Groundhog Day</a></li><li><a href='fun-with-rating-stars'>Fun with rating stars</a></li><li><a href='apache-groovy-2022-year-in'>Apache Groovy 2022 Year In Review</a></li><li><a href='jvm-hello-world-with-groovy'>JVM Hello World with Groovy</a></li><li><a href='adventures-with-groovyfx'>Adventures with GroovyFX</a></li><li><a href='fun-with-obfuscated-groovy'>Fun with obfuscated Groovy</a></li><li><a href='zipping-collections-with-groovy'>Zipping Collections with Groovy</a></li><li><a href='whiskey-clustering-with-groovy-and'>Whiskey Clustering with Groovy and Apache Ignite</a></li><li><a href='groovy-dates-and-times-cheat'>Groovy Dates And Times Cheat Sheet</a></li><li><a href='fruity-eclipse-collections'>Fruity Eclipse Collections</a></li><li><a href='deep-learning-and-eclipse-collections'>Deep Learning and Eclipse Collections</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='encryption-and-decryption-with-groovy'>Encryption and decryption with Groovy</a></li><li><a href='calculating-fibonacci-with-groovy-revisited'>Calculating Fibonacci with Groovy revisited</a></li><li><a href='solving-cryptarithmetic-puzzles-with-groovy'>Solving cryptarithmetic puzzles with Groovy and constraint programming using Choco, JaCoP, and OR-Tools</a></li><li><a href='groovy-list-processing-cheat-sheet'>Groovy List Processing Cheat Sheet</a></li><li><a href='matrix-calculations-with-groovy-apache'>Matrix calculations with Groovy, Apache Commons Math, ojAlgo, Nd4j and EJML</a></li><li><a href='life-on-mars-units-of'>Life on Mars: Units of Measurement systems, Groovy, and domain specific languages (DSLs)</a></li><li><a href='natural-language-processing-with-groovy'>Natural Language Processing with Groovy, OpenNLP, CoreNLP, Nlp4j, Datumbox, Smile, Spark NLP, DJL and TensorFlow</a></li><li><a href='detecting-objects-with-groovy-the'>Detecting objects with Groovy, the Deep Java Library (DJL), and Apache MXNet</a></li><li><a href='working-with-sql-databases-with'>Working with SQL databases with Groovy and GraalVM</a></li><li><a href='reading-and-writing-csv-files'>Reading and Writing CSV files with Groovy</a></li><li><a href='groovy-release-train-4-0'>Groovy release train: 4.0.4, 3.0.12, 2.5.18</a></li><li><a href='comparators-and-sorting-in-groovy'>Comparators and Sorting in Groovy</a></li><li><a href='testing-your-java-with-groovy'>Testing your Java with Groovy, Spock, JUnit5, Jacoco, Jqwik and Pitest</a></li><li><a href='parsing-json-with-groovy'>Parsing JSON with Groovy</a></li><li><a href='classifying-iris-flowers-with-deep'>Classifying Iris Flowers with Deep Learning, Groovy and GraalVM</a></li><li><a href='using-groovy-with-apache-wayang'>Using Groovy with Apache Wayang and Apache Spark</a></li><li><a href='gpars-meets-virtual-threads'>GPars meets Virtual Threads</a></li><li><a href='groovy-4-0-3-released'>Groovy 4.0.3 Released</a></li><li><a href='groovy-3-highlights'>Groovy 3 Highlights</a></li><li><a href='groovy-3-0-0-beta2'>Groovy 3.0.0-beta-2 Windows Installer Released (Community Release)</a></li><li><a href='groovy-3-0-0-beta1'>Groovy 3.0.0-beta-2 Released</a></li><li><a href='groovy-2-5-7-and'>Groovy 2.5.7 and 3.0.0-beta-1 Windows Installers Released (Community Artifacts)</a></li><li><a href='groovy-3-0-0-beta'>Groovy 3.0.0-beta-1 Released</a></li><li><a href='groovy-2-5-7-released'>Groovy 2.5.7 Released</a></li><li><a href='groovy-2-4-17-released'>Groovy 2.4.17 Released</a></li><li><a href='groovy-2-5-6-released'>Groovy 2.5.6 Released</a></li><li><a href='groovy-3-0-0-alpha1'>Groovy 3.0.0-alpha-4 Windows Installer Released (Community Artifact)</a></li><li><a href='groovy-3-0-0-alpha'>Groovy 3.0.0-alpha-4 Released</a></li><li><a href='groovy-2-5-5-windows'>Groovy 2.5.5 Windows Installer Released (Community Artifact)</a></li><li><a href='groovy-2-5-5-released'>Groovy 2.5.5 released</a></li><li><a href='groovy-2-4-16-windows'>Groovy 2.4.16 Windows Installer Released (Community Artifact)</a></li><li><a href='groovy-2-4-16-released'>Groovy 2.4.16 Released</a></li><li><a href='groovy-2-5-4-windows'>Groovy 2.5.4 Windows Installer Released (Community Artifact)</a></li><li><a href='groovy-2-5-4-released'>Groovy 2.5.4 Released</a></li><li><a href='apache-groovy-committer-graeme-rocher'>Apache Groovy committer Graeme Rocher receives Oracle Groundbreaker award</a></li><li><a href='gmavenplus-1-6-2-released'>GMavenPlus 1.6.2 Released (Community Artifact)</a></li><li><a href='groovy-2-5-3-windows'>Groovy 2.5.3 Windows Installer Released (Community Artifact)</a></li><li><a href='groovy-2-5-3-released'>Groovy 2.5.3 Released</a></li><li><a href='groovy-2-5-2-windows'>Groovy 2.5.2 Windows Installer Released (Community Artifact)</a></li><li><a href='groovy-2-5-2-released'>Groovy 2.5.2 released</a></li><li><a href='groovy-2-5-1-released'>Groovy 2.5.1 released</a></li><li><a href='announce-announcing-codenarc-1-2'>Announcing CodeNarc 1.2</a></li><li><a href='groovy-2-5-clibuilder-renewal'>Apache Groovy 2.5 CliBuilder Renewal</a></li><li><a href='groovy-2-5-0-released'>Groovy 2.5.0 released</a></li></ul><ul class='pagination'/></div><div class='col-lg-8 col-lg-pull-0'><h1>Blogs for Groovy</h1><div id='chartdiv'></div><p>Here you can find the Blogs for the Groovy programming language:</p><div id='blog-list'><div><span>Search: </span><input type='text' class='search'/></div><ul class='list'><li><p class='name'><a href='groovy-pekko-gpars'>Using Apache Pekko actors and GPars actors with Groovy</a><br/>Published by Paul King on 2023-07-17 11:24PM<br/>Last updated: 2023-07-18 06:45PM<br/>This post looks at using Apache Pekko Actors and GPars Actors with Groovy.</p></li><li><p class='name'><a href='groovy-dauphine'>Processing Results for the Critérium du Dauphiné</a><br/>Published by Paul King on 2023-06-13 05:00PM<br/>This post looks at processing the general classification results for the Critérium du Dauphiné using Groovy, GQuery and DuckDB.</p></li><li><p class='name'><a href='create-groovy-blog'>Creating a Groovy Blog Post</a><br/>Published by Paul King on 2023-05-25 11:35PM<br/>This post looks at the steps to create a blog post.</p></li><li><p class='name'><a href='groovy-record-performance'>Groovy Record Performance</a><br/>Published by Paul King on 2023-05-09 11:39PM<br/>Last updated: 2023-05-10 07:57PM<br/>This post looks at the performance of some of the generated methods in Groovy records.</p></li><li><p class='name'><a href='groovy-sequenced-collections'>Groovy and Sequenced Collections (JEP-431)</a><br/>Published by Paul King on 2023-04-29 09:00AM<br/>This post looks at Groovy support for sequenced collections.</p></li><li><p class='name'><a href='lego-bricks-with-groovy'>Lego Bricks with Groovy</a><br/>Published by Paul King on 2023-04-25 11:28PM<br/>Last updated: 2023-04-27 10:42PM<br/>This post compares Groovy built-in capabilities to Java and Eclipse Collections.</p></li><li><p class='name'><a href='helloworldemoji'>Hello World with Emojis</a><br/>Published by Paul King on 2023-04-04 12:24PM<br/>This post looks at a Groovy hello world with some emoji fun.</p></li><li><p class='name'><a href='groovy-records'>Groovy Records</a><br/>Published by Paul King on 2023-04-02 08:22PM<br/>This blog looks at Groovy records.</p></li><li><p class='name'><a href='groovy-haiku-processing'>Groovy Haiku processing</a><br/>Published by Paul King on 2023-11-07 07:22PM<br/>This blog looks at processing some creative writing looking at various properties of the letters within the text.</p></li><li><p class='name'><a href='testing_permutations_combinations'>Groovy Testing with Combinations and Permutations</a><br/>Published by Paul King on 2023-03-19 05:23PM<br/>This blog looks at testing with Groovy using Combinations and Permutations.</p></li><li><p class='name'><a href='apache-nlpcraft-with-groovy'>Converting natural language into actions with NLPCraft and Groovy</a><br/>Published by Paul King on 2023-03-10 07:22PM<br/>Last updated: 2023-03-13 01:32PM<br/>This blog looks at using Apache NLPCraft from Groovy.</p></li><li><p class='name'><a href='quake3-inverse-square-root'>Quake III Arena and the fast inverse square root algorithm</a><br/>Published by Paul King on 2023-02-28 12:05AM<br/>Inspired by a recent tweet, this blog looks at the fast inverse square root algorithm made famous in Quake III Arena.</p></li><li><p class='name'><a href='australian-timezones'>Australian Time Zones</a><br/>Published by Paul King on 2023-02-20 08:00PM<br/>Inspired by a recent update related to Antarctic timezones, this post looks at some interesting Australian time zone facts.</p></li><li><p class='name'><a href='wordle-checker'>Checking Wordle with Groovy</a><br/>Published by Paul King on 2023-02-08 12:00AM<br/>This post looks at writing a Wordle checker in Groovy.</p></li><li><p class='name'><a href='groovy-null-processing'>Groovy Processing Nulls In Lists</a><br/>Published by Paul King on 2023-02-06 12:00AM<br/>This post looks at processing lists containing nulls in Groovy.</p></li><li><p class='name'><a href='groundhog-day'>Groundhog Day</a><br/>Published by Paul King on 2023-02-02 12:00AM<br/>Inspired by a recent tweet, this blog looks at some datetime manipulations to calculate the period between Groundhog day and the start of Spring.</p></li><li><p class='name'><a href='fun-with-rating-stars'>Fun with rating stars</a><br/>Published by Paul King on 2023-01-25 12:00AM<br/>Inspired by a recent tweet, this blog looks at producing a string of stars corresponding to a rating.</p></li><li><p class='name'><a href='apache-groovy-2022-year-in'>Apache Groovy 2022 Year In Review</a><br/>Published by Paul King on 2022-12-29 02:28PM<br/>This post looks back at some highlights for Groovy in 2022.</p></li><li><p class='name'><a href='jvm-hello-world-with-groovy'>JVM Hello World with Groovy</a><br/>Published by Paul King on 2022-12-22 02:24PM<br/>This post looks at using bytecode libraries to generate class files. It&apos;s a deep dive into how compilers and other tools work behind the scenes.</p></li><li><p class='name'><a href='adventures-with-groovyfx'>Adventures with GroovyFX</a><br/>Published by Paul King on 2022-12-12 02:22PM<br/>This blog looks at a GroovyFX TODO application.</p></li><li><p class='name'><a href='fun-with-obfuscated-groovy'>Fun with obfuscated Groovy</a><br/>Published by Paul King on 2022-12-08 12:40AM<br/>This post looks at some Obfuscated code for outputting some well-known text.</p></li><li><p class='name'><a href='zipping-collections-with-groovy'>Zipping Collections with Groovy</a><br/>Published by Paul King on 2022-11-17 12:50PM<br/>This post looks at zipping collections.</p></li><li><p class='name'><a href='whiskey-clustering-with-groovy-and'>Whiskey Clustering with Groovy and Apache Ignite</a><br/>Published by Paul King on 2022-10-27 11:13AM<br/>This post looks at using Apache Ignite with Apache Groovy and the K-Means algorithm to cluster scotch whiskeys.</p></li><li><p class='name'><a href='groovy-dates-and-times-cheat'>Groovy Dates And Times Cheat Sheet</a><br/>Published by Paul King on 2022-10-24 07:27AM<br/>This post looks at data and time functionality in Groovy including classic and Java date time, JSR310, functionality.</p></li><li><p class='name'><a href='fruity-eclipse-collections'>Fruity Eclipse Collections</a><br/>Published by Paul King on 2022-10-13 11:05AM<br/>This post looks at using KMeans to compare fruit nominated color with the colors used in its emoji.</p></li><li><p class='name'><a href='deep-learning-and-eclipse-collections'>Deep Learning and Eclipse Collections</a><br/>Published by Paul King on 2022-10-11 10:41AM<br/>This post uses Emojis and Eclipse Collections to process pet records. We then use deep learning to predict whether each emoji looks like a dog or cat.</p></li><li><p class='name'><a href='deck-of-cards-with-groovy'>Deck of cards with Groovy, JDK collections and Eclipse Collections</a><br/>Published by Paul King on 2022-09-23 10:18AM<br/>Last updated: 2022-09-25 11:15AM<br/>This post highlights some code for modelling and manipulating cards with records, JDK collections, and Eclipse Collections.</p></li><li><p class='name'><a href='encryption-and-decryption-with-groovy'>Encryption and decryption with Groovy</a><br/>Published by Paul King on 2022-09-19 02:34PM<br/>This post looks at encrypting and decrypting data using Groovy with the AES and CAST5 algorithms.</p></li><li><p class='name'><a href='calculating-fibonacci-with-groovy-revisited'>Calculating Fibonacci with Groovy revisited</a><br/>Published by Paul King on 2022-09-08 10:59AM<br/>This post looks at various ways to calculate Fibonacci numbers such as recursion and iteration including optimisations like tail recursion and memoization.</p></li><li><p class='name'><a href='solving-cryptarithmetic-puzzles-with-groovy'>Solving cryptarithmetic puzzles with Groovy and constraint programming using Choco, JaCoP, and OR-Tools</a><br/>Published by Paul King on 2022-09-05 01:43PM<br/>This post looks at solving cryptarithmetic puzzles using Groovy.</p></li><li><p class='name'><a href='groovy-list-processing-cheat-sheet'>Groovy List Processing Cheat Sheet</a><br/>Published by Paul King on 2022-08-28 08:46AM<br/>This post looks at the common Groovy features for processing lists.</p></li><li><p class='name'><a href='matrix-calculations-with-groovy-apache'>Matrix calculations with Groovy, Apache Commons Math, ojAlgo, Nd4j and EJML</a><br/>Published by Paul King on 2022-08-18 01:41PM<br/>This post looks at using Groovy to write a number of applications involving matrices. It uses a number of open source matrix libraries.</p></li><li><p class='name'><a href='life-on-mars-units-of'>Life on Mars: Units of Measurement systems, Groovy, and domain specific languages (DSLs)</a><br/>Published by Paul King on 2022-08-13 06:31AM<br/>This post looks at using the JSR 385 unit of measurement system and writing domain specific languages with examples including the Mars rover robot.</p></li><li><p class='name'><a href='natural-language-processing-with-groovy'>Natural Language Processing with Groovy, OpenNLP, CoreNLP, Nlp4j, Datumbox, Smile, Spark NLP, DJL and TensorFlow</a><br/>Published by Paul King on 2022-08-07 07:34AM<br/>This post looks at numerous common natural language processing tasks using Groovy and a range of NLP libraries.</p></li><li><p class='name'><a href='detecting-objects-with-groovy-the'>Detecting objects with Groovy, the Deep Java Library (DJL), and Apache MXNet</a><br/>Published by Paul King on 2022-08-01 11:52AM<br/>This post looks at using Apache Groovy, DLJ and Apache MXNet to use neural networks to detect objects within an image.</p></li><li><p class='name'><a href='working-with-sql-databases-with'>Working with SQL databases with Groovy and GraalVM</a><br/>Published by Paul King on 2022-07-29 02:07PM<br/>This post looks at a simple H2 database application. It shows how to create a native version of the application using GraalVM.</p></li><li><p class='name'><a href='reading-and-writing-csv-files'>Reading and Writing CSV files with Groovy</a><br/>Published by Paul King on 2022-07-25 02:26PM<br/>This post looks at processing CSV files using OpenCSV, Commons CSV, and Jackson Databind libraries.</p></li><li><p class='name'><a href='groovy-release-train-4-0'>Groovy release train: 4.0.4, 3.0.12, 2.5.18</a><br/>Published by Paul King on 2022-07-24 12:55PM<br/>Groovy 4.0.4, 3.0.12 and 2.5.18 Release Announcement.</p></li><li><p class='name'><a href='comparators-and-sorting-in-groovy'>Comparators and Sorting in Groovy</a><br/>Published by Paul King on 2022-07-21 03:51PM<br/>This post looks at Groovy functionality for making your classes comparable and/or sortable.</p></li><li><p class='name'><a href='testing-your-java-with-groovy'>Testing your Java with Groovy, Spock, JUnit5, Jacoco, Jqwik and Pitest</a><br/>Published by Paul King on 2022-07-15 08:26AM<br/>This post looks at testing Java using Groovy, Spock, JUnit5, Jacoco, Jqwik and Pitest</p></li><li><p class='name'><a href='parsing-json-with-groovy'>Parsing JSON with Groovy</a><br/>Published by Paul King on 2022-07-10 02:00PM<br/>This post looks at parsing JSON using Groovy&apos;s in-built capabilities as well as some other libraries.</p></li><li><p class='name'><a href='classifying-iris-flowers-with-deep'>Classifying Iris Flowers with Deep Learning, Groovy and GraalVM</a><br/>Published by Paul King on 2022-06-25 10:52AM<br/>Last updated: 2022-06-27 11:16AM<br/>This post looks at classifying Iris flowers using traditional and neural net based approaches using Eclipse DeepLearning4j, Encog, Deep Netts and GraalVM.</p></li><li><p class='name'><a href='using-groovy-with-apache-wayang'>Using Groovy with Apache Wayang and Apache Spark</a><br/>Published by Paul King on 2022-06-19 01:01PM<br/>This post looks at using Apache Wayang and Apache Spark with Apache Groovy to cluster various Whiskies.</p></li><li><p class='name'><a href='gpars-meets-virtual-threads'>GPars meets Virtual Threads</a><br/>Published by Paul King on 2022-06-15 11:28AM<br/>Last updated: 2023-04-14 06:23PM<br/>This post looks at using GPars with virtual threads.</p></li><li><p class='name'><a href='groovy-4-0-3-released'>Groovy 4.0.3 Released</a><br/>Published by Paul King on 2022-06-15 08:16AM<br/>Groovy 4.0.3 Release Announcement.</p></li><li><p class='name'><a href='groovy-3-highlights'>Groovy 3 Highlights</a><br/>Published by Paul King on 2020-02-13 02:28AM<br/>A summary of the highlights for Groovy 3.</p></li><li><p class='name'><a href='groovy-3-0-0-beta2'>Groovy 3.0.0-beta-2 Windows Installer Released (Community Release)</a><br/>Published by Remko Popma on 2019-07-15 10:30AM<br/>Groovy 3.0.0-beta-2 Windows Installer Release Announcement.</p></li><li><p class='name'><a href='groovy-3-0-0-beta1'>Groovy 3.0.0-beta-2 Released</a><br/>Published by Remko Popma on 2019-07-15 10:25AM<br/>Groovy 3.0.0-beta-2 Release Announcement.</p></li><li><p class='name'><a href='groovy-2-5-7-and'>Groovy 2.5.7 and 3.0.0-beta-1 Windows Installers Released (Community Artifacts)</a><br/>Published by Remko Popma on 2019-05-12 10:49PM<br/>Groovy 2.5.7 and 3.0.0-beta-1 Windows Installer Release Announcement.</p></li><li><p class='name'><a href='groovy-3-0-0-beta'>Groovy 3.0.0-beta-1 Released</a><br/>Published by Remko Popma on 2019-05-12 10:41PM<br/>Groovy 3.0.0-beta-1 Release Announcement.</p></li><li><p class='name'><a href='groovy-2-5-7-released'>Groovy 2.5.7 Released</a><br/>Published by Remko Popma on 2019-05-12 10:39PM<br/>Groovy 2.5.7 Release Announcement.</p></li><li><p class='name'><a href='groovy-2-4-17-released'>Groovy 2.4.17 Released</a><br/>Published by Remko Popma on 2019-05-12 10:32PM<br/>Groovy 2.4.17 Release Announcement.</p></li><li><p class='name'><a href='groovy-2-5-6-released'>Groovy 2.5.6 Released</a><br/>Published by Remko Popma on 2019-02-04 10:19PM<br/>Groovy 2.5.6 Release Announcement.</p></li><li><p class='name'><a href='groovy-3-0-0-alpha1'>Groovy 3.0.0-alpha-4 Windows Installer Released (Community Artifact)</a><br/>Published by Remko Popma on 2019-01-01 09:28AM<br/>Groovy 2.4.16 Windows Installer Release Announcement.</p></li><li><p class='name'><a href='groovy-3-0-0-alpha'>Groovy 3.0.0-alpha-4 Released</a><br/>Published by Remko Popma on 2019-01-01 09:24AM<br/>Groovy 3.0.0-alpha-4 Release Announcement.</p></li><li><p class='name'><a href='groovy-2-5-5-windows'>Groovy 2.5.5 Windows Installer Released (Community Artifact)</a><br/>Published by Remko Popma on 2018-12-24 10:02PM<br/>Groovy 2.5.5 Windows Installer Release Announcement.</p></li><li><p class='name'><a href='groovy-2-5-5-released'>Groovy 2.5.5 released</a><br/>Published by Remko Popma on 2018-12-24 11:53AM<br/>Groovy 2.5.5 Release Announcement.</p></li><li><p class='name'><a href='groovy-2-4-16-windows'>Groovy 2.4.16 Windows Installer Released (Community Artifact)</a><br/>Published by Remko Popma on 2018-12-18 10:06PM<br/>Groovy 2.4.16 Windows Installer Release Announcement.</p></li><li><p class='name'><a href='groovy-2-4-16-released'>Groovy 2.4.16 Released</a><br/>Published by Remko Popma on 2018-12-18 10:04PM<br/>Groovy 2.4.16 Release Announcement.</p></li><li><p class='name'><a href='groovy-2-5-4-windows'>Groovy 2.5.4 Windows Installer Released (Community Artifact)</a><br/>Published by Remko Popma on 2018-11-12 11:43AM<br/>Groovy 2.5.4 Windows Installer Release Announcement.</p></li><li><p class='name'><a href='groovy-2-5-4-released'>Groovy 2.5.4 Released</a><br/>Published by Remko Popma on 2018-11-12 11:42AM<br/>Groovy 2.5.4 Release Announcement.</p></li><li><p class='name'><a href='apache-groovy-committer-graeme-rocher'>Apache Groovy committer Graeme Rocher receives Oracle Groundbreaker award</a><br/>Published by Paul King on 2018-10-24 11:33PM<br/>Congratulations to Graeme Rocher for receiving the Oracle Groundbreaker award.</p></li><li><p class='name'><a href='gmavenplus-1-6-2-released'>GMavenPlus 1.6.2 Released (Community Artifact)</a><br/>Published by Remko Popma on 2018-10-14 10:00PM<br/>GMavenPlus 1.6.2 Release Announcement.</p></li><li><p class='name'><a href='groovy-2-5-3-windows'>Groovy 2.5.3 Windows Installer Released (Community Artifact)</a><br/>Published by Remko Popma on 2018-10-14 09:47PM<br/>Groovy 2.5.3 Windows Installer Release Announcement.</p></li><li><p class='name'><a href='groovy-2-5-3-released'>Groovy 2.5.3 Released</a><br/>Published by Remko Popma on 2018-10-14 09:43PM<br/>Groovy 2.5.3 Release Announcement.</p></li><li><p class='name'><a href='groovy-2-5-2-windows'>Groovy 2.5.2 Windows Installer Released (Community Artifact)</a><br/>Published by Remko Popma on 2018-08-19 09:50AM<br/>Groovy 2.5.2 Windows Installer Release Announcement.</p></li><li><p class='name'><a href='groovy-2-5-2-released'>Groovy 2.5.2 released</a><br/>Published by Remko Popma on 2018-08-16 02:52AM<br/>Groovy 2.5.2 Release Announcement.</p></li><li><p class='name'><a href='groovy-2-5-1-released'>Groovy 2.5.1 released</a><br/>Published by Remko Popma on 2018-07-14 02:18AM<br/>Groovy 2.5.1 Release Announcement.</p></li><li><p class='name'><a href='announce-announcing-codenarc-1-2'>Announcing CodeNarc 1.2</a><br/>Published by Remko Popma on 2018-07-10 10:16AM<br/>CodeNarc 1.2 Release Announcement.</p></li><li><p class='name'><a href='groovy-2-5-clibuilder-renewal'>Apache Groovy 2.5 CliBuilder Renewal</a><br/>Published by Remko Popma on 2018-05-30 11:28AM<br/>This post looks at new CliBuilder features from Groovy 2.5 in particular the Picocli-based implementation.</p></li><li><p class='name'><a href='groovy-2-5-0-released'>Groovy 2.5.0 released</a><br/>Published by Remko Popma on 2018-05-30 11:28AM<br/>Groovy 2.5.0 Release Announcement.</p></li></ul><ul class='pagination'/></div></div></div></div></div><footer id='footer'>
                             <div class='row'>
                                 <div class='colset-3-footer'>
                                     <div class='col-1'>
diff --git a/download.html b/download.html
index f2b83a1..23615b3 100644
--- a/download.html
+++ b/download.html
@@ -58,7 +58,7 @@
                                                 <i class='fa fa-pencil-square-o'></i> Improve this doc
                                             </button>
                                         </div><h1><i class='fa fa-cloud-download'></i> Download</h1><button id='big-download-button' type='button' class='btn btn-default' title='Download Apache Groovy 4.0.13 binary zip
-See below for verification information' onclick='window.location.href="https://groovy.jfrog.io/artifactory/dist-release-local/groovy-zips/apache-groovy-sdk-4.0.13.zip"'><i class='fa fa-download'></i> Download 4.0.13</button><article><p>Ways to get Apache Groovy:</p><ul><li>Download a source or binary <a href='#distro'>distribution</a>.</li><li>Use a package manager or bundle for your <a href='#osinstall'>operating system</a>.</li><li>Refer to the appropriate Apache Groovy jars from your <a href='#buildtools'>build tools</a>.</li><li>Grab the latest <a href='http://groovy-lang.org/ides.html'>plugin</a> for your IDE and follow the installation instructions.</li><li>Find the latest source code in the <a href='https://git-wip-us.apache.org/repos/asf/groovy.git'>Git repo</a> (or the <a href='https://github.com/apache/groovy'>GitHub mirror</a>).</li><li>If you&apos;re using Docker, Groovy is available on <a href='https://hub.docker.com/_/groovy/'>Docker Hub</a>.</li></ul></article><hr class='divider'/><a name='distro'></a><article><h1>Distributions</h1><p>Distributions are bundles of source or class files needed to build or use Groovy.</p><p>All Apache projects provide a source zip which lets anyone build the software from scratch. If any doubt arises, you can regard the source zip as the authoritative artifact for each release. We also provide binary, downloadable documentation and SDK (combines src, binary and docs) convenience artifacts. You can also find a link to a non-ASF Windows installer convenience executable (if available).</p><h3>Verification</h3><p>We provide OpenPGP signatures (&apos;.asc&apos;) files and checksums (&apos;.sha256&apos;) for every release artifact. We recommend that you <a href='https://www.apache.org/info/verification.html'>verify</a> the integrity of downloaded files by generating your own checksums and matching them against ours and checking signatures using the <a href='https://downloads.apache.org/groovy/KEYS'>KEYS</a> file which contains the OpenPGP keys of Groovy&apos;s Release Managers across all releases.</p><p>Newer releases have two sets of verification links. The <span style='font-variant: small-caps'>dist</span> labelled links are through the normal Apache distribution mechanism. The <span style='font-variant: small-caps'>perm</span> labelled links are through the Apache archive server. The latter  of these won&apos;t change but may not be available for a short while (usually less than a day) after a release.  Older releases are only available from the archive server. </p><h2><i class='fa fa-star'></i> Groovy 5.0</h2><p><a href='https://groovy-lang.org/releasenotes/groovy-5.0.html'>Groovy 5.0</a> is the next major <a href='versioning.html'>version</a> of Groovy. We expect to have alpha releases soon.</p><h2><i class='fa fa-star'></i> Groovy 4.0</h2><p><a href='https://groovy-lang.org/releasenotes/groovy-4.0.html'>Groovy 4.0</a> is the latest stable <a href='versioning.html'>version</a> of Groovy designed for JDK8+ with much improved JPMS support.</p><h3>4.0.13 distributions</h3><table width='100%' class='download-table'><tr><td><a href='https://groovy.jfrog.io/artifactory/dist-release-local/groovy-zips/apache-groovy-binary-4.0.13.zip'><i class='fa fa-gears fa-4x'></i><br/>binary</a> <a href='https://www.apache.org/dyn/closer.lua/groovy/4.0.13/distribution/apache-groovy-binary-4.0.13.zip?action=download'>(mirror)</a><br/><span style='font-variant: small-caps'>dist: </span><a href='https://downloads.apache.org/groovy/4.0.13/distribution/apache-groovy-binary-4.0.13.zip.asc'>asc</a> <a href='https://downloads.apache.org/groovy/4.0.13/distribution/apache-groovy-binary-4.0.13.zip.sha256'>sha256</a><br/><span style='font-variant: small-caps'>perm: </span><a href='https://archive.apache.org/dist/groovy/4.0.13/distribution/apache-groovy-binary-4.0.13.zip.asc'>asc</a> <a href='https://archive.apache.org/dist/groovy/4.0.13/distribution/apache-groovy-binary-4.0.13.zip.sha256'>sha256</a></td><td><a href='https://www.apache.org/dyn/closer.lua/groovy/4.0.13/sources/apache-groovy-src-4.0.13.zip?action=download'><i class='fa fa-code fa-4x'></i><br/> source</a><br/><span style='font-variant: small-caps'></span><a href='https://downloads.apache.org/groovy/4.0.13/sources/apache-groovy-src-4.0.13.zip.asc'>asc</a> <a href='https://downloads.apache.org/groovy/4.0.13/sources/apache-groovy-src-4.0.13.zip.sha256'>sha256</a></td><td><a href='https://groovy.jfrog.io/artifactory/dist-release-local/groovy-zips/apache-groovy-docs-4.0.13.zip'><i class='fa fa-file-text fa-4x'></i><br/> documentation</a> <a href='https://www.apache.org/dyn/closer.lua/groovy/4.0.13/distribution/apache-groovy-docs-4.0.13.zip?action=download'>(mirror)</a><br/><span style='font-variant: small-caps'>dist: </span><a href='https://downloads.apache.org/groovy/4.0.13/distribution/apache-groovy-docs-4.0.13.zip.asc'>asc</a> <a href='https://downloads.apache.org/groovy/4.0.13/distribution/apache-groovy-docs-4.0.13.zip.sha256'>sha256</a><br/><span style='font-variant: small-caps'>perm: </span><a href='https://archive.apache.org/dist/groovy/4.0.13/distribution/apache-groovy-docs-4.0.13.zip.asc'>asc</a> <a href='https://archive.apache.org/dist/groovy/4.0.13/distribution/apache-groovy-docs-4.0.13.zip.sha256'>sha256</a></td><td><a href='https://groovy.jfrog.io/artifactory/dist-release-local/groovy-zips/apache-groovy-sdk-4.0.13.zip'><i class='fa fa-file-zip-o fa-4x'></i><br/> SDK bundle</a> <a href='https://www.apache.org/dyn/closer.lua/groovy/4.0.13/distribution/apache-groovy-sdk-4.0.13.zip?action=download'>(mirror)</a><br/><span style='font-variant: small-caps'>dist: </span><a href='https://downloads.apache.org/groovy/4.0.13/distribution/apache-groovy-sdk-4.0.13.zip.asc'>asc</a> <a href='https://downloads.apache.org/groovy/4.0.13/distribution/apache-groovy-sdk-4.0.13.zip.sha256'>sha256</a><br/><span style='font-variant: small-caps'>perm: </span><a href='https://archive.apache.org/dist/groovy/4.0.13/distribution/apache-groovy-sdk-4.0.13.zip.asc'>asc</a> <a href='https://archive.apache.org/dist/groovy/4.0.13/distribution/apache-groovy-sdk-4.0.13.zip.sha256'>sha256</a></td><td><a href='https://groovy.jfrog.io/artifactory/dist-release-local/groovy-windows-installer/groovy-4.0.13/' rel='nofollow'><i class='fa fa-windows fa-4x'></i><br/> Windows installer</a><br/>(community artifact)</td></tr></table><p>Please consult the <a href='http://groovy-lang.org/changelogs/changelog-4.0.13.html'> change log</a> for details. </p><h2><i class='fa fa-star'></i> Groovy 3.0</h2><p><a href='https://groovy-lang.org/releasenotes/groovy-3.0.html'>Groovy 3.0</a> is the previous stable <a href='versioning.html'>version</a> of Groovy designed for JDK8+ with a new more flexible parser (aka Parrot parser).</p><h3>3.0.18 distributions</h3><table width='100%' class='download-table'><tr><td><a href='https://groovy.jfrog.io/artifactory/dist-release-local/groovy-zips/apache-groovy-binary-3.0.18.zip'><i class='fa fa-gears fa-4x'></i><br/>binary</a> <a href='https://www.apache.org/dyn/closer.lua/groovy/3.0.18/distribution/apache-groovy-binary-3.0.18.zip?action=download'>(mirror)</a><br/><span style='font-variant: small-caps'>dist: </span><a href='https://downloads.apache.org/groovy/3.0.18/distribution/apache-groovy-binary-3.0.18.zip.asc'>asc</a> <a href='https://downloads.apache.org/groovy/3.0.18/distribution/apache-groovy-binary-3.0.18.zip.sha256'>sha256</a><br/><span style='font-variant: small-caps'>perm: </span><a href='https://archive.apache.org/dist/groovy/3.0.18/distribution/apache-groovy-binary-3.0.18.zip.asc'>asc</a> <a href='https://archive.apache.org/dist/groovy/3.0.18/distribution/apache-groovy-binary-3.0.18.zip.sha256'>sha256</a></td><td><a href='https://www.apache.org/dyn/closer.lua/groovy/3.0.18/sources/apache-groovy-src-3.0.18.zip?action=download'><i class='fa fa-code fa-4x'></i><br/> source</a><br/><span style='font-variant: small-caps'></span><a href='https://downloads.apache.org/groovy/3.0.18/sources/apache-groovy-src-3.0.18.zip.asc'>asc</a> <a href='https://downloads.apache.org/groovy/3.0.18/sources/apache-groovy-src-3.0.18.zip.sha256'>sha256</a></td><td><a href='https://groovy.jfrog.io/artifactory/dist-release-local/groovy-zips/apache-groovy-docs-3.0.18.zip'><i class='fa fa-file-text fa-4x'></i><br/> documentation</a> <a href='https://www.apache.org/dyn/closer.lua/groovy/3.0.18/distribution/apache-groovy-docs-3.0.18.zip?action=download'>(mirror)</a><br/><span style='font-variant: small-caps'>dist: </span><a href='https://downloads.apache.org/groovy/3.0.18/distribution/apache-groovy-docs-3.0.18.zip.asc'>asc</a> <a href='https://downloads.apache.org/groovy/3.0.18/distribution/apache-groovy-docs-3.0.18.zip.sha256'>sha256</a><br/><span style='font-variant: small-caps'>perm: </span><a href='https://archive.apache.org/dist/groovy/3.0.18/distribution/apache-groovy-docs-3.0.18.zip.asc'>asc</a> <a href='https://archive.apache.org/dist/groovy/3.0.18/distribution/apache-groovy-docs-3.0.18.zip.sha256'>sha256</a></td><td><a href='https://groovy.jfrog.io/artifactory/dist-release-local/groovy-zips/apache-groovy-sdk-3.0.18.zip'><i class='fa fa-file-zip-o fa-4x'></i><br/> SDK bundle</a> <a href='https://www.apache.org/dyn/closer.lua/groovy/3.0.18/distribution/apache-groovy-sdk-3.0.18.zip?action=download'>(mirror)</a><br/><span style='font-variant: small-caps'>dist: </span><a href='https://downloads.apache.org/groovy/3.0.18/distribution/apache-groovy-sdk-3.0.18.zip.asc'>asc</a> <a href='https://downloads.apache.org/groovy/3.0.18/distribution/apache-groovy-sdk-3.0.18.zip.sha256'>sha256</a><br/><span style='font-variant: small-caps'>perm: </span><a href='https://archive.apache.org/dist/groovy/3.0.18/distribution/apache-groovy-sdk-3.0.18.zip.asc'>asc</a> <a href='https://archive.apache.org/dist/groovy/3.0.18/distribution/apache-groovy-sdk-3.0.18.zip.sha256'>sha256</a></td></tr></table><p>Please consult the <a href='http://groovy-lang.org/changelogs/changelog-3.0.18.html'> change log</a> for details. </p><h3>3.0.17 distributions</h3><table width='100%' class='download-table'><tr><td><a href='https://groovy.jfrog.io/artifactory/dist-release-local/groovy-zips/apache-groovy-binary-3.0.17.zip'><i class='fa fa-gears fa-4x'></i><br/>binary</a> <a href='https://archive.apache.org/dist/groovy/3.0.17/sources/apache-groovy-src-3.0.17.zip'>(mirror)</a><br/><span style='font-variant: small-caps'></span><a href='https://archive.apache.org/dist/groovy/3.0.17/distribution/apache-groovy-binary-3.0.17.zip.asc'>asc</a> <a href='https://archive.apache.org/dist/groovy/3.0.17/distribution/apache-groovy-binary-3.0.17.zip.sha256'>sha256</a></td><td><a href='https://archive.apache.org/dist/groovy/3.0.17/sources/apache-groovy-src-3.0.17.zip'><i class='fa fa-code fa-4x'></i><br/> source</a><br/><span style='font-variant: small-caps'></span><a href='https://archive.apache.org/dist/groovy/3.0.17/sources/apache-groovy-src-3.0.17.zip.asc'>asc</a> <a href='https://archive.apache.org/dist/groovy/3.0.17/sources/apache-groovy-src-3.0.17.zip.sha256'>sha256</a></td><td><a href='https://groovy.jfrog.io/artifactory/dist-release-local/groovy-zips/apache-groovy-docs-3.0.17.zip'><i class='fa fa-file-text fa-4x'></i><br/> documentation</a> <a href='https://archive.apache.org/dist/groovy/3.0.17/sources/apache-groovy-src-3.0.17.zip'>(mirror)</a><br/><span style='font-variant: small-caps'></span><a href='https://archive.apache.org/dist/groovy/3.0.17/distribution/apache-groovy-docs-3.0.17.zip.asc'>asc</a> <a href='https://archive.apache.org/dist/groovy/3.0.17/distribution/apache-groovy-docs-3.0.17.zip.sha256'>sha256</a></td><td><a href='https://groovy.jfrog.io/artifactory/dist-release-local/groovy-zips/apache-groovy-sdk-3.0.17.zip'><i class='fa fa-file-zip-o fa-4x'></i><br/> SDK bundle</a> <a href='https://archive.apache.org/dist/groovy/3.0.17/sources/apache-groovy-src-3.0.17.zip'>(mirror)</a><br/><span style='font-variant: small-caps'></span><a href='https://archive.apache.org/dist/groovy/3.0.17/distribution/apache-groovy-sdk-3.0.17.zip.asc'>asc</a> <a href='https://archive.apache.org/dist/groovy/3.0.17/distribution/apache-groovy-sdk-3.0.17.zip.sha256'>sha256</a></td><td><a href='https://groovy.jfrog.io/artifactory/dist-release-local/groovy-windows-installer/groovy-3.0.17/' rel='nofollow'><i class='fa fa-windows fa-4x'></i><br/> Windows installer</a><br/>(community artifact)</td></tr></table><p>Please consult the <a href='http://groovy-lang.org/changelogs/changelog-3.0.17.html'> change log</a> for details. </p><h2><i class='fa fa-star'></i> Groovy 2.5</h2><p><a href='https://groovy-lang.org/releasenotes/groovy-2.5.html'>Groovy 2.5</a> is an earlier <a href='versioning.html'>version</a> of Groovy still in widespread use.</p><h3>2.5.22 distributions</h3><table width='100%' class='download-table'><tr><td><a href='https://groovy.jfrog.io/artifactory/dist-release-local/groovy-zips/apache-groovy-binary-2.5.22.zip'><i class='fa fa-gears fa-4x'></i><br/>binary</a> <a href='https://www.apache.org/dyn/closer.lua/groovy/2.5.22/distribution/apache-groovy-binary-2.5.22.zip?action=download'>(mirror)</a><br/><span style='font-variant: small-caps'>dist: </span><a href='https://downloads.apache.org/groovy/2.5.22/distribution/apache-groovy-binary-2.5.22.zip.asc'>asc</a> <a href='https://downloads.apache.org/groovy/2.5.22/distribution/apache-groovy-binary-2.5.22.zip.sha256'>sha256</a><br/><span style='font-variant: small-caps'>perm: </span><a href='https://archive.apache.org/dist/groovy/2.5.22/distribution/apache-groovy-binary-2.5.22.zip.asc'>asc</a> <a href='https://archive.apache.org/dist/groovy/2.5.22/distribution/apache-groovy-binary-2.5.22.zip.sha256'>sha256</a></td><td><a href='https://www.apache.org/dyn/closer.lua/groovy/2.5.22/sources/apache-groovy-src-2.5.22.zip?action=download'><i class='fa fa-code fa-4x'></i><br/> source</a><br/><span style='font-variant: small-caps'></span><a href='https://downloads.apache.org/groovy/2.5.22/sources/apache-groovy-src-2.5.22.zip.asc'>asc</a> <a href='https://downloads.apache.org/groovy/2.5.22/sources/apache-groovy-src-2.5.22.zip.sha256'>sha256</a></td><td><a href='https://groovy.jfrog.io/artifactory/dist-release-local/groovy-zips/apache-groovy-docs-2.5.22.zip'><i class='fa fa-file-text fa-4x'></i><br/> documentation</a> <a href='https://www.apache.org/dyn/closer.lua/groovy/2.5.22/distribution/apache-groovy-docs-2.5.22.zip?action=download'>(mirror)</a><br/><span style='font-variant: small-caps'>dist: </span><a href='https://downloads.apache.org/groovy/2.5.22/distribution/apache-groovy-docs-2.5.22.zip.asc'>asc</a> <a href='https://downloads.apache.org/groovy/2.5.22/distribution/apache-groovy-docs-2.5.22.zip.sha256'>sha256</a><br/><span style='font-variant: small-caps'>perm: </span><a href='https://archive.apache.org/dist/groovy/2.5.22/distribution/apache-groovy-docs-2.5.22.zip.asc'>asc</a> <a href='https://archive.apache.org/dist/groovy/2.5.22/distribution/apache-groovy-docs-2.5.22.zip.sha256'>sha256</a></td><td><a href='https://groovy.jfrog.io/artifactory/dist-release-local/groovy-zips/apache-groovy-sdk-2.5.22.zip'><i class='fa fa-file-zip-o fa-4x'></i><br/> SDK bundle</a> <a href='https://www.apache.org/dyn/closer.lua/groovy/2.5.22/distribution/apache-groovy-sdk-2.5.22.zip?action=download'>(mirror)</a><br/><span style='font-variant: small-caps'>dist: </span><a href='https://downloads.apache.org/groovy/2.5.22/distribution/apache-groovy-sdk-2.5.22.zip.asc'>asc</a> <a href='https://downloads.apache.org/groovy/2.5.22/distribution/apache-groovy-sdk-2.5.22.zip.sha256'>sha256</a><br/><span style='font-variant: small-caps'>perm: </span><a href='https://archive.apache.org/dist/groovy/2.5.22/distribution/apache-groovy-sdk-2.5.22.zip.asc'>asc</a> <a href='https://archive.apache.org/dist/groovy/2.5.22/distribution/apache-groovy-sdk-2.5.22.zip.sha256'>sha256</a></td><td><a href='https://groovy.jfrog.io/artifactory/dist-release-local/groovy-windows-installer/groovy-2.5.22/' rel='nofollow'><i class='fa fa-windows fa-4x'></i><br/> Windows installer</a><br/>(community artifact)</td></tr></table><p>Please consult the <a href='http://groovy-lang.org/changelogs/changelog-2.5.22.html'> change log</a> for details. </p><h2><i class='fa fa-star'></i> Groovy 2.4</h2><p><a href='https://groovy-lang.org/releasenotes/groovy-2.4.html'>Groovy 2.4</a> is an earlier <a href='versioning.html'>version</a> of Groovy still in widespread use. We encourage users to upgrade from this version as we no longer support this version actively. Important: Releases before 2.4.4 weren't done under the Apache Software Foundation and are provided as a convenience, without any warranty.</p><h3>2.4.21 distributions</h3><table width='100%' class='download-table'><tr><td><a href='https://groovy.jfrog.io/artifactory/dist-release-local/groovy-zips/apache-groovy-binary-2.4.21.zip'><i class='fa fa-gears fa-4x'></i><br/>binary</a> <a href='https://www.apache.org/dyn/closer.lua/groovy/2.4.21/distribution/apache-groovy-binary-2.4.21.zip?action=download'>(mirror)</a><br/><span style='font-variant: small-caps'>dist: </span><a href='https://downloads.apache.org/groovy/2.4.21/distribution/apache-groovy-binary-2.4.21.zip.asc'>asc</a> <a href='https://downloads.apache.org/groovy/2.4.21/distribution/apache-groovy-binary-2.4.21.zip.sha256'>sha256</a><br/><span style='font-variant: small-caps'>perm: </span><a href='https://archive.apache.org/dist/groovy/2.4.21/distribution/apache-groovy-binary-2.4.21.zip.asc'>asc</a> <a href='https://archive.apache.org/dist/groovy/2.4.21/distribution/apache-groovy-binary-2.4.21.zip.sha256'>sha256</a></td><td><a href='https://www.apache.org/dyn/closer.lua/groovy/2.4.21/sources/apache-groovy-src-2.4.21.zip?action=download'><i class='fa fa-code fa-4x'></i><br/> source</a><br/><span style='font-variant: small-caps'></span><a href='https://downloads.apache.org/groovy/2.4.21/sources/apache-groovy-src-2.4.21.zip.asc'>asc</a> <a href='https://downloads.apache.org/groovy/2.4.21/sources/apache-groovy-src-2.4.21.zip.sha256'>sha256</a></td><td><a href='https://groovy.jfrog.io/artifactory/dist-release-local/groovy-zips/apache-groovy-docs-2.4.21.zip'><i class='fa fa-file-text fa-4x'></i><br/> documentation</a> <a href='https://www.apache.org/dyn/closer.lua/groovy/2.4.21/distribution/apache-groovy-docs-2.4.21.zip?action=download'>(mirror)</a><br/><span style='font-variant: small-caps'>dist: </span><a href='https://downloads.apache.org/groovy/2.4.21/distribution/apache-groovy-docs-2.4.21.zip.asc'>asc</a> <a href='https://downloads.apache.org/groovy/2.4.21/distribution/apache-groovy-docs-2.4.21.zip.sha256'>sha256</a><br/><span style='font-variant: small-caps'>perm: </span><a href='https://archive.apache.org/dist/groovy/2.4.21/distribution/apache-groovy-docs-2.4.21.zip.asc'>asc</a> <a href='https://archive.apache.org/dist/groovy/2.4.21/distribution/apache-groovy-docs-2.4.21.zip.sha256'>sha256</a></td><td><a href='https://groovy.jfrog.io/artifactory/dist-release-local/groovy-zips/apache-groovy-sdk-2.4.21.zip'><i class='fa fa-file-zip-o fa-4x'></i><br/> SDK bundle</a> <a href='https://www.apache.org/dyn/closer.lua/groovy/2.4.21/distribution/apache-groovy-sdk-2.4.21.zip?action=download'>(mirror)</a><br/><span style='font-variant: small-caps'>dist: </span><a href='https://downloads.apache.org/groovy/2.4.21/distribution/apache-groovy-sdk-2.4.21.zip.asc'>asc</a> <a href='https://downloads.apache.org/groovy/2.4.21/distribution/apache-groovy-sdk-2.4.21.zip.sha256'>sha256</a><br/><span style='font-variant: small-caps'>perm: </span><a href='https://archive.apache.org/dist/groovy/2.4.21/distribution/apache-groovy-sdk-2.4.21.zip.asc'>asc</a> <a href='https://archive.apache.org/dist/groovy/2.4.21/distribution/apache-groovy-sdk-2.4.21.zip.sha256'>sha256</a></td><td><a href='https://groovy.jfrog.io/artifactory/dist-release-local/groovy-windows-installer/groovy-2.4.21/' rel='nofollow'><i class='fa fa-windows fa-4x'></i><br/> Windows installer</a><br/>(community artifact)</td></tr></table><p>Please consult the <a href='http://groovy-lang.org/changelogs/changelog-2.4.21.html'> change log</a> for details. </p><article><h3>Other versions</h3><p>Downloads for all versions are hosted (and mirrored) in:<ul><li>Apache&apos;s <a href='https://www.apache.org/dyn/closer.lua/groovy/'>release mirrors</a> and <a href='https://archive.apache.org/dist/groovy/'>archive repository</a>.</li><li>Groovy&apos;s <a href='https://groovy.jfrog.io/artifactory/dist-release-local/groovy-zips/'>artifactory instance</a> (includes pre-ASF versions).</li></ul></p><p>You can also read the changelogs for <a href='http://groovy-lang.org/changelogs.html'>all versions</a>.</p></article><article><h3>Invoke dynamic support</h3><p>Please read the <a href='http://groovy-lang.org/indy.html'>invoke dynamic support information</a> if you would like to enable indy support and are using Groovy on JDK 7+.</p></article></article><hr class='divider'/><a name='osinstall'></a><article><h1>Operating system/package manager installation</h1><p><a href='http://groovy-lang.org/install.html'>Installing</a> Apache Groovy from a distribution zip is not hard but if you don&apos;t want the hassle, consider the alternatives listed here.</p><article><p><a href='http://sdkman.io/'>SDKMAN!</a> is a tool for managing parallel versions of multiple Software Development Kits on most Unix-based systems:</p><pre><code>$ sdk install groovy</code></pre><p>Windows users: see the SDKMAN <a href='https://sdkman.io/install'>install</a> instructions for potential options.</p></article><article><p><a href='http://brew.sh/'>Homebrew</a> is &quot;the missing package manager for macOS&quot;:</p><pre><code>$ brew install groovy</code></pre></article><article><p><a href='https://snapcraft.io/'>SnapCraft</a> is &quot;the app store for Linux&quot;. Groovy is supported in the <a href='https://snapcraft.io/groovy'>store</a> or via the commandline:</p><pre><code>$ sudo snap install groovy --classic</code></pre></article><article><p><a href='http://www.macports.org/'>MacPorts</a> is a system for managing tools on macOS:</p><pre><code>$ sudo port install groovy</code></pre></article><article><p><a href='http://scoop.sh/'>Scoop</a> is a command-line installer for Windows inspired by Homebrew:</p><pre><code>> scoop install groovy</code></pre></article><article><p><a href='https://chocolatey.org/'>Chocolatey</a> provides a sane way to manage software on Windows:</p><pre><code>> choco install groovy</code></pre></article><p>Linux/*nix users: you may also find Groovy is available using your preferred operating system package manager, e.g.: apt, dpkg, pacman, etc.</p><p>Windows users: consider also the Windows installer (see links above under Distributions).</p></article><hr class='divider'/><a name='buildtools'></a><article><h1>From your build tools</h1><p>If you wish to add Groovy as a dependency in your projects, you can refer to the Groovy JARs in the dependency section of your project build file descriptor:</p><table class='table'><thead><tr><th>Gradle</th><th>Maven</th><th>Explanation</th></tr></thead><tbody><tr><td colspan='3' style='text-align:center'><strong><em>Groovy versions 1.x to 3.x</em></strong></td></tr><tr><td><code>org.codehaus.groovy:groovy:x.y.z</code></td><td><code>&lt;groupId&gt;org.codehaus.groovy&lt;/groupId&gt;</code><br/><code>&lt;artifactId&gt;groovy&lt;/artifactId&gt;</code><br/><code>&lt;version&gt;x.y.z&lt;/version&gt;</code></td><td>Just the core of Groovy without the modules*. Also includes jarjar'ed versions of Antlr, ASM, and an internal copy of needed CLI implementation classes.</td></tr><tr><td><code>org.codehaus.groovy:groovy-$module:x.y.z</code></td><td><code>&lt;groupId&gt;org.codehaus.groovy&lt;/groupId&gt;</code><br/><code>&lt;artifactId&gt;groovy-$module&lt;/artifactId&gt;</code><br/><code>&lt;version&gt;x.y.z&lt;/version&gt;</code></td><td><code>"$module"</code> stands for the different optional groovy modules*. Example: <code>&lt;artifactId&gt;groovy-sql&lt;/artifactId&gt;</code>.</td></tr><tr><td><code>org.codehaus.groovy:groovy-all:x.y.z</code></td><td><code>&lt;groupId&gt;org.codehaus.groovy&lt;/groupId&gt;</code><br/><code>&lt;artifactId&gt;groovy-all&lt;/artifactId&gt;</code><br/><code>&lt;version&gt;x.y.z&lt;/version&gt;</code><br/><code>&lt;type&gt;pom&lt;/type&gt; &lt;!-- required JUST since Groovy 2.5.0 --&gt;</code></td><td>Core plus all of the modules (excluding optional modules) according to the version packaging scheme**.</td></tr><tr><td colspan='3' style='text-align:center'><strong><em>Groovy versions 4.0+</em></strong></td></tr><tr><td colspan='3'>As above but use <code>org.apache.groovy</code> instead of <code>org.codehaus.groovy</code>.</td></tr><tr><td colspan='3'>For <code>groovy-bom</code> when using Gradle 6+ use <code>implementation platform('org.apache.groovy:groovy-bom:x.y.z')</code> instead of <code>implementation 'org.codehaus.groovy:groovy-bom:x.y.z'</code>.</td></tr><tr><td colspan='3'>* Modules:<br/><em>2.4.X:</em> &quot;ant&quot;, &quot;bsf&quot;, &quot;console&quot;, &quot;docgenerator&quot;, &quot;groovydoc&quot;, &quot;groovysh&quot;, &quot;jmx&quot;, &quot;json&quot;, &quot;jsr223&quot;, &quot;nio&quot;, &quot;servlet&quot;, &quot;sql&quot;, &quot;swing&quot;, &quot;test&quot;, &quot;templates&quot;, &quot;testng&quot; and &quot;xml&quot;<br/><em>2.5.0:</em> as above but excluding optional module &quot;bsf&quot; plus &quot;cli-picocli&quot;, &quot;datetime&quot;, &quot;macro&quot;, &quot;test-junit5&quot;. Optional modules: &quot;bsf&quot;, &quot;dateutil&quot;, &quot;cli-commons&quot;<br/><em>2.5.1+:</em> as above but &quot;groovy-jaxb&quot; is moved to become optional<br/><em>3.0.0+:</em> as above but &quot;groovy-yaml&quot; is a new optional module<br/><em>4.0.0+:</em> as above but &quot;groovy-contracts&quot;, &quot;groovy-typecheckers&quot; and &quot;groovy-macro-library&quot; are new optional modules, &quot;groovy-jaxb&quot; and &quot;groovy-bsf&quot; are no longer supported, &quot;groovy-yaml&quot; is now included in &quot;groovy-all&quot;, and &quot;groovy-testng&quot; is now an optional module</td></tr><tr><td colspan='3'>** Packaging Scheme:<br/><em>2.4.X:</em> The core plus all the modules merged into one &quot;fat jar&quot;. Optional dependencies are marked as optional, so you may need to include some of the optional dependencies to use some features of Groovy, e.g. AntBuilder, GroovyMBeans...<br/><em>2.5+:</em> A &quot;fat pom&quot; <code>groovy-all-x.y.z.pom</code> referring to the core plus all modules (excluding optional ones). In order to cater to the module system of Java 9+, the <code>groovy-all-x.y.z.jar</code> file is no longer available.</td></tr><tr><td colspan='3'>Indy jars<br/>You can access the indy version of the core or a module jar by using the &apos;indy&apos; classifier.</td></tr></tbody></table><h3>Maven repositories</h3><table class='table'><thead><tr><th>Groovy version(s)</th><th>Release Jars</th></tr></thead><tbody><tr><td><strong><em>Groovy versions 1.x to 3.x</em></strong></td><td><a href='https://repo1.maven.org/maven2/org/codehaus/groovy/'>Maven Central</a> or <a href='https://groovy.jfrog.io/artifactory/libs-release-local/org/codehaus/groovy'>Groovy artifactory release repository</a></td></tr><tr><td><strong><em>Groovy versions 4.x+</em></strong></td><td><a href='https://repo1.maven.org/maven2/org/apache/groovy/'>Maven Central</a> or <a href='https://groovy.jfrog.io/artifactory/libs-release-local/org/apache/groovy'>Groovy artifactory release repository</a></td></tr></tbody></table><p>Note for the development community: developers needing access to pre-release artifacts to assist with integration testing leading up to an official release should consult the appropriate <a href='snapshots.html'>developer documentation</a>.</p></article><hr class='divider'/><a name='requirements'></a><article><h1>System requirements</h1><p><table class='table'><thead><tr><th>Groovy</th><th>JVM Required (non-indy)</th><th>JVM Required (indy) *</th></tr></thead><tbody><tr><td><b>4.0 - current</b></td><td>N/A</td><td>1.8+</td></tr><tr><td><b>3.x</b></td><td>1.8+</td><td>1.8+</td></tr><tr><td><b>2.5 - 2.6</b></td><td>1.7+</td><td>1.7+</td></tr><tr><td><b>2.3 - 2.4</b></td><td>1.6+</td><td>1.7+</td></tr><tr><td><b>2.0 - 2.2</b></td><td>1.5+</td><td>1.7+</td></tr><tr><td><b>1.6 - 1.8</b></td><td>1.5+</td><td>N/A</td></tr><tr><td><b>1.5</b></td><td>1.4+</td><td>N/A</td></tr><tr><td><b>1.0</b></td><td>1.4-1.7</td><td>N/A</td></tr></tbody></table>* If you plan to use invoke dynamic support, please read the <a href='http://groovy-lang.org/indy.html'>support information</a>.</p></article></div></div></div></div><footer id='footer'>
+See below for verification information' onclick='window.location.href="https://groovy.jfrog.io/artifactory/dist-release-local/groovy-zips/apache-groovy-sdk-4.0.13.zip"'><i class='fa fa-download'></i> Download 4.0.13</button><article><p>Ways to get Apache Groovy:</p><ul><li>Download a source or binary <a href='#distro'>distribution</a>.</li><li>Use a package manager or bundle for your <a href='#osinstall'>operating system</a>.</li><li>Refer to the appropriate Apache Groovy jars from your <a href='#buildtools'>build tools</a>.</li><li>Grab the latest <a href='http://groovy-lang.org/ides.html'>plugin</a> for your IDE and follow the installation instructions.</li><li>Find the latest source code in the <a href='https://git-wip-us.apache.org/repos/asf/groovy.git'>Git repo</a> (or the <a href='https://github.com/apache/groovy'>GitHub mirror</a>).</li><li>If you&apos;re using Docker, Groovy is available on <a href='https://hub.docker.com/_/groovy/'>Docker Hub</a>.</li></ul></article><hr class='divider'/><a name='distro'></a><article><h1>Distributions</h1><p>Distributions are bundles of source or class files needed to build or use Groovy.</p><p>All Apache projects provide a source zip which lets anyone build the software from scratch. If any doubt arises, you can regard the source zip as the authoritative artifact for each release. We also provide binary, downloadable documentation and SDK (combines src, binary and docs) convenience artifacts. You can also find a link to a non-ASF Windows installer convenience executable (if available).</p><h3>Verification</h3><p>We provide OpenPGP signatures (&apos;.asc&apos;) files and checksums (&apos;.sha256&apos;) for every release artifact. We recommend that you <a href='https://www.apache.org/info/verification.html'>verify</a> the integrity of downloaded files by generating your own checksums and matching them against ours and checking signatures using the <a href='https://downloads.apache.org/groovy/KEYS'>KEYS</a> file which contains the OpenPGP keys of Groovy&apos;s Release Managers across all releases.</p><p>Newer releases have two sets of verification links. The <span style='font-variant: small-caps'>dist</span> labelled links are through the normal Apache distribution mechanism. The <span style='font-variant: small-caps'>perm</span> labelled links are through the Apache archive server. The latter  of these won&apos;t change but may not be available for a short while (usually less than a day) after a release.  Older releases are only available from the archive server. </p><h2><i class='fa fa-star'></i> Groovy 5.0</h2><p><a href='https://groovy-lang.org/releasenotes/groovy-5.0.html'>Groovy 5.0</a> is the next major <a href='versioning.html'>version</a> of Groovy. We expect to have alpha releases soon.</p><h2><i class='fa fa-star'></i> Groovy 4.0</h2><p><a href='https://groovy-lang.org/releasenotes/groovy-4.0.html'>Groovy 4.0</a> is the latest stable <a href='versioning.html'>version</a> of Groovy designed for JDK8+ with much improved JPMS support.</p><h3>4.0.13 distributions</h3><table width='100%' class='download-table'><tr><td><a href='https://groovy.jfrog.io/artifactory/dist-release-local/groovy-zips/apache-groovy-binary-4.0.13.zip'><i class='fa fa-gears fa-4x'></i><br/>binary</a> <a href='https://www.apache.org/dyn/closer.lua/groovy/4.0.13/distribution/apache-groovy-binary-4.0.13.zip?action=download'>(mirror)</a><br/><span style='font-variant: small-caps'>dist: </span><a href='https://downloads.apache.org/groovy/4.0.13/distribution/apache-groovy-binary-4.0.13.zip.asc'>asc</a> <a href='https://downloads.apache.org/groovy/4.0.13/distribution/apache-groovy-binary-4.0.13.zip.sha256'>sha256</a><br/><span style='font-variant: small-caps'>perm: </span><a href='https://archive.apache.org/dist/groovy/4.0.13/distribution/apache-groovy-binary-4.0.13.zip.asc'>asc</a> <a href='https://archive.apache.org/dist/groovy/4.0.13/distribution/apache-groovy-binary-4.0.13.zip.sha256'>sha256</a></td><td><a href='https://www.apache.org/dyn/closer.lua/groovy/4.0.13/sources/apache-groovy-src-4.0.13.zip?action=download'><i class='fa fa-code fa-4x'></i><br/> source</a><br/><span style='font-variant: small-caps'></span><a href='https://downloads.apache.org/groovy/4.0.13/sources/apache-groovy-src-4.0.13.zip.asc'>asc</a> <a href='https://downloads.apache.org/groovy/4.0.13/sources/apache-groovy-src-4.0.13.zip.sha256'>sha256</a></td><td><a href='https://groovy.jfrog.io/artifactory/dist-release-local/groovy-zips/apache-groovy-docs-4.0.13.zip'><i class='fa fa-file-text fa-4x'></i><br/> documentation</a> <a href='https://www.apache.org/dyn/closer.lua/groovy/4.0.13/distribution/apache-groovy-docs-4.0.13.zip?action=download'>(mirror)</a><br/><span style='font-variant: small-caps'>dist: </span><a href='https://downloads.apache.org/groovy/4.0.13/distribution/apache-groovy-docs-4.0.13.zip.asc'>asc</a> <a href='https://downloads.apache.org/groovy/4.0.13/distribution/apache-groovy-docs-4.0.13.zip.sha256'>sha256</a><br/><span style='font-variant: small-caps'>perm: </span><a href='https://archive.apache.org/dist/groovy/4.0.13/distribution/apache-groovy-docs-4.0.13.zip.asc'>asc</a> <a href='https://archive.apache.org/dist/groovy/4.0.13/distribution/apache-groovy-docs-4.0.13.zip.sha256'>sha256</a></td><td><a href='https://groovy.jfrog.io/artifactory/dist-release-local/groovy-zips/apache-groovy-sdk-4.0.13.zip'><i class='fa fa-file-zip-o fa-4x'></i><br/> SDK bundle</a> <a href='https://www.apache.org/dyn/closer.lua/groovy/4.0.13/distribution/apache-groovy-sdk-4.0.13.zip?action=download'>(mirror)</a><br/><span style='font-variant: small-caps'>dist: </span><a href='https://downloads.apache.org/groovy/4.0.13/distribution/apache-groovy-sdk-4.0.13.zip.asc'>asc</a> <a href='https://downloads.apache.org/groovy/4.0.13/distribution/apache-groovy-sdk-4.0.13.zip.sha256'>sha256</a><br/><span style='font-variant: small-caps'>perm: </span><a href='https://archive.apache.org/dist/groovy/4.0.13/distribution/apache-groovy-sdk-4.0.13.zip.asc'>asc</a> <a href='https://archive.apache.org/dist/groovy/4.0.13/distribution/apache-groovy-sdk-4.0.13.zip.sha256'>sha256</a></td><td><a href='https://groovy.jfrog.io/artifactory/dist-release-local/groovy-windows-installer/groovy-4.0.13/' rel='nofollow'><i class='fa fa-windows fa-4x'></i><br/> Windows installer</a><br/>(community artifact)</td></tr></table><p>Please consult the <a href='http://groovy-lang.org/changelogs/changelog-4.0.13.html'> change log</a> for details. </p><h2><i class='fa fa-star'></i> Groovy 3.0</h2><p><a href='https://groovy-lang.org/releasenotes/groovy-3.0.html'>Groovy 3.0</a> is the previous stable <a href='versioning.html'>version</a> of Groovy designed for JDK8+ with a new more flexible parser (aka Parrot parser).</p><h3>3.0.18 distributions</h3><table width='100%' class='download-table'><tr><td><a href='https://groovy.jfrog.io/artifactory/dist-release-local/groovy-zips/apache-groovy-binary-3.0.18.zip'><i class='fa fa-gears fa-4x'></i><br/>binary</a> <a href='https://www.apache.org/dyn/closer.lua/groovy/3.0.18/distribution/apache-groovy-binary-3.0.18.zip?action=download'>(mirror)</a><br/><span style='font-variant: small-caps'>dist: </span><a href='https://downloads.apache.org/groovy/3.0.18/distribution/apache-groovy-binary-3.0.18.zip.asc'>asc</a> <a href='https://downloads.apache.org/groovy/3.0.18/distribution/apache-groovy-binary-3.0.18.zip.sha256'>sha256</a><br/><span style='font-variant: small-caps'>perm: </span><a href='https://archive.apache.org/dist/groovy/3.0.18/distribution/apache-groovy-binary-3.0.18.zip.asc'>asc</a> <a href='https://archive.apache.org/dist/groovy/3.0.18/distribution/apache-groovy-binary-3.0.18.zip.sha256'>sha256</a></td><td><a href='https://www.apache.org/dyn/closer.lua/groovy/3.0.18/sources/apache-groovy-src-3.0.18.zip?action=download'><i class='fa fa-code fa-4x'></i><br/> source</a><br/><span style='font-variant: small-caps'></span><a href='https://downloads.apache.org/groovy/3.0.18/sources/apache-groovy-src-3.0.18.zip.asc'>asc</a> <a href='https://downloads.apache.org/groovy/3.0.18/sources/apache-groovy-src-3.0.18.zip.sha256'>sha256</a></td><td><a href='https://groovy.jfrog.io/artifactory/dist-release-local/groovy-zips/apache-groovy-docs-3.0.18.zip'><i class='fa fa-file-text fa-4x'></i><br/> documentation</a> <a href='https://www.apache.org/dyn/closer.lua/groovy/3.0.18/distribution/apache-groovy-docs-3.0.18.zip?action=download'>(mirror)</a><br/><span style='font-variant: small-caps'>dist: </span><a href='https://downloads.apache.org/groovy/3.0.18/distribution/apache-groovy-docs-3.0.18.zip.asc'>asc</a> <a href='https://downloads.apache.org/groovy/3.0.18/distribution/apache-groovy-docs-3.0.18.zip.sha256'>sha256</a><br/><span style='font-variant: small-caps'>perm: </span><a href='https://archive.apache.org/dist/groovy/3.0.18/distribution/apache-groovy-docs-3.0.18.zip.asc'>asc</a> <a href='https://archive.apache.org/dist/groovy/3.0.18/distribution/apache-groovy-docs-3.0.18.zip.sha256'>sha256</a></td><td><a href='https://groovy.jfrog.io/artifactory/dist-release-local/groovy-zips/apache-groovy-sdk-3.0.18.zip'><i class='fa fa-file-zip-o fa-4x'></i><br/> SDK bundle</a> <a href='https://www.apache.org/dyn/closer.lua/groovy/3.0.18/distribution/apache-groovy-sdk-3.0.18.zip?action=download'>(mirror)</a><br/><span style='font-variant: small-caps'>dist: </span><a href='https://downloads.apache.org/groovy/3.0.18/distribution/apache-groovy-sdk-3.0.18.zip.asc'>asc</a> <a href='https://downloads.apache.org/groovy/3.0.18/distribution/apache-groovy-sdk-3.0.18.zip.sha256'>sha256</a><br/><span style='font-variant: small-caps'>perm: </span><a href='https://archive.apache.org/dist/groovy/3.0.18/distribution/apache-groovy-sdk-3.0.18.zip.asc'>asc</a> <a href='https://archive.apache.org/dist/groovy/3.0.18/distribution/apache-groovy-sdk-3.0.18.zip.sha256'>sha256</a></td><td><a href='https://groovy.jfrog.io/artifactory/dist-release-local/groovy-windows-installer/groovy-3.0.18/' rel='nofollow'><i class='fa fa-windows fa-4x'></i><br/> Windows installer</a><br/>(community artifact)</td></tr></table><p>Please consult the <a href='http://groovy-lang.org/changelogs/changelog-3.0.18.html'> change log</a> for details. </p><h2><i class='fa fa-star'></i> Groovy 2.5</h2><p><a href='https://groovy-lang.org/releasenotes/groovy-2.5.html'>Groovy 2.5</a> is an earlier <a href='versioning.html'>version</a> of Groovy still in widespread use.</p><h3>2.5.22 distributions</h3><table width='100%' class='download-table'><tr><td><a href='https://groovy.jfrog.io/artifactory/dist-release-local/groovy-zips/apache-groovy-binary-2.5.22.zip'><i class='fa fa-gears fa-4x'></i><br/>binary</a> <a href='https://www.apache.org/dyn/closer.lua/groovy/2.5.22/distribution/apache-groovy-binary-2.5.22.zip?action=download'>(mirror)</a><br/><span style='font-variant: small-caps'>dist: </span><a href='https://downloads.apache.org/groovy/2.5.22/distribution/apache-groovy-binary-2.5.22.zip.asc'>asc</a> <a href='https://downloads.apache.org/groovy/2.5.22/distribution/apache-groovy-binary-2.5.22.zip.sha256'>sha256</a><br/><span style='font-variant: small-caps'>perm: </span><a href='https://archive.apache.org/dist/groovy/2.5.22/distribution/apache-groovy-binary-2.5.22.zip.asc'>asc</a> <a href='https://archive.apache.org/dist/groovy/2.5.22/distribution/apache-groovy-binary-2.5.22.zip.sha256'>sha256</a></td><td><a href='https://www.apache.org/dyn/closer.lua/groovy/2.5.22/sources/apache-groovy-src-2.5.22.zip?action=download'><i class='fa fa-code fa-4x'></i><br/> source</a><br/><span style='font-variant: small-caps'></span><a href='https://downloads.apache.org/groovy/2.5.22/sources/apache-groovy-src-2.5.22.zip.asc'>asc</a> <a href='https://downloads.apache.org/groovy/2.5.22/sources/apache-groovy-src-2.5.22.zip.sha256'>sha256</a></td><td><a href='https://groovy.jfrog.io/artifactory/dist-release-local/groovy-zips/apache-groovy-docs-2.5.22.zip'><i class='fa fa-file-text fa-4x'></i><br/> documentation</a> <a href='https://www.apache.org/dyn/closer.lua/groovy/2.5.22/distribution/apache-groovy-docs-2.5.22.zip?action=download'>(mirror)</a><br/><span style='font-variant: small-caps'>dist: </span><a href='https://downloads.apache.org/groovy/2.5.22/distribution/apache-groovy-docs-2.5.22.zip.asc'>asc</a> <a href='https://downloads.apache.org/groovy/2.5.22/distribution/apache-groovy-docs-2.5.22.zip.sha256'>sha256</a><br/><span style='font-variant: small-caps'>perm: </span><a href='https://archive.apache.org/dist/groovy/2.5.22/distribution/apache-groovy-docs-2.5.22.zip.asc'>asc</a> <a href='https://archive.apache.org/dist/groovy/2.5.22/distribution/apache-groovy-docs-2.5.22.zip.sha256'>sha256</a></td><td><a href='https://groovy.jfrog.io/artifactory/dist-release-local/groovy-zips/apache-groovy-sdk-2.5.22.zip'><i class='fa fa-file-zip-o fa-4x'></i><br/> SDK bundle</a> <a href='https://www.apache.org/dyn/closer.lua/groovy/2.5.22/distribution/apache-groovy-sdk-2.5.22.zip?action=download'>(mirror)</a><br/><span style='font-variant: small-caps'>dist: </span><a href='https://downloads.apache.org/groovy/2.5.22/distribution/apache-groovy-sdk-2.5.22.zip.asc'>asc</a> <a href='https://downloads.apache.org/groovy/2.5.22/distribution/apache-groovy-sdk-2.5.22.zip.sha256'>sha256</a><br/><span style='font-variant: small-caps'>perm: </span><a href='https://archive.apache.org/dist/groovy/2.5.22/distribution/apache-groovy-sdk-2.5.22.zip.asc'>asc</a> <a href='https://archive.apache.org/dist/groovy/2.5.22/distribution/apache-groovy-sdk-2.5.22.zip.sha256'>sha256</a></td><td><a href='https://groovy.jfrog.io/artifactory/dist-release-local/groovy-windows-installer/groovy-2.5.22/' rel='nofollow'><i class='fa fa-windows fa-4x'></i><br/> Windows installer</a><br/>(community artifact)</td></tr></table><p>Please consult the <a href='http://groovy-lang.org/changelogs/changelog-2.5.22.html'> change log</a> for details. </p><h2><i class='fa fa-star'></i> Groovy 2.4</h2><p><a href='https://groovy-lang.org/releasenotes/groovy-2.4.html'>Groovy 2.4</a> is an earlier <a href='versioning.html'>version</a> of Groovy still in widespread use. We encourage users to upgrade from this version as we no longer support this version actively. Important: Releases before 2.4.4 weren't done under the Apache Software Foundation and are provided as a convenience, without any warranty.</p><h3>2.4.21 distributions</h3><table width='100%' class='download-table'><tr><td><a href='https://groovy.jfrog.io/artifactory/dist-release-local/groovy-zips/apache-groovy-binary-2.4.21.zip'><i class='fa fa-gears fa-4x'></i><br/>binary</a> <a href='https://www.apache.org/dyn/closer.lua/groovy/2.4.21/distribution/apache-groovy-binary-2.4.21.zip?action=download'>(mirror)</a><br/><span style='font-variant: small-caps'>dist: </span><a href='https://downloads.apache.org/groovy/2.4.21/distribution/apache-groovy-binary-2.4.21.zip.asc'>asc</a> <a href='https://downloads.apache.org/groovy/2.4.21/distribution/apache-groovy-binary-2.4.21.zip.sha256'>sha256</a><br/><span style='font-variant: small-caps'>perm: </span><a href='https://archive.apache.org/dist/groovy/2.4.21/distribution/apache-groovy-binary-2.4.21.zip.asc'>asc</a> <a href='https://archive.apache.org/dist/groovy/2.4.21/distribution/apache-groovy-binary-2.4.21.zip.sha256'>sha256</a></td><td><a href='https://www.apache.org/dyn/closer.lua/groovy/2.4.21/sources/apache-groovy-src-2.4.21.zip?action=download'><i class='fa fa-code fa-4x'></i><br/> source</a><br/><span style='font-variant: small-caps'></span><a href='https://downloads.apache.org/groovy/2.4.21/sources/apache-groovy-src-2.4.21.zip.asc'>asc</a> <a href='https://downloads.apache.org/groovy/2.4.21/sources/apache-groovy-src-2.4.21.zip.sha256'>sha256</a></td><td><a href='https://groovy.jfrog.io/artifactory/dist-release-local/groovy-zips/apache-groovy-docs-2.4.21.zip'><i class='fa fa-file-text fa-4x'></i><br/> documentation</a> <a href='https://www.apache.org/dyn/closer.lua/groovy/2.4.21/distribution/apache-groovy-docs-2.4.21.zip?action=download'>(mirror)</a><br/><span style='font-variant: small-caps'>dist: </span><a href='https://downloads.apache.org/groovy/2.4.21/distribution/apache-groovy-docs-2.4.21.zip.asc'>asc</a> <a href='https://downloads.apache.org/groovy/2.4.21/distribution/apache-groovy-docs-2.4.21.zip.sha256'>sha256</a><br/><span style='font-variant: small-caps'>perm: </span><a href='https://archive.apache.org/dist/groovy/2.4.21/distribution/apache-groovy-docs-2.4.21.zip.asc'>asc</a> <a href='https://archive.apache.org/dist/groovy/2.4.21/distribution/apache-groovy-docs-2.4.21.zip.sha256'>sha256</a></td><td><a href='https://groovy.jfrog.io/artifactory/dist-release-local/groovy-zips/apache-groovy-sdk-2.4.21.zip'><i class='fa fa-file-zip-o fa-4x'></i><br/> SDK bundle</a> <a href='https://www.apache.org/dyn/closer.lua/groovy/2.4.21/distribution/apache-groovy-sdk-2.4.21.zip?action=download'>(mirror)</a><br/><span style='font-variant: small-caps'>dist: </span><a href='https://downloads.apache.org/groovy/2.4.21/distribution/apache-groovy-sdk-2.4.21.zip.asc'>asc</a> <a href='https://downloads.apache.org/groovy/2.4.21/distribution/apache-groovy-sdk-2.4.21.zip.sha256'>sha256</a><br/><span style='font-variant: small-caps'>perm: </span><a href='https://archive.apache.org/dist/groovy/2.4.21/distribution/apache-groovy-sdk-2.4.21.zip.asc'>asc</a> <a href='https://archive.apache.org/dist/groovy/2.4.21/distribution/apache-groovy-sdk-2.4.21.zip.sha256'>sha256</a></td><td><a href='https://groovy.jfrog.io/artifactory/dist-release-local/groovy-windows-installer/groovy-2.4.21/' rel='nofollow'><i class='fa fa-windows fa-4x'></i><br/> Windows installer</a><br/>(community artifact)</td></tr></table><p>Please consult the <a href='http://groovy-lang.org/changelogs/changelog-2.4.21.html'> change log</a> for details. </p><article><h3>Other versions</h3><p>Downloads for all versions are hosted (and mirrored) in:<ul><li>Apache&apos;s <a href='https://www.apache.org/dyn/closer.lua/groovy/'>release mirrors</a> and <a href='https://archive.apache.org/dist/groovy/'>archive repository</a>.</li><li>Groovy&apos;s <a href='https://groovy.jfrog.io/artifactory/dist-release-local/groovy-zips/'>artifactory instance</a> (includes pre-ASF versions).</li></ul></p><p>You can also read the changelogs for <a href='http://groovy-lang.org/changelogs.html'>all versions</a>.</p></article><article><h3>Invoke dynamic support</h3><p>Please read the <a href='http://groovy-lang.org/indy.html'>invoke dynamic support information</a> if you would like to enable indy support and are using Groovy on JDK 7+.</p></article></article><hr class='divider'/><a name='osinstall'></a><article><h1>Operating system/package manager installation</h1><p><a href='http://groovy-lang.org/install.html'>Installing</a> Apache Groovy from a distribution zip is not hard but if you don&apos;t want the hassle, consider the alternatives listed here.</p><article><p><a href='http://sdkman.io/'>SDKMAN!</a> is a tool for managing parallel versions of multiple Software Development Kits on most Unix-based systems:</p><pre><code>$ sdk install groovy</code></pre><p>Windows users: see the SDKMAN <a href='https://sdkman.io/install'>install</a> instructions for potential options.</p></article><article><p><a href='http://brew.sh/'>Homebrew</a> is &quot;the missing package manager for macOS&quot;:</p><pre><code>$ brew install groovy</code></pre></article><article><p><a href='https://snapcraft.io/'>SnapCraft</a> is &quot;the app store for Linux&quot;. Groovy is supported in the <a href='https://snapcraft.io/groovy'>store</a> or via the commandline:</p><pre><code>$ sudo snap install groovy --classic</code></pre></article><article><p><a href='http://www.macports.org/'>MacPorts</a> is a system for managing tools on macOS:</p><pre><code>$ sudo port install groovy</code></pre></article><article><p><a href='http://scoop.sh/'>Scoop</a> is a command-line installer for Windows inspired by Homebrew:</p><pre><code>> scoop install groovy</code></pre></article><article><p><a href='https://chocolatey.org/'>Chocolatey</a> provides a sane way to manage software on Windows:</p><pre><code>> choco install groovy</code></pre></article><p>Linux/*nix users: you may also find Groovy is available using your preferred operating system package manager, e.g.: apt, dpkg, pacman, etc.</p><p>Windows users: consider also the Windows installer (see links above under Distributions).</p></article><hr class='divider'/><a name='buildtools'></a><article><h1>From your build tools</h1><p>If you wish to add Groovy as a dependency in your projects, you can refer to the Groovy JARs in the dependency section of your project build file descriptor:</p><table class='table'><thead><tr><th>Gradle</th><th>Maven</th><th>Explanation</th></tr></thead><tbody><tr><td colspan='3' style='text-align:center'><strong><em>Groovy versions 1.x to 3.x</em></strong></td></tr><tr><td><code>org.codehaus.groovy:groovy:x.y.z</code></td><td><code>&lt;groupId&gt;org.codehaus.groovy&lt;/groupId&gt;</code><br/><code>&lt;artifactId&gt;groovy&lt;/artifactId&gt;</code><br/><code>&lt;version&gt;x.y.z&lt;/version&gt;</code></td><td>Just the core of Groovy without the modules*. Also includes jarjar'ed versions of Antlr, ASM, and an internal copy of needed CLI implementation classes.</td></tr><tr><td><code>org.codehaus.groovy:groovy-$module:x.y.z</code></td><td><code>&lt;groupId&gt;org.codehaus.groovy&lt;/groupId&gt;</code><br/><code>&lt;artifactId&gt;groovy-$module&lt;/artifactId&gt;</code><br/><code>&lt;version&gt;x.y.z&lt;/version&gt;</code></td><td><code>"$module"</code> stands for the different optional groovy modules*. Example: <code>&lt;artifactId&gt;groovy-sql&lt;/artifactId&gt;</code>.</td></tr><tr><td><code>org.codehaus.groovy:groovy-all:x.y.z</code></td><td><code>&lt;groupId&gt;org.codehaus.groovy&lt;/groupId&gt;</code><br/><code>&lt;artifactId&gt;groovy-all&lt;/artifactId&gt;</code><br/><code>&lt;version&gt;x.y.z&lt;/version&gt;</code><br/><code>&lt;type&gt;pom&lt;/type&gt; &lt;!-- required JUST since Groovy 2.5.0 --&gt;</code></td><td>Core plus all of the modules (excluding optional modules) according to the version packaging scheme**.</td></tr><tr><td colspan='3' style='text-align:center'><strong><em>Groovy versions 4.0+</em></strong></td></tr><tr><td colspan='3'>As above but use <code>org.apache.groovy</code> instead of <code>org.codehaus.groovy</code>.</td></tr><tr><td colspan='3'>For <code>groovy-bom</code> when using Gradle 6+ use <code>implementation platform('org.apache.groovy:groovy-bom:x.y.z')</code> instead of <code>implementation 'org.codehaus.groovy:groovy-bom:x.y.z'</code>.</td></tr><tr><td colspan='3'>* Modules:<br/><em>2.4.X:</em> &quot;ant&quot;, &quot;bsf&quot;, &quot;console&quot;, &quot;docgenerator&quot;, &quot;groovydoc&quot;, &quot;groovysh&quot;, &quot;jmx&quot;, &quot;json&quot;, &quot;jsr223&quot;, &quot;nio&quot;, &quot;servlet&quot;, &quot;sql&quot;, &quot;swing&quot;, &quot;test&quot;, &quot;templates&quot;, &quot;testng&quot; and &quot;xml&quot;<br/><em>2.5.0:</em> as above but excluding optional module &quot;bsf&quot; plus &quot;cli-picocli&quot;, &quot;datetime&quot;, &quot;macro&quot;, &quot;test-junit5&quot;. Optional modules: &quot;bsf&quot;, &quot;dateutil&quot;, &quot;cli-commons&quot;<br/><em>2.5.1+:</em> as above but &quot;groovy-jaxb&quot; is moved to become optional<br/><em>3.0.0+:</em> as above but &quot;groovy-yaml&quot; is a new optional module<br/><em>4.0.0+:</em> as above but &quot;groovy-contracts&quot;, &quot;groovy-typecheckers&quot; and &quot;groovy-macro-library&quot; are new optional modules, &quot;groovy-jaxb&quot; and &quot;groovy-bsf&quot; are no longer supported, &quot;groovy-yaml&quot; is now included in &quot;groovy-all&quot;, and &quot;groovy-testng&quot; is now an optional module</td></tr><tr><td colspan='3'>** Packaging Scheme:<br/><em>2.4.X:</em> The core plus all the modules merged into one &quot;fat jar&quot;. Optional dependencies are marked as optional, so you may need to include some of the optional dependencies to use some features of Groovy, e.g. AntBuilder, GroovyMBeans...<br/><em>2.5+:</em> A &quot;fat pom&quot; <code>groovy-all-x.y.z.pom</code> referring to the core plus all modules (excluding optional ones). In order to cater to the module system of Java 9+, the <code>groovy-all-x.y.z.jar</code> file is no longer available.</td></tr><tr><td colspan='3'>Indy jars<br/>You can access the indy version of the core or a module jar by using the &apos;indy&apos; classifier.</td></tr></tbody></table><h3>Maven repositories</h3><table class='table'><thead><tr><th>Groovy version(s)</th><th>Release Jars</th></tr></thead><tbody><tr><td><strong><em>Groovy versions 1.x to 3.x</em></strong></td><td><a href='https://repo1.maven.org/maven2/org/codehaus/groovy/'>Maven Central</a> or <a href='https://groovy.jfrog.io/artifactory/libs-release-local/org/codehaus/groovy'>Groovy artifactory release repository</a></td></tr><tr><td><strong><em>Groovy versions 4.x+</em></strong></td><td><a href='https://repo1.maven.org/maven2/org/apache/groovy/'>Maven Central</a> or <a href='https://groovy.jfrog.io/artifactory/libs-release-local/org/apache/groovy'>Groovy artifactory release repository</a></td></tr></tbody></table><p>Note for the development community: developers needing access to pre-release artifacts to assist with integration testing leading up to an official release should consult the appropriate <a href='snapshots.html'>developer documentation</a>.</p></article><hr class='divider'/><a name='requirements'></a><article><h1>System requirements</h1><p><table class='table'><thead><tr><th>Groovy</th><th>JVM Required (non-indy)</th><th>JVM Required (indy) *</th></tr></thead><tbody><tr><td><b>4.0 - current</b></td><td>N/A</td><td>1.8+</td></tr><tr><td><b>3.x</b></td><td>1.8+</td><td>1.8+</td></tr><tr><td><b>2.5 - 2.6</b></td><td>1.7+</td><td>1.7+</td></tr><tr><td><b>2.3 - 2.4</b></td><td>1.6+</td><td>1.7+</td></tr><tr><td><b>2.0 - 2.2</b></td><td>1.5+</td><td>1.7+</td></tr><tr><td><b>1.6 - 1.8</b></td><td>1.5+</td><td>N/A</td></tr><tr><td><b>1.5</b></td><td>1.4+</td><td>N/A</td></tr><tr><td><b>1.0</b></td><td>1.4-1.7</td><td>N/A</td></tr></tbody></table>* If you plan to use invoke dynamic support, please read the <a href='http://groovy-lang.org/indy.html'>support information</a>.</p></article></div></div></div></div><footer id='footer'>
                             <div class='row'>
                                 <div class='colset-3-footer'>
                                     <div class='col-1'>