Introduction
Groovy is another language for Java Virtual Machine. It’s built on Java, seamlessly integrates with existing Java classes, and compiles to byte code. It’s Object-Oriented (even more where numbers are also objects), and supports the same programming model as Java. However, it’s also a dynamic language with additional powers like scripting and DSL. It reduces scaffolding code that makes it more readable, maintainable and increases productivity.
Groovy is very similar in syntax with java, so developers from java side can learn it easily. It also supports java syntax that means some of java programs can also run over groovy. To learn it we first look at a simple Hello World java program, and then we discuss line by line groovy versions of this java code.
Traditional Java Program
Let’s have a look at simple hello world java program,
public class
HelloWorld {public static void
main(String[] args) {System.
out
.println("Hello World!"
);}
}
HelloWorld is always used as very basic example to learn any programming language. We start with this to easily understandable class
HelloWorld
, which contains entry point method main.
And it prints “Hello World!” on the program console. Now start migrating from this java code to groovy code/script.First step to Groovy
As I mention earlier some of the java programs may also run over groovy without changing a single line of code. Exactly, this program can also run in groovy environment and it behaves same. Although, it can run over groovy but we can’t say it a groovy program. First of all we remove some scaffolding code to improve code readability.
If we look at the very first line of the java code, it’s a class declaration with
public
access modifier.Class and all its methods are by default public in groovy.
So there is no need to explicitly specify
public
with class declaration or even with main
method.
Semicolon is a very basic element in a program structure, in java semicolon is mandatory for statement termination.
Note: But there are some situations where you need to use the semicolons in your groovy application for smooth execution.Semicolons are optional in Groovy.
For now we can remove all the semicolons in our program and it will work fine. Java is a statically typed language, whereas groovy is not that;
Groovy supports dynamic typing.
So we can drop argument’s type information from the
main
declaration.Default return type is void
Based on this default behavior we can ignore
void
from main
method and the signature of main
would be just static
main(args)
.
Lots of new helper methods are added to the groovy JDK. It gives handy methods and shortcuts for some routine tasks such as console printing. You can replace
System.out.println()
with just println()
. At this level we are almost done with scaffolding and lets see how code looks like with these changes.class
GreetWorld {static
main(args) {println("Hello World!")
}
}
It’s really neat and handsome piece of code that is very easy to understand.
Wait for a minute
Groovy is a scripting language as it allows you to write some free form programs that don’t require you to define a class structure. We may use these scripts in Unix shell, in our existing java code or just on command line.
We can optionally omit parentheses for top-level statements (a statement which is just a method call with some parameters). So at the end we leave
main
method back in java and use just the code as script in groovy.
Here it is, the smallest hello world example in groovy presented to you;
println "Hello World!"
Wow! It’s really awesome; the groovyfied code is much more readable, succinct and crispy.
If we compile the above script to bytecode using groovyc, it will generate a single class named after the name of the script file. e.g. if this was saved in HelloWorld.script, a HelloWorld.class file will be the output just like java. When we execute this class, it execute the autogenerated
main(String[] args)
method in the bytecode.Last but not Least
At the end we recap all in few points to summarize as a feature list that we learned in this post.
- Class and all its methods are by default
public
. - Semicolons are optional.
- Dynamic and static typing is supported
- Default return type is
void
- Omit parentheses
- Groovy is a scripting language
Where to go next
You can get more familiar with groovy, some advance concepts in the next part.