Slide 1

Slide 1 text

GROOVY
 son histoire, 
 son oeuvre Guillaume Laforge @glaforge Restlet — the Web API platform Groovy project team

Slide 2

Slide 2 text

We know about APIs!

Slide 3

Slide 3 text

From 2003 onward…

Slide 4

Slide 4 text

2003

Slide 5

Slide 5 text

Bob McWhirter James Strachan

Slide 6

Slide 6 text

Bob McWhirter James Strachan James Strachan and Bob McWhirter gave birth to Groovy: a dynamic and agile scripting language for the JVM. […] James always used to say that it was all Bob's fault, but indeed, James had so many groovy ideas that it's hard to believe it's not his own fault. He kept saying: "Wouldn't it be groovy if we could do this and that...". Hence the name "Groovy". That's roughly how it all started.

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

7 Groovy pre-1.0 • Closures available since 2003 on Java 1.4+ • All the nice shortcuts already, inspired by Python & Ruby • native syntax for lists, maps, etc… • Tons of useful methods to simplify 
 common Java boiler-plate code • Initially dynamically-typed only

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

I join the project in 2003, patches after patches, become committer, then lead when founders left

Slide 11

Slide 11 text

2004

Slide 12

Slide 12 text

5

Slide 13

Slide 13 text

11 Groovy in 2004 • A brand new parser based on Antlr • after two hand-rolled versions • by John Rose and Jeremy Rainer • Jochen « blackdrag » Theodorou joins the project

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

2005

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

2006

Slide 19

Slide 19 text

6

Slide 20

Slide 20 text

17 First paid committer • Jochen becomes the first full-time paid committer • sponsored by BigSky Technologies / No Fluff Just Stuff

Slide 21

Slide 21 text

2007

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

1.0

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

No content

Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

Spock the Enterprise testing framework

Slide 30

Slide 30 text

24 Groovy in 2007 — Groovy 1.5 • The long awaited Java 5 update • annotations, enums, generics… • Joint compiler! • Varargs support • Static imports (including import aliasing) • Named parameters without parentheses

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

Paul King, #1 committer from 2007 to 2010, and overall #1 committer too!

Slide 33

Slide 33 text

2008

Slide 34

Slide 34 text

No content

Slide 35

Slide 35 text

No content

Slide 36

Slide 36 text

29 Griffon and Easyb

Slide 37

Slide 37 text

30 Groovy++ fork! • Not the first fork, but 3rd • by Alex Tkachman (former G2One co-founder) • Big focus on static compilation • interesting playground for our forthcoming static type checking and static compilation support

Slide 38

Slide 38 text

2009

Slide 39

Slide 39 text

I can honestly say if someone had shown me the Programming Scala book back in 2003, I’d probably have never created Groovy

Slide 40

Slide 40 text

Have I had JPA back then, I would certainly not have created Hibernate!

Slide 41

Slide 41 text

No content

Slide 42

Slide 42 text

No content

Slide 43

Slide 43 text

No content

Slide 44

Slide 44 text

No content

Slide 45

Slide 45 text

No content

Slide 46

Slide 46 text

No content

Slide 47

Slide 47 text

No content

Slide 48

Slide 48 text

No content

Slide 49

Slide 49 text

No content

Slide 50

Slide 50 text

No content

Slide 51

Slide 51 text

No content

Slide 52

Slide 52 text

39 The Groovy Ecosystem grows…

Slide 53

Slide 53 text

40 Groovy 1.6 • Performance improvements with call-site caching • Multiple assignments • Optional return in if/else, try/catch, switch/case • More AST transformations • @Singleton, @Lazy, @Immutable, @Delegate • The Grape module system with @Grab • OSGi support

Slide 54

Slide 54 text

41 Groovy 1.7 • Nested and inner classes, and nested static classes • Missing annotation definition support • Power Asserts from Spock • Customize the Groovy Truth! • AST viewer and AST builder • SQL support improvements

Slide 55

Slide 55 text

2010

Slide 56

Slide 56 text

43 Groovy ecosystem marching on… GContracts

Slide 57

Slide 57 text

2011

Slide 58

Slide 58 text

7

Slide 59

Slide 59 text

46 More Groovy ecosystem…

Slide 60

Slide 60 text

47 Groovy 1.8 • Command chain expressions • GPars bundled with the Groovy distribution • Primitive calculation optimizations • Closures • as annotation parameters • currying, memoization and tail recursion • Built-in JSON support

Slide 61

Slide 61 text

I’m joining the Groovy team!

Slide 62

Slide 62 text

No content

Slide 63

Slide 63 text

2012

Slide 64

Slide 64 text

51 Groovy ecosystem continued… • Netflix • Asgard, • Zuul • LinkedIn Glu • GroovyStream

Slide 65

Slide 65 text

52 Groovy 2.0 • Static type checking and static compilation • type inference, flow typing… • « Project Coin » enhancements • binary literals, underscore in numbers, multicatch block • Initial « invoke dynamic » support • Modularity of the Groovy code base with modules

Slide 66

Slide 66 text

2013

Slide 67

Slide 67 text

No content

Slide 68

Slide 68 text

55 Richer Groovy ecosystem…

Slide 69

Slide 69 text

56 Groovy 2.1 • Full « invoke dynamic » support • Type-checking extensions • Meta-annotations • @DelegatesTo annotation • Compiler customization scripts • Distribution bundling GPars 1.0

Slide 70

Slide 70 text

57 Groovy 2.2 • Implicit closure coercion to SAM types • Java lambda friendly! • Pre-compiled type checking extensions • @Memoized transformations for methods

Slide 71

Slide 71 text

2014

Slide 72

Slide 72 text

8

Slide 73

Slide 73 text

60 Groovy ecosystem

Slide 74

Slide 74 text

61 Groovy 2.3 • Traits! • Improved JDK 8 support • Drastic performance improvement for JSON • New AST transformations & improvements • @Builder,@Sortable,@SourceURI, @BaseScript • New markup template engine • More NIO support

Slide 75

Slide 75 text

A look back at the past 6 months

Slide 76

Slide 76 text

FIRED!

Slide 77

Slide 77 text

MARCH 31st

Slide 78

Slide 78 text

MARCH 31st RELEASE GROOVY 2.4 GRAILS 3.0

Slide 79

Slide 79 text

No content

Slide 80

Slide 80 text

No content

Slide 81

Slide 81 text

66 In Groovy 2.4 also… • Optimized bytecode • Bytecode size reduction • Reduced memory consumption • Traits @SelfType annotation • More handy GDK methods • More AST transformation refinements • Groovysh improvements

Slide 82

Slide 82 text

No content

Slide 83

Slide 83 text

What could possibly go wrong?

Slide 84

Slide 84 text

No content

Slide 85

Slide 85 text

THE CODEHAUS DEMISE

Slide 86

Slide 86 text

IMPACT?

Slide 87

Slide 87 text

2012 2013 2014 2015 Downloads

Slide 88

Slide 88 text

2012 2013 2014 2015 1.7M 3M 4.5M ? Downloads

Slide 89

Slide 89 text

2.1 MILLIONS FOR FIRST 4 MONTHS OF 2015

Slide 90

Slide 90 text

MAVEN CENTRAL ONLY

Slide 91

Slide 91 text

MAVEN CENTRAL ONLY +CODEHAUS LEGACY

Slide 92

Slide 92 text

MAVEN CENTRAL ONLY +CODEHAUS LEGACY +BINTRAY

Slide 93

Slide 93 text

And now, what’s next?

Slide 94

Slide 94 text

MUSICAL CHAIRS

Slide 95

Slide 95 text

GRAILS GROOVY CEDRIC GUILLAUME JOCHEN LARI JEFF GRAEME ?

Slide 96

Slide 96 text

GRAILS GROOVY CEDRIC GUILLAUME JOCHEN LARI JEFF GRAEME ?

Slide 97

Slide 97 text

No content

Slide 98

Slide 98 text

MESSAGE TO THE COMMUNITY

Slide 99

Slide 99 text

HERE TO STAY

Slide 100

Slide 100 text

HERE TO STAY INDEPENDENCE

Slide 101

Slide 101 text

HERE TO STAY COMMUNITY ABOVE ALL INDEPENDENCE

Slide 102

Slide 102 text

APACHE INCUBATOR

Slide 103

Slide 103 text

APACHE INCUBATOR MARCH 24TH

Slide 104

Slide 104 text

80 Incubation — mentors • Emmanuel Lécharny • Bertrand Delacrétaz • Roman Shaposhnik • Jim Jagielski • Andrew Bayer

Slide 105

Slide 105 text

81 Incubation — initial committers • Paul King • Cédric Champeau • Pascal Schumacher • Jochen Theodorou • Guillaume Laforge

Slide 106

Slide 106 text

82 Incubation — infrastructure • Mailing-lists created • archived by Nabble • JIRA issues imported • Sources moved to Apache’s Git • with a mirror on Github Please Star it!

Slide 107

Slide 107 text

83 Incubation — new committers • Officially joined the project as committer • Andrés Almiray • To be announced soon too! • Dierk König • Russel Winder

Slide 108

Slide 108 text

84 Incubation — next steps • The next key step is make a first release! • following the Apache guidelines • Made a first attempt June 7th, 
 but still some things to tweak to be fully ready!

Slide 109

Slide 109 text

Now what?

Slide 110

Slide 110 text

86 Groovy 2.4.4 / 2.5 • Improved compiler performance • with an ASM class reader • @Canonical becomes a meta-annotation • More control on the meta-annotation collector • New @MapConstructor transformation • Property validation in transformation parameters • Further AST transformation improvements

Slide 111

Slide 111 text

No content

Slide 112

Slide 112 text

No content

Slide 113

Slide 113 text

No content

Slide 114

Slide 114 text

No content

Slide 115

Slide 115 text

No content

Slide 116

Slide 116 text

Thanks for your attention

Slide 117

Slide 117 text

Questions & Answers