SlideShare uma empresa Scribd logo
1 de 70
Baixar para ler offline
Stop Writing JavaStart WritingGroovy,[object Object],EvgenyGoldin,[object Object]
Java => Groovy,[object Object]
Start Writing Groovy
equals vs. ==,[object Object]
Groovy runs Java .. except where it doesn’t.,[object Object],equals() / ==,[object Object],== / is(),[object Object],Works with nulls,[object Object],assert null == null,[object Object],assertnull.is( null ),[object Object],assertnull.equals( null ),[object Object]
Cleanups,[object Object]
Lose public,[object Object],Lose ; and return,[object Object],Lose .class,[object Object],Lose getX() / setX(),[object Object]
Lose public,[object Object],Lose ; and return,[object Object],Lose .class,[object Object],Lose getX() / setX(),[object Object],public String className( Class c ) { return c.getName(); },[object Object],o.setName( className( Map.class ));,[object Object]
Lose public,[object Object],Lose ; and return,[object Object],Lose .class,[object Object],Lose getX() / setX(),[object Object],def className( Class c ) { c.name },[object Object],o.name = className( Map ),[object Object]
Lose public,[object Object],Lose ; and return,[object Object],Lose .class,[object Object],Lose getX() / setX(),[object Object],http://codenarc.sourceforge.net/,[object Object],http://plugins.intellij.net/plugin/?idea&id=5925,[object Object]
Lose public,[object Object],Lose ; and return,[object Object],Lose .class,[object Object],Lose getX() / setX(),[object Object],def className( Class c ) { c.name },[object Object],o.name = className( Map ),[object Object],It is a big deal at the end of the day,[object Object]
def j = 4,[object Object]
def j = 4,[object Object],def list = [],[object Object],def list = [1, 2, 3, 4],[object Object]
def j = 4,[object Object],def list = [],[object Object],def list = [1, 2, 3, 4],[object Object],def map = [:],[object Object],def map = [1:2, 3:4],[object Object]
def j = 4,[object Object],def list = [],[object Object],def list = [1, 2, 3, 4],[object Object],def map = [:],[object Object],def map = [1:2, 3:4],[object Object],def array = [1, 2, 3, 4] as int[],[object Object]
def j = 4,[object Object],def list = [],[object Object],def list = [1, 2, 3, 4],[object Object],def map = [:],[object Object],def map = [1:2, 3:4],[object Object],def array = [1, 2, 3, 4] as int[],[object Object],new Thread({ print j } as Runnable).start(),[object Object]
Safe navigation,[object Object]
GroovyTruth,[object Object]
if (( o != null ) && ( o.size() > 0 )) { .. },[object Object]
if (( o != null ) && ( o.size() > 0 )) { .. },[object Object],if ( o?.size()) { .. },[object Object]
if (( o != null ) && ( o.size() > 0 )) { .. },[object Object],if ( o?.size()) { .. },[object Object],Safe navigation operator : object?.method(),[object Object]
if (( o != null ) && ( o.size() > 0 )) { .. },[object Object],if ( o?.size()) { .. },[object Object],Safe navigation operator : object?.method(),[object Object],Groovy Truth:,[object Object],null is false,[object Object],Empty String, Map or Collection is false,[object Object],Zero number is false,[object Object],if ( list ), if ( string ), if ( map ), if ( o?.size()) ..,[object Object]
But,[object Object]
assert “false”,[object Object]
assert “false”,[object Object],assert “ “,[object Object]
assert “false”,[object Object],assert “ “,[object Object],Object.asBoolean(),[object Object]
assert “false”,[object Object],assert “ “,[object Object],Object.asBoolean(),[object Object],Object => Boolean?,[object Object],Groovy : o asboolean,[object Object],Java      : Boolean.valueOf( String.valueOf( o )),[object Object]
assert “false”,[object Object],assert “ “,[object Object],Object.asBoolean(),[object Object],Object => Boolean?,[object Object],Groovy : o asboolean,[object Object],Java      : Boolean.valueOf( String.valueOf( o )),[object Object],“false”, “null”: false in Java, true in Groovy,[object Object]
assert “false”,[object Object],assert “ “,[object Object],Object.asBoolean(),[object Object],Object => Boolean?,[object Object],Groovy : o asboolean,[object Object],Java      : Boolean.valueOf( String.valueOf( o )),[object Object],“false”, “null”: false in Java, true in Groovy,[object Object],Always specify if you use Java or Groovy Truth,[object Object]
assert “false”,[object Object],assert “ “,[object Object],Object.asBoolean(),[object Object],Object => Boolean?,[object Object],Groovy : o asboolean,[object Object],Java      : Boolean.valueOf( String.valueOf( o )),[object Object],“false”, “null”: false in Java, true in Groovy,[object Object],Always specify if you use Java or Groovy Truth,[object Object]
Elvis Operator,[object Object]
int j = ( o.size() > 0 ) ? o.size() : -1;,[object Object]
int j = ( o.size() > 0 ) ? o.size() : -1,[object Object],def j = ( o.size() ?: -1 ),[object Object]
int j = ( o.size() > 0 ) ? o.size() : -1,[object Object],def j = ( o.size() ?: -1 ),[object Object],Elvis operator: def j = value ?:defaultValue,[object Object],Takes defaultValue if value evaluates to false,[object Object]
int j = ( o.size() > 0 ) ? o.size() : -1,[object Object],def j = ( o.size() ?: -1 ),[object Object],Elvis operator: def j = value ?:defaultValue,[object Object],Takes defaultValue if value evaluates to false,[object Object],Be careful with zero values and empty Strings,[object Object]
int j = ( o.size() > 0 ) ? o.size() : -1,[object Object],def j = ( o.size() ?: -1 ),[object Object],Elvis operator: def j = value ?: defaultValue,[object Object],Takes defaultValue if value evaluates to false,[object Object],Be careful with zero values and empty Strings,[object Object],int j = ( size != null ) ? size : -1,[object Object],int j = size ?: -1,[object Object]
int j = ( o.size() > 0 ) ? o.size() : -1,[object Object],def j = ( o.size() ?: -1 ),[object Object],Elvis operator: def j = value ?: defaultValue,[object Object],Takes defaultValue if value evaluates to false,[object Object],Be careful with zero values and empty Strings,[object Object],int j = ( size != null ) ? size : -1 // Accepts zero size,[object Object],int j = size ?: -1 // Doesn’t accept zero size,[object Object]
Default parameters,[object Object]
public String foo( int j, int k ){ …},[object Object],public String foo( int j ){ foo ( j, 1 ); },[object Object],public String foo(){ foo ( 1, 1 ); },[object Object]
public String foo( int j, int k ){ …},[object Object],public String foo( int j ){ foo ( j, 1 ); },[object Object],public String foo(){ foo ( 1, 1 ); },[object Object],Overload,[object Object]
public String foo( int j, int k ){ …},[object Object],public String foo( int j ){ foo ( j, 1 ); },[object Object],public String foo(){ foo ( 1, 1 ); },[object Object],def foo ( int j = 1, int k = 1 ) { .. },[object Object]
public String foo( int j, int k ){ …},[object Object],public String foo( int j ){ foo ( j, 1 ); },[object Object],public String foo(){ foo ( 1, 1 ); },[object Object],def foo ( int j = 1, int k = 1 ) { .. },[object Object],def foo ( int j = 1, intk ) { .. },[object Object]
public String foo( int j, int k ){ …},[object Object],public String foo( int j ){ foo ( j, 1 ); },[object Object],public String foo(){ foo ( 1, 1 ); },[object Object],def foo ( int j = 1, int k = 1 ) { .. },[object Object],def foo ( int j = 1, intk ) { .. },[object Object],def foo ( intj, int k = 1 ) { .. },[object Object]
public String foo( int j, int k ){ …},[object Object],public String foo( int j ){ foo ( j, 1 ); },[object Object],public String foo(){ foo ( 1, 1 ); },[object Object],def foo ( int j = 1, int k = 1 ) { .. },[object Object],def foo ( int j = 1, intk ) { .. },[object Object],def foo ( intj, int k = 1 ) { .. },[object Object],def foo ( int j  = f1(), intk = f2()) { .. },[object Object]
GroovyBeans,[object Object]
public class Bean () {,[object Object],    private int j;,[object Object],    public intgetJ(){ return this.j; },[object Object],    public void setJ( int j ){ this.j = j; },[object Object],},[object Object]
class Bean {,[object Object],int j,[object Object],},[object Object],def b = new Bean(),[object Object],println ( b.j ) / println ( b.getJ()),[object Object],b.j = 33 / b.setJ( 33 ),[object Object],N Groovy beans can be kept in the same file,[object Object]
GStrings,[object Object]
def s = ‘aaaaaaa’,[object Object]
def s = ‘aaaaaaa’,[object Object],def s = ’’’aaaaaaaaabbbbbbbb’’’,[object Object]
def s = ‘aaaaaaa’,[object Object],def s = ’’’aaaaaaaaabbbbbbbb’’’,[object Object],def s = “aaaaaaa”,[object Object],def s = ”””aaaaaaaaabbbbbbbb”””,[object Object]
def s = “aaaaaaa${b.j}”,[object Object],def s = ”””aaaa${ o.something() + b.j }aaaaabbbbbbbb”””,[object Object]
def s = “aaaaaaa${b.j}”,[object Object],def s = ”””aaaa${ o.something() + b.j }aaaaabbbbbbbb”””,[object Object],log.info ( String.format( “ .. %s .. ”, val )),[object Object],log.info ( “ .. ${val} .. ” ),[object Object]
def s = “aaaaaaa${b.j}”,[object Object],def s = ”””aaaa${ o.something() + b.j }aaaaabbbbbbbb”””,[object Object],assert "aaaaa".class == String,[object Object],assert "${1+2}".class == org.codehaus.groovy.runtime.GStringImpl,[object Object]
assert,[object Object]
if ( o == null ) {    throw new RuntimeException( “msg” ) },[object Object]
if ( o == null ) {    throw new RuntimeException( “msg” ) },[object Object],assert o, “msg”,[object Object]
if ( o == null ) {    throw new RuntimeException( “msg” ) },[object Object],assert o, “msg”,[object Object],assert ( o != null ), “msg”,[object Object]
if ( o == null ) {    throw new RuntimeException( “msg” ) },[object Object],assert o, “msg”,[object Object],assert ( o != null ), “msg”,[object Object],assert o, Long message”,[object Object]
if ( o == null ) {    throw new RuntimeException( “msg” ) },[object Object],assert o, “msg”,[object Object],assert ( o != null ), “msg”,[object Object],assert o, Long message”,[object Object],assert false, “Fatal error”,[object Object]
if ( o == null ) {    throw new RuntimeException( “msg” ) },[object Object],assert o, “msg”,[object Object],assert ( o != null ), “msg”,[object Object],assert o, Long message”,[object Object],assert false, “Fatal error”,[object Object],Asserting code samples is a common practice,[object Object]
def j = [1, 2] ,[object Object],def k = [3, 4] ,[object Object],assert j[0] == k[0] ,[object Object]
def j = [1, 2] ,[object Object],def k = [3, 4] ,[object Object],assert j[0] == k[0] ,[object Object],Assertion failed: ,[object Object],assert j[0] == k[0],[object Object],       ||   |  ||,[object Object],       |1   |  |3,[object Object],       |    |  [3, 4],[object Object],       |    false,[object Object],       [1, 2],[object Object]
GDK,[object Object]
http://groovy.codehaus.org/groovy-jdk/,[object Object],Java+++,[object Object]
http://groovy.codehaus.org/groovy-jdk/,[object Object],Java+++,[object Object],Object,[object Object],String,[object Object],File,[object Object],Collection, Map, List, Set,[object Object],InputStream, OutputStream,[object Object],Reader, Writer,[object Object]
Object/Collection/Map,[object Object],each(),[object Object],any(), every(),[object Object],find(), findAll(), grep(),[object Object],join(),[object Object],collect(),[object Object],min(), max(), sum(),[object Object],inject(),[object Object]
String,[object Object],toURL(),[object Object],execute(),[object Object],eachLine(),[object Object],padLeft(), padRight(),[object Object],tr(),[object Object]
File,[object Object],deleteDir(),[object Object],eachLine(),[object Object],eachFileRecurse(),[object Object],getText(),[object Object],write(String),[object Object],traverse(),[object Object]
Q&A,[object Object]

Mais conteúdo relacionado

Mais procurados

How to Clone Flappy Bird in Swift
How to Clone Flappy Bird in SwiftHow to Clone Flappy Bird in Swift
How to Clone Flappy Bird in SwiftGiordano Scalzo
 
Scala - where objects and functions meet
Scala - where objects and functions meetScala - where objects and functions meet
Scala - where objects and functions meetMario Fusco
 
Transaction is a monad
Transaction is a  monadTransaction is a  monad
Transaction is a monadJarek Ratajski
 
Monads asking the right question
Monads  asking the right questionMonads  asking the right question
Monads asking the right questionPawel Szulc
 
From Java to Kotlin beyond alt+shift+cmd+k - Kotlin Community Conf Milan
From Java to Kotlin beyond alt+shift+cmd+k - Kotlin Community Conf MilanFrom Java to Kotlin beyond alt+shift+cmd+k - Kotlin Community Conf Milan
From Java to Kotlin beyond alt+shift+cmd+k - Kotlin Community Conf MilanFabio Collini
 
Groovy puzzlers по русски с Joker 2014
Groovy puzzlers по русски с Joker 2014Groovy puzzlers по русски с Joker 2014
Groovy puzzlers по русски с Joker 2014Baruch Sadogursky
 
Async code on kotlin: rx java or/and coroutines - Kotlin Night Turin
Async code on kotlin: rx java or/and coroutines - Kotlin Night TurinAsync code on kotlin: rx java or/and coroutines - Kotlin Night Turin
Async code on kotlin: rx java or/and coroutines - Kotlin Night TurinFabio Collini
 
.NET 2015: Будущее рядом
.NET 2015: Будущее рядом.NET 2015: Будущее рядом
.NET 2015: Будущее рядомAndrey Akinshin
 
Fun never stops. introduction to haskell programming language
Fun never stops. introduction to haskell programming languageFun never stops. introduction to haskell programming language
Fun never stops. introduction to haskell programming languagePawel Szulc
 
Haskellで学ぶ関数型言語
Haskellで学ぶ関数型言語Haskellで学ぶ関数型言語
Haskellで学ぶ関数型言語ikdysfm
 
Introduction to Groovy
Introduction to GroovyIntroduction to Groovy
Introduction to GroovyAnton Arhipov
 
From java to kotlin beyond alt+shift+cmd+k - Droidcon italy
From java to kotlin beyond alt+shift+cmd+k - Droidcon italyFrom java to kotlin beyond alt+shift+cmd+k - Droidcon italy
From java to kotlin beyond alt+shift+cmd+k - Droidcon italyFabio Collini
 
Ruby on rails presentation
Ruby on rails presentationRuby on rails presentation
Ruby on rails presentationSynbioz
 
Lucio Floretta - TensorFlow and Deep Learning without a PhD - Codemotion Mila...
Lucio Floretta - TensorFlow and Deep Learning without a PhD - Codemotion Mila...Lucio Floretta - TensorFlow and Deep Learning without a PhD - Codemotion Mila...
Lucio Floretta - TensorFlow and Deep Learning without a PhD - Codemotion Mila...Codemotion
 
Are we ready to Go?
Are we ready to Go?Are we ready to Go?
Are we ready to Go?Adam Dudczak
 
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologiesit-people
 

Mais procurados (20)

How to Clone Flappy Bird in Swift
How to Clone Flappy Bird in SwiftHow to Clone Flappy Bird in Swift
How to Clone Flappy Bird in Swift
 
Scala - where objects and functions meet
Scala - where objects and functions meetScala - where objects and functions meet
Scala - where objects and functions meet
 
Transaction is a monad
Transaction is a  monadTransaction is a  monad
Transaction is a monad
 
Monads asking the right question
Monads  asking the right questionMonads  asking the right question
Monads asking the right question
 
CoffeeScript
CoffeeScriptCoffeeScript
CoffeeScript
 
From Java to Kotlin beyond alt+shift+cmd+k - Kotlin Community Conf Milan
From Java to Kotlin beyond alt+shift+cmd+k - Kotlin Community Conf MilanFrom Java to Kotlin beyond alt+shift+cmd+k - Kotlin Community Conf Milan
From Java to Kotlin beyond alt+shift+cmd+k - Kotlin Community Conf Milan
 
Groovy puzzlers по русски с Joker 2014
Groovy puzzlers по русски с Joker 2014Groovy puzzlers по русски с Joker 2014
Groovy puzzlers по русски с Joker 2014
 
Async code on kotlin: rx java or/and coroutines - Kotlin Night Turin
Async code on kotlin: rx java or/and coroutines - Kotlin Night TurinAsync code on kotlin: rx java or/and coroutines - Kotlin Night Turin
Async code on kotlin: rx java or/and coroutines - Kotlin Night Turin
 
Pure kotlin
Pure kotlinPure kotlin
Pure kotlin
 
.NET 2015: Будущее рядом
.NET 2015: Будущее рядом.NET 2015: Будущее рядом
.NET 2015: Будущее рядом
 
Fun never stops. introduction to haskell programming language
Fun never stops. introduction to haskell programming languageFun never stops. introduction to haskell programming language
Fun never stops. introduction to haskell programming language
 
Haskellで学ぶ関数型言語
Haskellで学ぶ関数型言語Haskellで学ぶ関数型言語
Haskellで学ぶ関数型言語
 
Introduction to Groovy
Introduction to GroovyIntroduction to Groovy
Introduction to Groovy
 
From java to kotlin beyond alt+shift+cmd+k - Droidcon italy
From java to kotlin beyond alt+shift+cmd+k - Droidcon italyFrom java to kotlin beyond alt+shift+cmd+k - Droidcon italy
From java to kotlin beyond alt+shift+cmd+k - Droidcon italy
 
Ruby on rails presentation
Ruby on rails presentationRuby on rails presentation
Ruby on rails presentation
 
Lucio Floretta - TensorFlow and Deep Learning without a PhD - Codemotion Mila...
Lucio Floretta - TensorFlow and Deep Learning without a PhD - Codemotion Mila...Lucio Floretta - TensorFlow and Deep Learning without a PhD - Codemotion Mila...
Lucio Floretta - TensorFlow and Deep Learning without a PhD - Codemotion Mila...
 
Developing iOS apps with Swift
Developing iOS apps with SwiftDeveloping iOS apps with Swift
Developing iOS apps with Swift
 
Intro
IntroIntro
Intro
 
Are we ready to Go?
Are we ready to Go?Are we ready to Go?
Are we ready to Go?
 
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
 

Destaque

Our changing state: the realities of austerity and devolution
Our changing state: the realities of austerity and devolutionOur changing state: the realities of austerity and devolution
Our changing state: the realities of austerity and devolutionBrowne Jacobson LLP
 
LA Chef for OpenStack Hackday
LA Chef for OpenStack HackdayLA Chef for OpenStack Hackday
LA Chef for OpenStack HackdayMatt Ray
 
5 of the Biggest Myths about Growing Your Business
5 of the Biggest Myths about Growing Your Business5 of the Biggest Myths about Growing Your Business
5 of the Biggest Myths about Growing Your BusinessVolaris Group
 
BioBankCloud: Machine Learning on Genomics + GA4GH @ Med at Scale
BioBankCloud: Machine Learning on Genomics + GA4GH  @ Med at ScaleBioBankCloud: Machine Learning on Genomics + GA4GH  @ Med at Scale
BioBankCloud: Machine Learning on Genomics + GA4GH @ Med at ScaleAndy Petrella
 
Brief Encounter: London Zoo
Brief Encounter: London ZooBrief Encounter: London Zoo
Brief Encounter: London ZooEarnest
 
Icsi transformation 11-13 sept - agra
Icsi transformation   11-13 sept - agraIcsi transformation   11-13 sept - agra
Icsi transformation 11-13 sept - agraPavan Kumar Vijay
 
How to Improve Your Website
How to Improve Your WebsiteHow to Improve Your Website
How to Improve Your WebsiteBizSmart Select
 
Navigating Uncertainty when Launching New Ideas
Navigating Uncertainty when Launching New IdeasNavigating Uncertainty when Launching New Ideas
Navigating Uncertainty when Launching New Ideashopperomatic
 
Alfred day hershy
Alfred day hershyAlfred day hershy
Alfred day hershykimmygee_
 
Understanding the Big Picture of e-Science
Understanding the Big Picture of e-ScienceUnderstanding the Big Picture of e-Science
Understanding the Big Picture of e-ScienceAndrew Sallans
 
Parvat Pradesh Mein Pavas
Parvat Pradesh Mein PavasParvat Pradesh Mein Pavas
Parvat Pradesh Mein Pavaszainul2002
 
F.Blin IFLA Trend Report English_dk
F.Blin IFLA Trend Report English_dkF.Blin IFLA Trend Report English_dk
F.Blin IFLA Trend Report English_dkFrederic Blin
 
Guía taller 2 a padres de familia ie medellin
Guía taller 2 a padres de familia ie medellinGuía taller 2 a padres de familia ie medellin
Guía taller 2 a padres de familia ie medellinCarlos Ríos Lemos
 
The Clientshare Academy Briefing - Gold Membership - by Practice Paradox
The Clientshare Academy Briefing - Gold Membership - by Practice ParadoxThe Clientshare Academy Briefing - Gold Membership - by Practice Paradox
The Clientshare Academy Briefing - Gold Membership - by Practice ParadoxPractice Paradox
 
De la aldea a los recintos ceremoniales en la sociedad andina del periodo ini...
De la aldea a los recintos ceremoniales en la sociedad andina del periodo ini...De la aldea a los recintos ceremoniales en la sociedad andina del periodo ini...
De la aldea a los recintos ceremoniales en la sociedad andina del periodo ini...Gusstock Concha Flores
 
Créer et afficher une tag list sur scoop.it
Créer et afficher une tag list sur scoop.itCréer et afficher une tag list sur scoop.it
Créer et afficher une tag list sur scoop.itThierry Zenou
 

Destaque (20)

Our changing state: the realities of austerity and devolution
Our changing state: the realities of austerity and devolutionOur changing state: the realities of austerity and devolution
Our changing state: the realities of austerity and devolution
 
LA Chef for OpenStack Hackday
LA Chef for OpenStack HackdayLA Chef for OpenStack Hackday
LA Chef for OpenStack Hackday
 
5 of the Biggest Myths about Growing Your Business
5 of the Biggest Myths about Growing Your Business5 of the Biggest Myths about Growing Your Business
5 of the Biggest Myths about Growing Your Business
 
BioBankCloud: Machine Learning on Genomics + GA4GH @ Med at Scale
BioBankCloud: Machine Learning on Genomics + GA4GH  @ Med at ScaleBioBankCloud: Machine Learning on Genomics + GA4GH  @ Med at Scale
BioBankCloud: Machine Learning on Genomics + GA4GH @ Med at Scale
 
Brief Encounter: London Zoo
Brief Encounter: London ZooBrief Encounter: London Zoo
Brief Encounter: London Zoo
 
Ngan hang-thuong-mai 2
Ngan hang-thuong-mai 2Ngan hang-thuong-mai 2
Ngan hang-thuong-mai 2
 
Italy weddings
Italy weddingsItaly weddings
Italy weddings
 
Simplifying life
Simplifying lifeSimplifying life
Simplifying life
 
Icsi transformation 11-13 sept - agra
Icsi transformation   11-13 sept - agraIcsi transformation   11-13 sept - agra
Icsi transformation 11-13 sept - agra
 
How to Improve Your Website
How to Improve Your WebsiteHow to Improve Your Website
How to Improve Your Website
 
Navigating Uncertainty when Launching New Ideas
Navigating Uncertainty when Launching New IdeasNavigating Uncertainty when Launching New Ideas
Navigating Uncertainty when Launching New Ideas
 
Alfred day hershy
Alfred day hershyAlfred day hershy
Alfred day hershy
 
Understanding the Big Picture of e-Science
Understanding the Big Picture of e-ScienceUnderstanding the Big Picture of e-Science
Understanding the Big Picture of e-Science
 
Parvat Pradesh Mein Pavas
Parvat Pradesh Mein PavasParvat Pradesh Mein Pavas
Parvat Pradesh Mein Pavas
 
Presentación taller 1
Presentación taller 1Presentación taller 1
Presentación taller 1
 
F.Blin IFLA Trend Report English_dk
F.Blin IFLA Trend Report English_dkF.Blin IFLA Trend Report English_dk
F.Blin IFLA Trend Report English_dk
 
Guía taller 2 a padres de familia ie medellin
Guía taller 2 a padres de familia ie medellinGuía taller 2 a padres de familia ie medellin
Guía taller 2 a padres de familia ie medellin
 
The Clientshare Academy Briefing - Gold Membership - by Practice Paradox
The Clientshare Academy Briefing - Gold Membership - by Practice ParadoxThe Clientshare Academy Briefing - Gold Membership - by Practice Paradox
The Clientshare Academy Briefing - Gold Membership - by Practice Paradox
 
De la aldea a los recintos ceremoniales en la sociedad andina del periodo ini...
De la aldea a los recintos ceremoniales en la sociedad andina del periodo ini...De la aldea a los recintos ceremoniales en la sociedad andina del periodo ini...
De la aldea a los recintos ceremoniales en la sociedad andina del periodo ini...
 
Créer et afficher une tag list sur scoop.it
Créer et afficher une tag list sur scoop.itCréer et afficher une tag list sur scoop.it
Créer et afficher une tag list sur scoop.it
 

Semelhante a Start Writing Groovy

Scala presentation by Aleksandar Prokopec
Scala presentation by Aleksandar ProkopecScala presentation by Aleksandar Prokopec
Scala presentation by Aleksandar ProkopecLoïc Descotte
 
Feel of Kotlin (Berlin JUG 16 Apr 2015)
Feel of Kotlin (Berlin JUG 16 Apr 2015)Feel of Kotlin (Berlin JUG 16 Apr 2015)
Feel of Kotlin (Berlin JUG 16 Apr 2015)intelliyole
 
Clojure for Java developers - Stockholm
Clojure for Java developers - StockholmClojure for Java developers - Stockholm
Clojure for Java developers - StockholmJan Kronquist
 
Functional Programming with Groovy
Functional Programming with GroovyFunctional Programming with Groovy
Functional Programming with GroovyArturo Herrero
 
A swift introduction to Swift
A swift introduction to SwiftA swift introduction to Swift
A swift introduction to SwiftGiordano Scalzo
 
An Introduction to Scala (2014)
An Introduction to Scala (2014)An Introduction to Scala (2014)
An Introduction to Scala (2014)William Narmontas
 
Go: It's Not Just For Google
Go: It's Not Just For GoogleGo: It's Not Just For Google
Go: It's Not Just For GoogleEleanor McHugh
 
Groovy grails types, operators, objects
Groovy grails types, operators, objectsGroovy grails types, operators, objects
Groovy grails types, operators, objectsHusain Dalal
 
GoCracow #5 Bartlomiej klimczak - GoBDD
GoCracow #5 Bartlomiej klimczak - GoBDDGoCracow #5 Bartlomiej klimczak - GoBDD
GoCracow #5 Bartlomiej klimczak - GoBDDBartłomiej Kiełbasa
 
Scala vs Java 8 in a Java 8 World
Scala vs Java 8 in a Java 8 WorldScala vs Java 8 in a Java 8 World
Scala vs Java 8 in a Java 8 WorldBTI360
 
Meetup di GDG Italia - Leonardo Pirro - Codemotion Rome 2018
Meetup di GDG Italia - Leonardo Pirro -  Codemotion Rome 2018 Meetup di GDG Italia - Leonardo Pirro -  Codemotion Rome 2018
Meetup di GDG Italia - Leonardo Pirro - Codemotion Rome 2018 Codemotion
 
No excuses, switch to kotlin
No excuses, switch to kotlinNo excuses, switch to kotlin
No excuses, switch to kotlinThijs Suijten
 
An Intro To ES6
An Intro To ES6An Intro To ES6
An Intro To ES6FITC
 

Semelhante a Start Writing Groovy (20)

Scala presentation by Aleksandar Prokopec
Scala presentation by Aleksandar ProkopecScala presentation by Aleksandar Prokopec
Scala presentation by Aleksandar Prokopec
 
Feel of Kotlin (Berlin JUG 16 Apr 2015)
Feel of Kotlin (Berlin JUG 16 Apr 2015)Feel of Kotlin (Berlin JUG 16 Apr 2015)
Feel of Kotlin (Berlin JUG 16 Apr 2015)
 
Clojure for Java developers - Stockholm
Clojure for Java developers - StockholmClojure for Java developers - Stockholm
Clojure for Java developers - Stockholm
 
Kotlin
KotlinKotlin
Kotlin
 
Functional Programming with Groovy
Functional Programming with GroovyFunctional Programming with Groovy
Functional Programming with Groovy
 
Pooya Khaloo Presentation on IWMC 2015
Pooya Khaloo Presentation on IWMC 2015Pooya Khaloo Presentation on IWMC 2015
Pooya Khaloo Presentation on IWMC 2015
 
A swift introduction to Swift
A swift introduction to SwiftA swift introduction to Swift
A swift introduction to Swift
 
Introduction to Scala
Introduction to ScalaIntroduction to Scala
Introduction to Scala
 
Groovy closures
Groovy closuresGroovy closures
Groovy closures
 
An Introduction to Scala (2014)
An Introduction to Scala (2014)An Introduction to Scala (2014)
An Introduction to Scala (2014)
 
SDC - Einführung in Scala
SDC - Einführung in ScalaSDC - Einführung in Scala
SDC - Einführung in Scala
 
Go: It's Not Just For Google
Go: It's Not Just For GoogleGo: It's Not Just For Google
Go: It's Not Just For Google
 
Groovy grails types, operators, objects
Groovy grails types, operators, objectsGroovy grails types, operators, objects
Groovy grails types, operators, objects
 
GoCracow #5 Bartlomiej klimczak - GoBDD
GoCracow #5 Bartlomiej klimczak - GoBDDGoCracow #5 Bartlomiej klimczak - GoBDD
GoCracow #5 Bartlomiej klimczak - GoBDD
 
Groovy
GroovyGroovy
Groovy
 
JavaScript @ CTK
JavaScript @ CTKJavaScript @ CTK
JavaScript @ CTK
 
Scala vs Java 8 in a Java 8 World
Scala vs Java 8 in a Java 8 WorldScala vs Java 8 in a Java 8 World
Scala vs Java 8 in a Java 8 World
 
Meetup di GDG Italia - Leonardo Pirro - Codemotion Rome 2018
Meetup di GDG Italia - Leonardo Pirro -  Codemotion Rome 2018 Meetup di GDG Italia - Leonardo Pirro -  Codemotion Rome 2018
Meetup di GDG Italia - Leonardo Pirro - Codemotion Rome 2018
 
No excuses, switch to kotlin
No excuses, switch to kotlinNo excuses, switch to kotlin
No excuses, switch to kotlin
 
An Intro To ES6
An Intro To ES6An Intro To ES6
An Intro To ES6
 

Mais de Evgeny Goldin

Polyglot Gradle with Node.js and Play
Polyglot Gradle with Node.js and PlayPolyglot Gradle with Node.js and Play
Polyglot Gradle with Node.js and PlayEvgeny Goldin
 
Node.js meets jenkins
Node.js meets jenkinsNode.js meets jenkins
Node.js meets jenkinsEvgeny Goldin
 
Functional Programming in Groovy
Functional Programming in GroovyFunctional Programming in Groovy
Functional Programming in GroovyEvgeny Goldin
 
Spock Extensions Anatomy
Spock Extensions AnatomySpock Extensions Anatomy
Spock Extensions AnatomyEvgeny Goldin
 
10 Cool Facts about Gradle
10 Cool Facts about Gradle10 Cool Facts about Gradle
10 Cool Facts about GradleEvgeny Goldin
 

Mais de Evgeny Goldin (9)

Alexa skills
Alexa skillsAlexa skills
Alexa skills
 
Polyglot Gradle with Node.js and Play
Polyglot Gradle with Node.js and PlayPolyglot Gradle with Node.js and Play
Polyglot Gradle with Node.js and Play
 
Node.js meets jenkins
Node.js meets jenkinsNode.js meets jenkins
Node.js meets jenkins
 
Functional Programming in Groovy
Functional Programming in GroovyFunctional Programming in Groovy
Functional Programming in Groovy
 
Release It!
Release It!Release It!
Release It!
 
Spock Extensions Anatomy
Spock Extensions AnatomySpock Extensions Anatomy
Spock Extensions Anatomy
 
10 Cool Facts about Gradle
10 Cool Facts about Gradle10 Cool Facts about Gradle
10 Cool Facts about Gradle
 
Groovy Maven Builds
Groovy Maven BuildsGroovy Maven Builds
Groovy Maven Builds
 
Maven Plugins
Maven PluginsMaven Plugins
Maven Plugins
 

Último

Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioChristian Posta
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Will Schroeder
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaborationbruanjhuli
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UbiTrack UK
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024D Cloud Solutions
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfDianaGray10
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URLRuncy Oommen
 
Cloud Revolution: Exploring the New Wave of Serverless Spatial Data
Cloud Revolution: Exploring the New Wave of Serverless Spatial DataCloud Revolution: Exploring the New Wave of Serverless Spatial Data
Cloud Revolution: Exploring the New Wave of Serverless Spatial DataSafe Software
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintMahmoud Rabie
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAshyamraj55
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IES VE
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostMatt Ray
 
PicPay - GenAI Finance Assistant - ChatGPT for Customer Service
PicPay - GenAI Finance Assistant - ChatGPT for Customer ServicePicPay - GenAI Finance Assistant - ChatGPT for Customer Service
PicPay - GenAI Finance Assistant - ChatGPT for Customer ServiceRenan Moreira de Oliveira
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding TeamAdam Moalla
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6DianaGray10
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.YounusS2
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfDaniel Santiago Silva Capera
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesMd Hossain Ali
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemAsko Soukka
 
Spring24-Release Overview - Wellingtion User Group-1.pdf
Spring24-Release Overview - Wellingtion User Group-1.pdfSpring24-Release Overview - Wellingtion User Group-1.pdf
Spring24-Release Overview - Wellingtion User Group-1.pdfAnna Loughnan Colquhoun
 

Último (20)

Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and Istio
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URL
 
Cloud Revolution: Exploring the New Wave of Serverless Spatial Data
Cloud Revolution: Exploring the New Wave of Serverless Spatial DataCloud Revolution: Exploring the New Wave of Serverless Spatial Data
Cloud Revolution: Exploring the New Wave of Serverless Spatial Data
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership Blueprint
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
 
PicPay - GenAI Finance Assistant - ChatGPT for Customer Service
PicPay - GenAI Finance Assistant - ChatGPT for Customer ServicePicPay - GenAI Finance Assistant - ChatGPT for Customer Service
PicPay - GenAI Finance Assistant - ChatGPT for Customer Service
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystem
 
Spring24-Release Overview - Wellingtion User Group-1.pdf
Spring24-Release Overview - Wellingtion User Group-1.pdfSpring24-Release Overview - Wellingtion User Group-1.pdf
Spring24-Release Overview - Wellingtion User Group-1.pdf
 

Start Writing Groovy

  • 1.
  • 2.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.