Groovy intro

Embed Size (px)

Citation preview

Groovy Introducation

Agenda

What is Groovy?

History of Groovy.

Why Groovy?

Setup Groovy

What do we mean by Dynamic typing in Groovy?

Closure in Groovy.

Comparison between Java and Groovy with examples.

What is GDK?

Strings in Groovy:

Multiline Strings.

GString.

Operator overloading in Groovy.

What is Groovy Truth?

Groovy Classes

Working with files.

What is Groovy

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 which provides Dynamic, Easy-to-use and Integration capabilities to the Java Virutual Machine. It absorbs most of the syntax from Java and it is much powerful in terms of funtionalities which is manifiested in the form Closures, Dynamic Typing etc.

History

Started by James Strachan and Bob McWhirter in 2003.

Guillaume Laforge and Jeremy Rainer took it forward.

Groovy 1.0 release in 2007.

Now in version 2.4

Why Groovy

Feels like Java, with no boilerplate code.

Dynamic.

Extends JDK.

Setup

Download the binary from http://groovy.codehaus.org

Install JDK > 1.5

Set GROOVY_HOME to point to the installation.

Add GROOVY_HOME/bin to the path variable.

SDKMAN! (The Software Development Kit Manager)

curl -s get.sdkman.io | bash

source "$HOME/.sdkman/bin/sdkman-init.sh"

sdk install groovy

groovy -version

Groovy Shell

Open a terminal window and type groovysh. It allows easy access to evaluate Groovy expressions, and run simple experiments.

Dynamic Typing Vs Static Typing

First, dynamically-typed languages perform type checking at runtime, while statically typed languages perform type checking at compile time.

This means that scripts written in dynamically-typed languages (like Groovy) can compile even if they contain errors that will prevent the script from running properly (if at all). If a script written in a statically-typed language (such as Java) contains errors, it will fail to compile until the errors have been fixed.

// Java example

int num;

num = 5;

// Groovy example

num = 5

Groovy is dynamically-typed and determines its variables' data types based on their values, so this line is not required.

Closures

A Closure is a block of code given a name.

Groovy has support for closures, which work much like Java 8 lambdas. A closure is an anonymous block of executable code

Methods can accept closure as parameters.

def helloWorld = {

println "Hello World"

}

Helloworld()

With Parameters

def power = { int x, int y ->

return Math.pow(x, y)

}

println power(2, 3)

Type definition of parameters is the same like variables. If you define a type you can only use this type, but you can also skip the type of parameters and pass in anything you want

def say = { what ->

println what

}

say "Hello World"

Passing Closure

The power of being able to assign closures to variable is that you can also pass them around to methods.

def transform = { str, transformation ->

transformation(str)

}

println transform("Hello World", { it.toUpperCase() })

Java to Groovy

public class Demo{ public static void main(String[] args) { for(int i = 0; i < 3; i++) { System.out.print("shipra" ); } }}

Java to Groovy

3.times { print 'Nexthoughts' }

GDK

Enhancement over JDK.

The GDK sits on top of the JDK

Provides new Libraries and APIs to Groovy Developer.

Strings

In groovy , a string can be defined three different ways :using double quotes, single quotes, or slashes (calledslashy strings). def helloChris = "Hello" def helloJoseph = 'Hello, World' def helloJim = /Hello, World/

MultiLine String

A multiline string is defined by using three double quotes or three single quotes.

Multiline string support is very useful for creating templates or embedded documents (such as XML templates, HTML, and so on).

def multiLineString = """ Hello, This is a multiline string ...... """

GString

A GString is just like a normal string, except that it evaluates expressions that are embedded within the string,in the form ${...}.

def name = "Jim" def helloName = "Hello, ${name}" println helloName // Hello, Jim println helloName.class.name //org.codehaus.groovy.runtime.GStringImpl

Operator Overloading

Groovy supports operator overloading which makes working with Numbers, Collections, Maps and various other data structures easier to use.def date = new Date()date++println date

All operators in Groovy are method calls.

The following few of the operators supported in Groovy and the methods they map toa + b a.plus(b)a - b a.minus(b)a * b a.multiply(b)a ** b a.power(b)a / b a.div(b)a % b a.mod(b)

Groovy Truth

In Groovy you can use objects in if and while expressions.

A non-null and non-empty string will evaluate to true. If("John" ) // any non-empty string is true if(null) // null is false if("" ) // empty strings are false

Non zero numbers will evaluate to true. If(1) // any non-zero value is true If(-1) // any non-zero value is true If(0) // zero value is false

Groovy Truth For Collection

A non-empty collection will evaluate to true.List family = ["John" , "Jane" ]if(family) // true since the list is populated.

And Empty Collection will evaluate to falseList family = [ ]if(family) // false since the map is not populated.

Groovy Classes

In Groovy Classes by default things are public unless you specify otherwise. Class Person { String name Integer age }

Person person = new Person() person.name = Per person.age =30

If you call person.name=Groovy

Then behind the scene

person.setName(Groovy) If you want accidental modification in Groovy, you can add a pair of getters and setters.

Constructors

Person person = new Person(name:Groovy, age:20) Person x = new Person()

Working with Files

new File("foo.txt").bytesnew File("foo.txt").readLines()new File("foo.txt").eachLine { line -> println(line) }

Thank You

More information please contact at [email protected]