Have you ever heard of Groovy? It’s ok if you didn’t, but five years ago, it was considered a breakthrough programming language with great prospective and strong interest from tech giants. It was the time when it seemed to be the perfect choice for most of the projects.
So, what happened to Groovy? Why didn’t it become popular? What are its main advantages and flaws? Let’s find out. But first, let’s start with the basics.
WHAT IS GROOVY?
Groovy is an object-oriented language based on the Java platform. It was designed by James Strachan in 2003 with the first stable release appearing on January 2, 2007. Groovy 4.0.2 (released on April 19, 2022) is the current major release. Groovy is distributed under the Apache License v 2.0.
MAIN FEATURES OF GROOVY
Groovy has a set of impressive features:
- Support for static and dynamic typing.
- Support for operator overload.
- Native syntax for lists and associative arrays.
- Built-in support for regular expressions.
- Built-in support for various markup languages such as XML and HTML.
- Groovy is easy for Java developers because the syntax for Java and Groovy is very similar.
- You can use existing Java libraries.
- Groovy extends the java.lang.Object.
BRIEF HISTORY OF GROOVY
For a better understanding of the Groovy phenomenon, let's look back at its inception. It was first mentioned in 2003 as a language that complements Java with the power of Python, Ruby, and Smalltalk. It must be understood that at that time Java was already the most popular programming language, so the developers tried to come up with not a replacement, but rather an improvement.
So Groovy found itself in the company of Java-like languages, among which Scala also stood out. Until 2015, it was the latter that was destined to become a replacement for Java (the most surprising thing is that these words belong to none other than the creator of Groovy, James Strachan), but fate seems to have decreed otherwise.
WHY DID WE LOVE GROOVY?
If you ask anyone who has experience with Groovy, you'll find out that Groovy's main advantage is that it can easily "swallow" Java programs.
There are also solid benefits, such as the ability to use closures, static and dynamic typing, or special syntax for working with arrays, lists, and regular expressions. However, it was the "seamless" interface with Java, spiced with relative ease of learning, that helped Groovy find its place in the hearts of programmers.
Seven years ago, Groovy had its second moment of glory. The main reason for that was the transition under the flag of the Apache Foundation in May 2015. Immediately after that, many leading technology companies, trusting the reputation of Apache, began to implement and use Groovy as one of their tools on a regular basis.
MAIN ADVANTAGES OF GROOVY
- Dynamic typing (enabling you to program faster, at least on earlier stages).
- Native associative array/key-value mapping support (you can build an associative array literal).
- Currying/partial software (enabling you to a replica of the function with more than one arguments set).
- String interpolation (great building among strings showing values).
- Tooling support to get useful APIs applying @DelegatesTo.
- Regex’s getting first-class residents.
MAIN DISADVANTAGES OF GROOVY
- Incredibly buggy plugins (program conclusion, syntax coloring).
- No base code format for Groovy. In case your project requires group work, this might be a real headache.
- Without closures, you are unable to apply inner classes in Groovy that are mainly essentially written unit testing.
WHAT HAPPENED TO GROOVY?
Groovy was cool. It was a breath of fresh air compared to the boring Java 7.
There were lambdas, higher order functions, mixings. Normal string interpolation, metaprogramming, primitives for building DSLs. Programming became interesting again. Although it wasn’t so great under the hood, in terms of syntax – if you look at the final code – these are the most beautiful, most expressive tests that you probably have ever seen, regardless of the language.
But it turned out that dynamic typing is inferior in performance. You had to add type annotations. The absence of types did not improve the maintainability of the code as well. And then they released Java 8, and after that the ninth. And despite the traditionally cumbersome syntax, all the same features – lambdas, higher-order functions, mixings – suddenly became available without the need to change the language.
Then Kotlin and Clojure came out making Groovy prospects even more clouded, as:
1) one of the design goals for Kotlin was to do everything that Groovy does, but with forced static typing, and minimal overhead;
2) for lovers of dynamic typing and metaprogramming, Clojure offers a lot more than Groovy had.
IN A NUTSHELL
Groovy had great prospects, but with new releases of Java and appearance of highly competitive Kotlin and Clojure languages, they started to fade.
Nevertheless, Groovy still can offer you a serious reduction in code, which is more noticeable on a larger scale project. Many are afraid of dynamic typing, but it is fully resolved by consistent code conventions and code review.