Fri. May 29th, 2020

Apache Groovy 3.0.4 released, JVM dynamic scripting language

3 min read

Apache Groovy is a powerfuloptionally typed and dynamic language, with static-typing and static compilation capabilities, for the Java platform aimed at improving developer productivity thanks to a concise, familiar and easy to learn syntax. It integrates smoothly with any Java program, and immediately delivers to your application powerful features, including scripting capabilities, Domain-Specific Language authoring, runtime and compile-time meta-programming and functional programming.

Apache Groovy


  • Is an agile dynamic language based on Java virtual machine.
  • Built on the powerful Java language and added many features learned in languages ​​like Python, Ruby and Smalltalk.
  • Offers Java developers the most modern programming language features in the world, and low learning costs (almost zero).
  • Support DSL (Domain Specific Languages ​​Domain Definition Language) and other concise syntax, make your code easier to read and maintain.
  • Goovy has native type handling, object orientation, and an Ant DSL that make it easy to create shell scripts.
  • Developers efficiency is greatly improved by reducing framework code when developing Web, GUI, database or console applications.
  • Support unit testing and simulation (object), can simplify the test.
  • Seamless integration of all existing Java objects and libraries.
  • Compile directly into Java bytecode so Groovy can be used anywhere Java is used.

Apache Groovy 3.0.4 has been released.



  • [GROOVY-4554] – JavaStubGenerator doesn’t play nicely with package-info.groovy files
  • [GROOVY-8774] – Stub generator doesn’t handle package-info
  • [GROOVY-9398] – GroovyScriptEngine cannot recompile a class that uses generic parameters
  • [GROOVY-9405] – Junit 5 IncompatibleClassChangeError
  • [GROOVY-9432] – ClassNotFoundException when attempting to use Picocli via Grapes
  • [GROOVY-9465] – GroovyDoc: class-header is not always displayed
  • [GROOVY-9501] – MissingPropertyException for access to private static field from inner class when subclassing
  • [GROOVY-9505] – java.lang.UnsupportedOperationException: This feature requires ASM8 on JDK 14 in Spock tests
  • [GROOVY-9506] – Joint compilation is broken
  • [GROOVY-9507] – JSP style loop in StreamingTemplateEngine template results in TemplateParseException
  • [GROOVY-9508] – groovyConsole CLI plumbing for –enable-preview command-line switch is missing one part
  • [GROOVY-9511] – Annotation spanning lines is not supported by Parrot
  • [GROOVY-9515] – MethodHandle with spread args should not be cached
  • [GROOVY-9517] – CompileStatic typeCasting runtime error from Class Array to Class List
  • [GROOVY-9518] – Closure argument types not inferred when calling a constructor
  • [GROOVY-9519] – CLIBuilder: Option with “type: Integer, defaultValue ‘0’” results in Boolean if default value is applied
  • [GROOVY-9522] – Throwing NPE when I use ternary operator with something special
  • [GROOVY-9526] – Failed to reload classes with generic parameters
  • [GROOVY-9527] – Bump javaparser to 3.15.21
  • [GROOVY-9528] – CLIBuilder: “error: Missing required options” when unknown options are provided
  • [GROOVY-9529] – Static type checking сannot choose between Map#getAt(Object) and Object#getAt(String) methods
  • [GROOVY-9543] – groovydoc multiple issues with generics
  • [GROOVY-9546] – Annotations on class signature are rendered incorrectly
  • [GROOVY-9547] – @see tags are not working properly
  • [GROOVY-9556] – Stub generated without the effect of AST transformation makes joint compilation fail

Dependency upgrade


  • [GROOVY-9531] – Improve CliBuilder docs for Groovy 3.0


  • [GROOVY-9504] – Add support for Path to slurper classes
  • [GROOVY-9512] – Control the fallback threshold of indy with different switch
  • [GROOVY-9545] – DGM: add toArray(Class) extension method for
  • [GROOVY-9549] – groovydoc: implemented interfaces not shown in class description