Your First Groovy Script
Unlike Java, which requires every piece of executable code to live inside a class with a public static void main(String[] args) entry point, Groovy scripts let you write top-level statements directly in a .groovy file and run them immediately. A file containing nothing but println "Hello, Groovy!" is a complete, runnable Groovy program. This scripting-style entry point is what makes Groovy approachable for quick tasks - one-off data transformations, build logic, or exploratory testing - without paying Java's structural overhead for something that doesn't need a full class hierarchy.
Cricket analogy: Like a quick backyard match that doesn't need a full stadium, umpires, or a toss ceremony to get started, a Groovy script lets you write top-level statements like println "Hello" directly without wrapping them in a class the way Java requires.
Writing and Running Hello World
To write your first script, create a file named HelloWorld.groovy containing a single line: println "Hello, Groovy!". Run it from a terminal with groovy HelloWorld.groovy, and Groovy will print the greeting to standard output. Behind the scenes, the Groovy compiler wraps your top-level statements in an implicitly generated class that extends groovy.lang.Script, complete with its own main method - you never see or write that scaffolding, but it's what actually executes on the JVM. This is why a Groovy script file can later be refactored into an explicit class with methods without changing how it's invoked from the command line.
Cricket analogy: Like a net practice session where the ball is bowled and hit without any formal match setup, running groovy HelloWorld.groovy executes println "Hello, Groovy!" directly, with Groovy silently wrapping it in an implicit Script class behind the scenes.
// HelloWorld.groovy
println "Hello, Groovy!"
$ groovy HelloWorld.groovy
Hello, Groovy!
Working with Command-Line Arguments
Groovy scripts have implicit access to an args array (a String[], same as Java's) representing whatever values were passed after the script name on the command line - no declaration needed, it's simply available. Running groovy Sum.groovy 3 5 7 makes args equal to ["3", "5", "7"] inside the script. Since these come in as strings, numeric arguments need explicit conversion, typically with .toInteger() or .toDouble(), before doing arithmetic. Combined with args.each { ... } or a simple for loop, this makes it straightforward to turn a Groovy script into a small, reusable command-line utility.
Cricket analogy: Like a scorer noting down each ball bowled in an over as a running list, a Groovy script accesses command-line input through the implicit args array, so groovy Sum.groovy 3 5 7 lets args hold ["3", "5", "7"] for the script to sum.
// Sum.groovy - sums numbers passed as command-line arguments
def total = 0
args.each { value ->
total += value.toInteger()
}
println "Total: ${total}"
$ groovy Sum.groovy 3 5 7
Total: 15
Interactive Exploration with groovysh and groovyConsole
Beyond saving and running .groovy files, Groovy ships with two interactive tools well-suited to experimentation. groovysh is a command-line REPL: launch it, and you can type one Groovy statement at a time, seeing its result printed immediately, which is ideal for quickly checking how a method like [1,2,3].sum() or a regex pattern behaves before committing it to a real script. groovyConsole is a lightweight GUI application with a text editor pane and an output pane, letting you write, edit, and re-run a full multi-line script repeatedly while inspecting results - a comfortable environment for prototyping before moving code into a proper project file.
Cricket analogy: Like a net session where a batsman tries out one shot at a time with a bowling machine, groovysh lets you type one line of Groovy at a time and see immediate results, while groovyConsole is more like a full practice match where you write and run multi-line scripts.
For truly quick one-liners, you don't even need to save a file - groovy -e "println 2 + 2" executes an inline expression directly from the command line and prints the result, which is handy for scripting inside shell pipelines or CI steps.
- Groovy scripts run top-level statements directly, with no class or main method boilerplate required.
groovy ScriptName.groovycompiles and runs a script file; Groovy implicitly wraps it in a Script class behind the scenes.- The implicit
argsarray (String[]) gives a script access to command-line arguments with no declaration needed. - Numeric command-line arguments arrive as strings and must be converted explicitly, e.g. with
.toInteger(). groovyshis a line-by-line REPL;groovyConsoleis a GUI editor for writing and re-running multi-line scripts.groovy -e "<code>"runs an inline one-liner without needing a saved file.
Practice what you learned
1. What is required to run a minimal Groovy script that just prints a message?
2. What class does Groovy implicitly generate to run a top-level script?
3. How does a Groovy script access values passed on the command line?
4. Why must you call `.toInteger()` on a command-line argument before adding it to a numeric total?
5. What is the key difference between groovysh and groovyConsole?
Was this page helpful?
You May Also Like
Installing Groovy
A practical walkthrough of installing Groovy via SDKMAN, manual download, or a package manager, and verifying the install with groovy, groovysh, and groovyConsole.
Groovy Syntax Basics
A tour of Groovy's core syntax conveniences - optional typing, GString interpolation, native collection literals, and closures - compared to plain Java.
What Is Groovy?
An introduction to Groovy, a dynamic, optionally-typed language for the JVM that extends and simplifies Java for scripting, testing, and build automation.
Related Reading
Related Study Notes in Programming
Browse all study notesApache Spark Study Notes
Programming · 30 topics
ProgrammingApache Flink Study Notes
Programming · 30 topics
ProgrammingHadoop Study Notes
Programming · 30 topics
ProgrammingSnowflake Study Notes
Programming · 30 topics
ProgrammingApache Airflow Study Notes
Programming · 30 topics
Programmingdbt (Data Build Tool) Study Notes
Programming · 30 topics