Date post: | 21-Apr-2017 |
Category: |
Engineering |
Upload: | daniel-fernandes |
View: | 12 times |
Download: | 0 times |
Groovy for Java developers
Agenda:
- A short history;- Typing;- Collections are friends of mine;- Magic methods;- Wonderful operators;- XML isn’t a PITA anymore;- JSON for the clever guys.
Ok, what’s the
Groovy history?
Groovy...is an agile and dynamic language for the Java Virtual Machine
builds upon the strengths of Java but has additional power features inspired by languages like Python, Ruby and Smalltalk
makes modern programming features available to Java developers with almost-zero learning curve
provides the ability to statically type check and statically compile your code for robustness and performance
supports Domain-Specific Languages and other compact syntax so your code becomes easy to read and maintain
makes writing shell and build scripts easy with its powerful processing primitives, OO abilities and an Ant DSL
increases developer productivity by reducing scaffolding code when developing web, GUI, database or console applications
simplifies testing by supporting unit testing and mocking out-of-the-box
seamlessly integrates with all existing Java classes and libraries
compiles straight to Java bytecode so you can use it anywhere you can use Java
Try some Groovy scripts onhttp://www.groovyconsole.appspot.com/
Integerx=10defy=10
printlnx.classprintlny.class
Typing
defx=[]
x.add10x.add5x.add3x.add0.5x.add11.3
printlnx.sort()
Collections are friends of mine
Collections are friends of mine
defx=[:]
x.putAt('name','Daniel')
printlnx
Magic methods
defx=['Daniel','Juliana','Alice','Davi']
x.each{printlnit}
Magic methodsdefmembers=['Daniel','Juliana','Alice','Davi']
deffamilyPositions=[:]
members.each{member->switch(member){case'Alice':case'Davi':familyPositions[member]='child'break
case'Daniel':case'Juliana':familyPositions[member]='parents'break}}
printlnfamilyPositions
defstudent=false
assert!student
Wonderful operators
defstudent=[[name:'Daniel',age:26],[name:'Juliana',age:26]]
printlnstudent*.nameassertstudent*.age==[26,26]
Wonderful operators
classStudent{Stringnameintmark}Studentdaniel=newStudent(name:'Daniel',mark:100)assertdanielasStudent
printlndaniel.markprintlndaniel.name
daniel.setName('DanielFernandes')
printlndaniel.name
Wonderful operators
classStudent{Stringnameintmark
defisApproved(){mark>=70?:false}}Studentdaniel=newStudent(name:'Daniel',mark:100)daniel.isApproved()
Wonderful operators
classStudent{Stringnameintmark
defisApproved(){mark>=70?:false}}
List<Student>students=[newStudent(name:'DanielFernandes',mark:97),newStudent(name:'JulianaFernandes',mark:100)]
//Studentdaniel=students.find{it.name=='Daniel'}defdaniel=students.find{it.name=='Daniel'}printlndaniel?.mark
defdanielFernandes=students.find{it.name=='DanielFernandes'}printlndanielFernandes?.mark
Wonderful operators
classStudent{Stringnameintmark}
List<Student>students=[newStudent(name:'DanielFernandes'),newStudent(name:'JulianaFernandes',mark:100)]
assert'DanielFernandes'instudents.nameassert'JoãoBatista'instudents.name
Wonderful operators
defbrasil=newXmlParser().parseText(newFile('/home/daniel/Dropbox/Public/brasil.xml').text)
defestados=brasil.estados.estadoassertestados.size()==27
defcidades=estados*.cidades*.cidadeassertcidades*.size().sum()==5564
XML isn’t a PITA anymore
JSON for the clever guysimportgroovy.json.JsonSlurper
defpersons=newJsonSlurper().parseText('[{"name":"Daniel"},{"name":"Juliana"}]')
printlnpersons*.name
Anyone.hasQuestions()
Thank.to(“you”).to(“listen me”)
def contact = Person.find { it.name == ‘Daniel Fernandes’ }.contact
assert contact.mail == ‘[email protected]’assert contact.skype == ‘daniel.pedro_fernandes’