JDD2014: Introducing groovy into JAVA project - Yuriy Chulovskyy
description
Transcript of JDD2014: Introducing groovy into JAVA project - Yuriy Chulovskyy
![Page 1: JDD2014: Introducing groovy into JAVA project - Yuriy Chulovskyy](https://reader033.fdocuments.us/reader033/viewer/2022060120/55933b1b1a28abf92c8b46ee/html5/thumbnails/1.jpg)
I
Introducing Groovy into Java project
Yuriy Chulovskyy, Luxoft
![Page 2: JDD2014: Introducing groovy into JAVA project - Yuriy Chulovskyy](https://reader033.fdocuments.us/reader033/viewer/2022060120/55933b1b1a28abf92c8b46ee/html5/thumbnails/2.jpg)
www.luxoft.com
Yuriy Chulovskyy, 10 years in IT
[email protected] http://www.linkedin.com/in/yuriychulovskyy https://github.com/ychulovskyy
Who am I?
![Page 3: JDD2014: Introducing groovy into JAVA project - Yuriy Chulovskyy](https://reader033.fdocuments.us/reader033/viewer/2022060120/55933b1b1a28abf92c8b46ee/html5/thumbnails/3.jpg)
www.luxoft.com
My goals
We can do better!!!
![Page 4: JDD2014: Introducing groovy into JAVA project - Yuriy Chulovskyy](https://reader033.fdocuments.us/reader033/viewer/2022060120/55933b1b1a28abf92c8b46ee/html5/thumbnails/4.jpg)
www.luxoft.com
Why Groovy?
![Page 5: JDD2014: Introducing groovy into JAVA project - Yuriy Chulovskyy](https://reader033.fdocuments.us/reader033/viewer/2022060120/55933b1b1a28abf92c8b46ee/html5/thumbnails/5.jpg)
www.luxoft.com
Syntax sugar. POJO
61 lines of code
![Page 6: JDD2014: Introducing groovy into JAVA project - Yuriy Chulovskyy](https://reader033.fdocuments.us/reader033/viewer/2022060120/55933b1b1a28abf92c8b46ee/html5/thumbnails/6.jpg)
www.luxoft.com
![Page 7: JDD2014: Introducing groovy into JAVA project - Yuriy Chulovskyy](https://reader033.fdocuments.us/reader033/viewer/2022060120/55933b1b1a28abf92c8b46ee/html5/thumbnails/7.jpg)
www.luxoft.com
Syntax sugar. POJO
Semicolons
![Page 8: JDD2014: Introducing groovy into JAVA project - Yuriy Chulovskyy](https://reader033.fdocuments.us/reader033/viewer/2022060120/55933b1b1a28abf92c8b46ee/html5/thumbnails/8.jpg)
www.luxoft.com
Return statement
![Page 9: JDD2014: Introducing groovy into JAVA project - Yuriy Chulovskyy](https://reader033.fdocuments.us/reader033/viewer/2022060120/55933b1b1a28abf92c8b46ee/html5/thumbnails/9.jpg)
www.luxoft.com
public keyword
![Page 10: JDD2014: Introducing groovy into JAVA project - Yuriy Chulovskyy](https://reader033.fdocuments.us/reader033/viewer/2022060120/55933b1b1a28abf92c8b46ee/html5/thumbnails/10.jpg)
www.luxoft.com
Verbose setters/getters
![Page 11: JDD2014: Introducing groovy into JAVA project - Yuriy Chulovskyy](https://reader033.fdocuments.us/reader033/viewer/2022060120/55933b1b1a28abf92c8b46ee/html5/thumbnails/11.jpg)
www.luxoft.com
37 lines of code
Default implementation for the methods
![Page 12: JDD2014: Introducing groovy into JAVA project - Yuriy Chulovskyy](https://reader033.fdocuments.us/reader033/viewer/2022060120/55933b1b1a28abf92c8b46ee/html5/thumbnails/12.jpg)
www.luxoft.com
10 lines of code
![Page 13: JDD2014: Introducing groovy into JAVA project - Yuriy Chulovskyy](https://reader033.fdocuments.us/reader033/viewer/2022060120/55933b1b1a28abf92c8b46ee/html5/thumbnails/13.jpg)
www.luxoft.com
Object construction
Object name mentioned in each line
verbose statement
parentheses
![Page 14: JDD2014: Introducing groovy into JAVA project - Yuriy Chulovskyy](https://reader033.fdocuments.us/reader033/viewer/2022060120/55933b1b1a28abf92c8b46ee/html5/thumbnails/14.jpg)
www.luxoft.com
![Page 15: JDD2014: Introducing groovy into JAVA project - Yuriy Chulovskyy](https://reader033.fdocuments.us/reader033/viewer/2022060120/55933b1b1a28abf92c8b46ee/html5/thumbnails/15.jpg)
www.luxoft.com
![Page 16: JDD2014: Introducing groovy into JAVA project - Yuriy Chulovskyy](https://reader033.fdocuments.us/reader033/viewer/2022060120/55933b1b1a28abf92c8b46ee/html5/thumbnails/16.jpg)
www.luxoft.com
![Page 17: JDD2014: Introducing groovy into JAVA project - Yuriy Chulovskyy](https://reader033.fdocuments.us/reader033/viewer/2022060120/55933b1b1a28abf92c8b46ee/html5/thumbnails/17.jpg)
www.luxoft.com
Truth
![Page 18: JDD2014: Introducing groovy into JAVA project - Yuriy Chulovskyy](https://reader033.fdocuments.us/reader033/viewer/2022060120/55933b1b1a28abf92c8b46ee/html5/thumbnails/18.jpg)
www.luxoft.com
Elvis and null-safe navigation
![Page 19: JDD2014: Introducing groovy into JAVA project - Yuriy Chulovskyy](https://reader033.fdocuments.us/reader033/viewer/2022060120/55933b1b1a28abf92c8b46ee/html5/thumbnails/19.jpg)
www.luxoft.com
Collections. List
![Page 20: JDD2014: Introducing groovy into JAVA project - Yuriy Chulovskyy](https://reader033.fdocuments.us/reader033/viewer/2022060120/55933b1b1a28abf92c8b46ee/html5/thumbnails/20.jpg)
www.luxoft.com
Collections. List
![Page 21: JDD2014: Introducing groovy into JAVA project - Yuriy Chulovskyy](https://reader033.fdocuments.us/reader033/viewer/2022060120/55933b1b1a28abf92c8b46ee/html5/thumbnails/21.jpg)
www.luxoft.com
Collections. List
![Page 22: JDD2014: Introducing groovy into JAVA project - Yuriy Chulovskyy](https://reader033.fdocuments.us/reader033/viewer/2022060120/55933b1b1a28abf92c8b46ee/html5/thumbnails/22.jpg)
www.luxoft.com
Collections. HashMap
![Page 23: JDD2014: Introducing groovy into JAVA project - Yuriy Chulovskyy](https://reader033.fdocuments.us/reader033/viewer/2022060120/55933b1b1a28abf92c8b46ee/html5/thumbnails/23.jpg)
www.luxoft.com
Patterns. Singleton
![Page 24: JDD2014: Introducing groovy into JAVA project - Yuriy Chulovskyy](https://reader033.fdocuments.us/reader033/viewer/2022060120/55933b1b1a28abf92c8b46ee/html5/thumbnails/24.jpg)
www.luxoft.com
Patterns. Immutable
![Page 25: JDD2014: Introducing groovy into JAVA project - Yuriy Chulovskyy](https://reader033.fdocuments.us/reader033/viewer/2022060120/55933b1b1a28abf92c8b46ee/html5/thumbnails/25.jpg)
www.luxoft.com
Patterns. Builder
![Page 26: JDD2014: Introducing groovy into JAVA project - Yuriy Chulovskyy](https://reader033.fdocuments.us/reader033/viewer/2022060120/55933b1b1a28abf92c8b46ee/html5/thumbnails/26.jpg)
www.luxoft.com
Vice versa
![Page 27: JDD2014: Introducing groovy into JAVA project - Yuriy Chulovskyy](https://reader033.fdocuments.us/reader033/viewer/2022060120/55933b1b1a28abf92c8b46ee/html5/thumbnails/27.jpg)
www.luxoft.com
Testing in Groovy.Power asserts
![Page 28: JDD2014: Introducing groovy into JAVA project - Yuriy Chulovskyy](https://reader033.fdocuments.us/reader033/viewer/2022060120/55933b1b1a28abf92c8b46ee/html5/thumbnails/28.jpg)
www.luxoft.com
Testing in Groovy.Power asserts
![Page 29: JDD2014: Introducing groovy into JAVA project - Yuriy Chulovskyy](https://reader033.fdocuments.us/reader033/viewer/2022060120/55933b1b1a28abf92c8b46ee/html5/thumbnails/29.jpg)
www.luxoft.com
Testing in Groovy.Spock
Defines a Specification with features:setup: or given:expect:when:then:where:
![Page 30: JDD2014: Introducing groovy into JAVA project - Yuriy Chulovskyy](https://reader033.fdocuments.us/reader033/viewer/2022060120/55933b1b1a28abf92c8b46ee/html5/thumbnails/30.jpg)
www.luxoft.com
Testing in Groovy.Spock
![Page 31: JDD2014: Introducing groovy into JAVA project - Yuriy Chulovskyy](https://reader033.fdocuments.us/reader033/viewer/2022060120/55933b1b1a28abf92c8b46ee/html5/thumbnails/31.jpg)
www.luxoft.com
Testing in Groovy.Spock
![Page 32: JDD2014: Introducing groovy into JAVA project - Yuriy Chulovskyy](https://reader033.fdocuments.us/reader033/viewer/2022060120/55933b1b1a28abf92c8b46ee/html5/thumbnails/32.jpg)
www.luxoft.com
Testing in Groovy.Spock
![Page 33: JDD2014: Introducing groovy into JAVA project - Yuriy Chulovskyy](https://reader033.fdocuments.us/reader033/viewer/2022060120/55933b1b1a28abf92c8b46ee/html5/thumbnails/33.jpg)
www.luxoft.com
Stream API
![Page 34: JDD2014: Introducing groovy into JAVA project - Yuriy Chulovskyy](https://reader033.fdocuments.us/reader033/viewer/2022060120/55933b1b1a28abf92c8b46ee/html5/thumbnails/34.jpg)
www.luxoft.com
Summary.Syntactic Sugar
● Optional: semicolons, parentheses, return keyword, public keyword, typing
● GString● Truth, Elvis, null-safe navigation● Constructor with map as parameter, “with” closure● Collections API● Power asserts
![Page 35: JDD2014: Introducing groovy into JAVA project - Yuriy Chulovskyy](https://reader033.fdocuments.us/reader033/viewer/2022060120/55933b1b1a28abf92c8b46ee/html5/thumbnails/35.jpg)
www.luxoft.com
Summary.AST transformation
![Page 36: JDD2014: Introducing groovy into JAVA project - Yuriy Chulovskyy](https://reader033.fdocuments.us/reader033/viewer/2022060120/55933b1b1a28abf92c8b46ee/html5/thumbnails/36.jpg)
www.luxoft.com
Summary.Java 8 vs Groovy
![Page 37: JDD2014: Introducing groovy into JAVA project - Yuriy Chulovskyy](https://reader033.fdocuments.us/reader033/viewer/2022060120/55933b1b1a28abf92c8b46ee/html5/thumbnails/37.jpg)
www.luxoft.com
Summary.Infrastructure
![Page 38: JDD2014: Introducing groovy into JAVA project - Yuriy Chulovskyy](https://reader033.fdocuments.us/reader033/viewer/2022060120/55933b1b1a28abf92c8b46ee/html5/thumbnails/38.jpg)
www.luxoft.com
Links
http://www.groovy-lang.org/
https://speakerdeck.com/glaforge/what-makes-groovy-groovy-jax-london-2013
http://glaforge.appspot.com/article/back-from-javaone
http://www.slideshare.net/aalmiray/gr8conf-groovy-ecosystem
https://github.com/ychulovskyy/TestSpockReportGenerator
![Page 39: JDD2014: Introducing groovy into JAVA project - Yuriy Chulovskyy](https://reader033.fdocuments.us/reader033/viewer/2022060120/55933b1b1a28abf92c8b46ee/html5/thumbnails/39.jpg)
www.luxoft.com
Thanks!