top 10 reasons to migrate to gradle

71
Top 10 reasons to migrate to Gradle Sergey Morenets, [email protected] October, 11 2015

Upload: strannik2013

Post on 12-Apr-2017

1.258 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Top 10 reasons to migrate to Gradle

Top 10 reasons to migrate to Gradle

Sergey Morenets, [email protected], 11 2015

Page 2: Top 10 reasons to migrate to Gradle

About author• Works in IT since 2000• 12 year of Java SE/EE experience• Regular speaker at Java conferences• Author of “Development of Java applications” and

“Main errors in Java programming ”books• Founder of http://it-simulator.com• 3 years of Gradle usage

Page 3: Top 10 reasons to migrate to Gradle

Agenda

Page 4: Top 10 reasons to migrate to Gradle

Agenda

Page 5: Top 10 reasons to migrate to Gradle

Build systems

Page 6: Top 10 reasons to migrate to Gradle

Google trends

Page 7: Top 10 reasons to migrate to Gradle

Job trends

Page 8: Top 10 reasons to migrate to Gradle

Reasons• Actuality• Programmability• Compactness• JVM-based and Java-based• DSL and API• Plugins• Integration• Configurations• Flexibility• Performance

Page 9: Top 10 reasons to migrate to Gradle

Gradle• Development started in Apr 2008• Current version 2.7 released in September 2015• Default build tool for Android OS

Page 10: Top 10 reasons to migrate to Gradle

Slogan• Make the impossible possible• Make the possible easy• Make the easy elegant

Page 11: Top 10 reasons to migrate to Gradle

Build structure

Page 12: Top 10 reasons to migrate to Gradle

Actuality

Version Release dateMaven 1.0 2004Maven 2.0 2005Maven 3.0 2010Maven 3.1 2013Maven 3.3 2015

Page 13: Top 10 reasons to migrate to Gradle

Actuality

Version Release dateGradle 0.7 2009Gradle 1.0 2012Gradle 1.5 2013Gradle 2.0 2014Gradle 2.7 2015

Page 14: Top 10 reasons to migrate to Gradle

Programmability

Page 15: Top 10 reasons to migrate to Gradle

Programmability

Page 16: Top 10 reasons to migrate to Gradle

Compactness

Page 17: Top 10 reasons to migrate to Gradle

Ant plugin

Page 18: Top 10 reasons to migrate to Gradle
Page 19: Top 10 reasons to migrate to Gradle
Page 20: Top 10 reasons to migrate to Gradle
Page 21: Top 10 reasons to migrate to Gradle

Groovy plugin

Page 22: Top 10 reasons to migrate to Gradle
Page 23: Top 10 reasons to migrate to Gradle

Echo plugin

Page 24: Top 10 reasons to migrate to Gradle
Page 25: Top 10 reasons to migrate to Gradle

Gradle

Page 26: Top 10 reasons to migrate to Gradle
Page 27: Top 10 reasons to migrate to Gradle
Page 28: Top 10 reasons to migrate to Gradle

Maven

Page 29: Top 10 reasons to migrate to Gradle

Gradle

Page 30: Top 10 reasons to migrate to Gradle
Page 31: Top 10 reasons to migrate to Gradle
Page 32: Top 10 reasons to migrate to Gradle

Maven

Page 33: Top 10 reasons to migrate to Gradle

Gradle

Page 34: Top 10 reasons to migrate to Gradle
Page 35: Top 10 reasons to migrate to Gradle

Maven

Page 36: Top 10 reasons to migrate to Gradle

Gradle

Page 37: Top 10 reasons to migrate to Gradle

Transitive

Page 38: Top 10 reasons to migrate to Gradle

Maven. Step #1

Page 39: Top 10 reasons to migrate to Gradle

Maven. Step #2

Page 40: Top 10 reasons to migrate to Gradle

Gradle

Page 41: Top 10 reasons to migrate to Gradle

JVM and Java-based

Page 42: Top 10 reasons to migrate to Gradle

DSL and API

Page 43: Top 10 reasons to migrate to Gradle

DSL

Page 44: Top 10 reasons to migrate to Gradle

Plugin• Reusable pieces of build logic• Can be used in different projects/builds• Script and binary plugins• 110 built-in and 580 custom plugins

Page 45: Top 10 reasons to migrate to Gradle
Page 46: Top 10 reasons to migrate to Gradle

Maven

Page 47: Top 10 reasons to migrate to Gradle

Gradle

Page 48: Top 10 reasons to migrate to Gradle

Plugin portal

Page 49: Top 10 reasons to migrate to Gradle

Custom plugin

gradle helloWorld

Page 50: Top 10 reasons to migrate to Gradle

Language plugins

Java Groovy

Scala C/C++

Objective-C

Page 51: Top 10 reasons to migrate to Gradle

Integrates with everything

Page 52: Top 10 reasons to migrate to Gradle

Version management

Page 53: Top 10 reasons to migrate to Gradle

Version management

Page 54: Top 10 reasons to migrate to Gradle

Maven Scope

Page 55: Top 10 reasons to migrate to Gradle

Configurations

Page 56: Top 10 reasons to migrate to Gradle

Performance

Page 57: Top 10 reasons to migrate to Gradle

Cache everything

• Remote metadata and artifacts• Transitive dependency resolution• Build execution plan• Plugin inputs and outputs• Test results

Page 58: Top 10 reasons to migrate to Gradle

Daemon• Improves startup and execution time of Gradle• Initial Gradle command forks daemon process• Subsequent Gradle commands reuse the build

daemon• If daemon is currently busy then new daemon

process is started on-demand• Useful for small tasks execution• Expires after 3 hours of idle time

Page 59: Top 10 reasons to migrate to Gradle

gradle.properties

• org.gradle.daemon=true• org.gradle.configureondemand=true• org.gradle.parallel=true• org.gradle.java.home=C:\\Program Files\\Java\\

jdk1.8.0_60\\• org.gradle.jvmargs=-Xmx100m

Page 60: Top 10 reasons to migrate to Gradle

Test execution

# of threads

H2 – time(sec) MySQL – time(sec)

1 24,4 27,52 31,1 36,94 46,2 51,18 71,1 80,5

Page 61: Top 10 reasons to migrate to Gradle

Comparison• Maven 3.3.3• Gradle 2.7• JDK 1.8.0.60• Intel Core i7, 4 cores, 16 GB• Multi-project and single project builds• Optimized and default modes

Page 62: Top 10 reasons to migrate to Gradle

Multi-project

• Optimization in Gradle speeds up 2-3 times• Gradle in optimized mode works 1.5 – 2.5 times

faster than Maven in any mode

Operation Gradle (opt)

Gradle (daemon)

Gradle Maven

Maven (parall)

Build(sec) 6,45 7.29 12,16 10,53 11,23Inc build(sec)

1,42 1,59 4,29 3,79 3,83

Clean(sec) 0,93 1,02 2,75 1,48 1,44

Page 63: Top 10 reasons to migrate to Gradle

Gradle

Optimized Not optimized

Page 64: Top 10 reasons to migrate to Gradle

Maven

Optimized Not optimized

Page 65: Top 10 reasons to migrate to Gradle

Single project

• Optimization in Gradle speeds up 2-2.5 times• Gradle in optimized mode works 1.5 – 2 times

faster than Maven in any mode

Operation Gradle (opt)

Gradle (daemon)

Gradle Maven

Maven (parall)

Build(sec) 5,19 5,13 9,99 6,69 6,46Inc build(sec)

1,38 1,40 4,08 3,27 3,08

Clean(sec) 0,87 0,87 2,58 1,24 1,21

Page 66: Top 10 reasons to migrate to Gradle

Behind the scene

Page 67: Top 10 reasons to migrate to Gradle

Future

Page 68: Top 10 reasons to migrate to Gradle

No migration• Trivial project• Maintenance phase• A lot of Maven plugins

Page 69: Top 10 reasons to migrate to Gradle

Theory

Page 70: Top 10 reasons to migrate to Gradle

Practice• https://github.com/hibernate/hibernate-orm• https://github.com/SpringSource/spring-

framework• https://github.com/gradle/gradle

Page 71: Top 10 reasons to migrate to Gradle

Q&A

• Sergey Morenets, [email protected]