Groovy Console: Python like REPL for Java

UPDATE3: Java9 is now released with JShell!

UPDATE2: JShell to be introduced in Java9, so hopefully we will have a “native” Java REPL!

UPDATE1: Checkout a discussion about this post on Reddit!

One of the strong features of Python (and many other interpreted languages) is the availability of a REPL(Read, Evaluate, Print & Loop) interactive shell to execute code without having write a complete program and compile it to see the result. This substantially increases developer productivity especially when working with a large code base. Using a REPL shell (a.k.a. console) you can easily run and test small code snippets in isolation from your main program.

Now if Python can have a REPL why can’t Java? Well the answer is simple, Java is a “compiled” language. Undeterred, I still Googled for a “Java REPL”. Stackoverflow pointed me to Groovy Console. But before going onto Groovy Console, What is Groovy?

From Wikipedia:

Groovy is an object-oriented programming language for the Java platform. It is a dynamic language with features similar to those of Python, Ruby, Perl, and Smalltalk. It can be used as a scripting language for the Java Platform, is dynamically compiled to Java Virtual Machine (JVM) bytecode, and interoperates with other Java code and libraries. Groovy uses a Java-like curly-bracket syntax. Most Java code is also syntactically valid Groovy.

The Groovy installation includes a REPL which is (obviously :)) called “Groovy Console”. Since “Most Java code is also syntactically valid Groovy” I can now use the Groovy Console to execute Java code snippets (see screenshot below).


This is great because now I don’t have to write a complete class and the dreaded “public static void main()” to test a small snippet of code before I merge it into my “big” program.

So there you go…if you want a “Java REPL” install Groovy!


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s