groovy basics

Post on 06-Apr-2015

105 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

scripting language for java

TRANSCRIPT

1

Groovy LanguageGroovy LanguageBasicsBasics

Sang ShinSang ShinMichèle GarocheMichèle Garoche

http://www.javapassion.comhttp://www.javapassion.com““Learn with Passion!”Learn with Passion!”

1

2

Topics• What is and Why Groovy?• Refactoring Java code into Groovy code• Differences from Java• Inter-operating with Java

What is & Why Groovy?What is & Why Groovy?

4

Groovy• Dynamic, objected oriented scripting language for

JVM• Seamless integration with Java> Designed with Java in mind from the beginning

(unlike other scripting languages)> Easy to learn for Java programmers

• Borrowed language features from Ruby, Python, Smalltalk

5

Why Groovy over Other Scripting Language?

• Dynamic language specifically designed for Java platform> Leverage the benefit of JVM

• Effortless transition from Java to Groovy> Groovy code, when compiled, generated Java

bytecode> Existing Java code work in Groovy environment “as

it is” basis> Incremental change is possible in fact

recommended

6

Groovy IS Java (or BETTER Java)• Provides syntactic sugar> Easy and fun to code (like Ruby)

• Provides new language features over Java> Dynamic typing> Closure> Meta-programming

• Provides easier development environment> Scripting> Combines compilation and execution into a single

step> Shell interpreter

Why Groovy (or Scala)?Why Groovy (or Scala)?What is “State of Java”?What is “State of Java”?

8

Java as a Programming Language• Java programming language has been a huge

success but it is showing its age• Java programming language has not evolved

significantly since JDK5 (2004)• Java programming language is verbose• Java programming language lacks modern

language features> Closure, Meta-programming, DSL, Functional-

programming, Operator overloading, Regular expression as a first class citizen, etc

• JDK7 is being delayed again

9

Java as a Platform (JVM)• JVM is proven to be a great run-time platform> Secure, highly performing, mature, etc

• We need better programming language over JVM> Runs over JVM> More productive, more fun, less verbose syntax> With modern language features> Seamless interoperability with Java programs

• Viable Choices> Groovy> Scala> JRuby> Clojure

Refactoring Java CodeRefactoring Java Codeinto Groovy Codeinto Groovy Code

11

Java Code - POJOimport java.util.List;import java.util.ArrayList;import java.util.Iterator;

public class Blog { private String name; private String message;

public Blog() {}

public Blog(String name, String Message) { this.name = name; this.message = Message; }

public String getName() { return name; }

public void setName(String name) { this.name = name; }

public String getMessage() { return message; }

public void setMessage(String Message) { this.message = Message; }

public static void main(String[] args) { List Blogs = new ArrayList(); Blogs.add(new Blog("1", "one")); Blogs.add(new Blog("2", "two")); Blogs.add(new Blog("3","three"));

for(Iterator iter = Blogs.iterator();iter.hasNext();) { Blog Blog = (Blog)iter.next(); System.out.println(Blog.getName() + " " + Blog.getMessage()); } }}

12

Groovy Code - POGOclass Blog { String name String message}

def blogs = [ new Blog(name:"1", message:"one"), new Blog(name:"2", message:"two"), new Blog(name:"3", message:"three")]

blogs.each { println "${it.name} ${it.message}"}

• No more import statement

• No more getter/setter methods for properties

• No more constructor method

• No more semicolor ;• No more parenthesis in

a method call• No type specification

13

Groovy Code - POGOclass Blog { String name String message}

def blogs = [ new Blog(name:"1", message:"one"), new Blog(name:"2", message:"two"), new Blog(name:"3", message:"three")]

blogs.each { println "${it.name} ${it.message}"}

• No more ArrayList class> Use [..] notation

• No more “for” loop> Use closure

• No more main() method> main() method gets

added by Groovy• No more

System.out.println()> Use println

Differences from JavaDifferences from Java

15

Differences from Java• Semicolons are optional. > Use them if you like (though you must use them

to put several statements on one line).• The return keyword is optional.• You can use the this keyword inside static

methods (which refers to this class).• Methods and classes are public by default.• Attributes are private by default• Inner classes are not supported at the moment.

In most cases you can use closures instead.

16

Differences from Java• The throws clause in a method signature is not

checked by the Groovy compiler> because there is no difference between checked

and unchecked exceptions.• You will not get compile errors like you would in

Java for using undefined members or passing arguments of the wrong type

• Basic packages are imported by default

17

Packages that are imported• java.io.*• java.lang.*• java.math.BigDecimal• java.math.BigInteger• java.net.*• java.util.*• groovy.lang.*• groovy.util.*

Inter-operating with JavaInter-operating with Java

Groovy EcosystemGroovy Ecosystem

20

Groovy Ecosystem• Grails - Web application framework• Griffon - MVC Desktop application framework• Gant - Ant scripting language• Spock - Testing framework• Gaelyk - Toolkit for Google App Engine• Gpars - Concurrent, Asynch system• CodeNarc - Groovy code analyzer• Many more

21

Thank you!Thank you!

Check JavaPassion.com Codecamps!Check JavaPassion.com Codecamps!http://www.javapassion.com/codecampshttp://www.javapassion.com/codecamps

““Learn with Passion!”Learn with Passion!”

21

top related