Working with Groovy as a Companion to Java

Groovy is designed as a companion to Java and not as a replacement language for Java. Groovy interoperates with other Java code and libraries smoothly. Everything you can do with Groovy can be done using Java, but Groovy help us reduce the amount of code written to a great extend.

You can call Java from Groovy, as with most other JVM based languages. Groovy dynamically compiles to Java Virtual Machine (JVM) bytecode. Every Groovy type is a subtype of java.lang.Object. So once a Groovy class is compiled to a .class file, it can be used from within Java code just like any other Java class.

A Groovy class can reference a Java class and vice versa. Groovy compiler groovyc even allows circular dependencies. Interfaces defined in Groovy and Java can be implemented from the other. We can have inheritance hierachy with Groovy and Java classes in any order. Groovy Development Kit (GDK) adds libraries and even adds functionality to existing Java libraries. 

When used together, we may use Java for code that needs to have better runtime performance and Groovy for code that needs to be more flexible and readable. Groovy may be used for Automation usecases such as build automation, continuous integration, reporting, shipment, installation etc. Groovy can be also used to create quick prototypes as part of design discussions.


Basic syntax comparison

In Java we can create a Date object reference as follows:

import java.lang.*;
Date date = new Date();

In Groovy we can do as:

date = new Date();

Groovy is mostly used in a dynamic way, but Groovy also has static-typing and static compilation capabilities. You can decide whether to use static typing or whether to use dynamic programming.


Quick Notes Finder Tags

Activities (1) advanced java (1) agile (3) App Servers (6) archived notes (2) ArrayLists (1) Arrays (2) Best Practices (12) Best Practices (Design) (3) Best Practices (Java) (7) Best Practices (Java EE) (1) BigData (3) Chars & Encodings (6) coding problems (2) Collections (15) contests (3) Core Java (All) (53) course plan (2) Database (12) Design patterns (8) dev tools (3) downloads (2) eclipse (9) Essentials (1) examples (14) Exception (1) Exceptions (4) Exercise (1) exercises (6) Getting Started (18) Groovy (2) hadoop (4) hibernate (77) hibernate interview questions (6) History (1) Hot book (4) http monitoring (2) Inheritance (4) intellij (1) java 8 notes (4) Java 9 (1) Java Concepts (7) Java Core (7) java ee exercises (1) java ee interview questions (2) Java Elements (16) Java Environment (1) Java Features (4) java interview points (4) java interview questions (4) javajee initiatives (1) javajee thoughts (3) Java Performance (6) Java Programmer 1 (11) Java Programmer 2 (8) Javascript Frameworks (1) Java SE Professional (1) JSP (1) Legacy Java (1) linked list (3) maven (1) Multithreading (16) NFR (1) No SQL (1) Object Oriented (9) OCPJP (4) OCPWCD (1) OOAD (3) Operators (4) Overloading (2) Overriding (2) Overviews (1) policies (1) programming (1) Quartz Scheduler (1) Quizzes (17) RabbitMQ (1) references (2) resources (1) restful web service (3) Searching (1) security (10) Servlets (8) Servlets and JSP (31) Site Usage Guidelines (1) Sorting (1) source code management (1) spring (4) spring boot (3) Spring Examples (1) Spring Features (1) spring jpa (1) Stack (1) Streams & IO (3) Strings (11) SW Developer Tools (2) testing (1) troubleshooting (1) user interface (1) vxml (8) web services (1) Web Technologies (1) Web Technology Books (1) youtube (1)