77

Groovy brownbag

Embed Size (px)

DESCRIPTION

Slides for a brown-bag on the Groovy programming language. The talk was given on 11/7/2011.

Citation preview

Page 1: Groovy brownbag
Page 2: Groovy brownbag

WHY GROOVY IS SOAWESOME

Chris Trevino

Page 3: Groovy brownbag

“Using a computer requires a fair amount of ritual and ceremony…The less you interact with your computer, the faster you can go. In other words, eliminating ceremony allows you to get to the essence of the problem.”

Neal Ford – The Productive Programmer

Page 4: Groovy brownbag

About Groovy

• Object-oriented• Dynamically Typed• Can use all Java libraries• Feels a lot like Java• Can be compiled or interpreted

Page 5: Groovy brownbag

Groovy Learning Curve

Page 6: Groovy brownbag

Most Java is valid Groovy

Page 7: Groovy brownbag

Steps to Start Using Groovy

1) Install eclipse plugin2) Add groovy nature3) Rename .java file .groovy

Page 8: Groovy brownbag

AWESOMETHINGS

Page 9: Groovy brownbag

Semicolons are Optional

Page 10: Groovy brownbag

Semicolons are Optional

Page 11: Groovy brownbag
Page 12: Groovy brownbag

; =

Page 13: Groovy brownbag

‘public’ is Optional

Page 14: Groovy brownbag

‘public’ is Optional

Page 15: Groovy brownbag
Page 16: Groovy brownbag

You don’t use package protected anyway

Page 17: Groovy brownbag

You don’t use package protected anyway

(@PackageScope annotation is available if you do)

Page 18: Groovy brownbag

‘.class’ is Optional

Page 19: Groovy brownbag

‘.class’ is Optional

Page 20: Groovy brownbag
Page 21: Groovy brownbag

Getters and Setters are Optional

Page 22: Groovy brownbag

Getters and Setters are Optional

Page 23: Groovy brownbag

Getters and Setters are Optional

Page 24: Groovy brownbag

get..() and set..() are Optional

Page 25: Groovy brownbag
Page 26: Groovy brownbag
Page 27: Groovy brownbag

λ

Page 28: Groovy brownbag

λ

Page 29: Groovy brownbag

Lamdba Expressions

Page 30: Groovy brownbag
Page 31: Groovy brownbag

AWESOMENESSSO FAR

Page 32: Groovy brownbag
Page 33: Groovy brownbag
Page 34: Groovy brownbag

MOREAWESOMETHINGS

Page 35: Groovy brownbag

Cleaned up Imports

Page 36: Groovy brownbag

Cleaned up Imports

Page 37: Groovy brownbag

Type Declarations are Optional

Page 38: Groovy brownbag

‘return’ is Optional

Page 39: Groovy brownbag

Streamlined Lists

Page 40: Groovy brownbag

Streamlined Lists

Page 41: Groovy brownbag

Streamlined Maps

Page 42: Groovy brownbag

Streamlined Maps

Page 43: Groovy brownbag

Streamlined Bean Instantiation

Page 44: Groovy brownbag

Safe Traversal

Page 45: Groovy brownbag

Elvis

Page 46: Groovy brownbag

LIST COMPREHENSIONS

Page 47: Groovy brownbag
Page 48: Groovy brownbag
Page 49: Groovy brownbag
Page 50: Groovy brownbag
Page 51: Groovy brownbag
Page 52: Groovy brownbag
Page 53: Groovy brownbag
Page 54: Groovy brownbag
Page 55: Groovy brownbag
Page 56: Groovy brownbag
Page 57: Groovy brownbag
Page 58: Groovy brownbag
Page 59: Groovy brownbag
Page 60: Groovy brownbag
Page 61: Groovy brownbag
Page 62: Groovy brownbag

G-Strings

Page 63: Groovy brownbag

Native Regex Support

Match: ==~ Find: =~

Page 64: Groovy brownbag

Easy File I/O

Page 65: Groovy brownbag

Easy Markup

Page 66: Groovy brownbag
Page 67: Groovy brownbag

Missing Method/Property Handling

Page 68: Groovy brownbag

Categories / Extension Methods

Page 69: Groovy brownbag

Extension methods with metaClass

Page 70: Groovy brownbag

Type Renaming

Page 71: Groovy brownbag

Hella Dynamic

Page 72: Groovy brownbag

Hella Dynamic

Page 73: Groovy brownbag

F***ING AWESOME!!!one!

Page 74: Groovy brownbag

Hella Static

Groovy++ =>

Page 75: Groovy brownbag

F***ING AWESOME!!!one!

Page 76: Groovy brownbag

GROOVY PLAYS NICE

Page 77: Groovy brownbag