Slide 1

Slide 1 text

Guillaume Laforge 
 @glaforge Benefit from Groovy now, when, why and how

Slide 2

Slide 2 text

Guillaume Laforge 
 @glaforge Benefit from Groovy now, when, why and how By the way, you know there’s a Groovy User Group here in Stockholm? http://www.meetup.com/ Stockholm-Groovy-User- Group/

Slide 3

Slide 3 text

Guillaume Laforge Groovy project lead at . ! @glaforge http://glaforge.appspot.com

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

Groovy in 5 minutes Introduction

Slide 6

Slide 6 text

Groovy… Open Source 
 alternative language 
 for the JVM

Slide 7

Slide 7 text

Groovy… Object-oriented, dynamic, with a functional flavor

Slide 8

Slide 8 text

Groovy… …also supports 
 static type checking & 
 static compilation

Slide 9

Slide 9 text

million 
 downloads
 in 2013

Slide 10

Slide 10 text

million 
 downloads
 in 2013 3

Slide 11

Slide 11 text

million 
 downloads
 in 2013 3 Twice as much as in 2012!

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

Yup, we’re all using Groovy!

Slide 15

Slide 15 text

BIG USE CASES DSLs Apps Scripting Testing Customize

Slide 16

Slide 16 text

BIG USE CASES DSLs Apps Scripting Testing Customize

Slide 17

Slide 17 text

BIG USE CASES DSLs Apps Scripting Testing Customize

Slide 18

Slide 18 text

BIG USE CASES DSLs Apps Scripting Testing Customize

Slide 19

Slide 19 text

BIG USE CASES DSLs Apps Scripting Testing Customize

Slide 20

Slide 20 text

BIG USE CASES DSLs Apps Scripting Testing Customize

Slide 21

Slide 21 text

What for?

Slide 22

Slide 22 text

What for? for what kind of tasks

Slide 23

Slide 23 text

What for? Who? for what kind of tasks

Slide 24

Slide 24 text

What for? Who? for what kind of tasks projects, companies using that pattern

Slide 25

Slide 25 text

Who? How? projects, companies using that pattern What for? for what kind of tasks

Slide 26

Slide 26 text

Who? How? projects, companies using that pattern do it yourself What for? for what kind of tasks

Slide 27

Slide 27 text

Task automation Build automation DevOps Scripting Case 1

Slide 28

Slide 28 text

@glaforge / #groovylang What for? Scripting: task automation ! • Groovy is also a scripting language, you can easily… ! – run a Groovy script with the groovy command ! – @Grab & import third-party libraries •no need for a dedicated project or a build file •leverage the wealth of Ant tasks with the Groovy Ant builder ! – invoke other command-line tools !20

Slide 29

Slide 29 text

@glaforge / #groovylang Who? Scripting: task automation !21

Slide 30

Slide 30 text

@glaforge / #groovylang Who? Scripting: task automation !21 You or anybody :-)

Slide 31

Slide 31 text

@glaforge / #groovylang Who? Scripting: task automation !21 You or anybody :-) Or me for grepping through the logs to compute download stats

Slide 32

Slide 32 text

@glaforge / #groovylang Who? Scripting: task automation !21 You or anybody :-) Or me for grepping through the logs to compute download stats Anyone who’s not a Bash guru!

Slide 33

Slide 33 text

@glaforge / #groovylang Who? Scripting: task automation !21 You or anybody :-) Or me for grepping through the logs to compute download stats Anyone who’s not a Bash guru! Groovy team exports Confluence wiki to html, then transforms to AsciiDoc format

Slide 34

Slide 34 text

@glaforge / #groovylang How? Scripting: task automation !22

Slide 35

Slide 35 text

@glaforge / #groovylang How? Scripting: task automation !22 Use HtmlCleaner to clean the Confluence wiki HTML export

Slide 36

Slide 36 text

@glaforge / #groovylang How? Scripting: task automation !22 Use HtmlCleaner to clean the Confluence wiki HTML export Transform the cleaned HTML into AsciiDoctor format

Slide 37

Slide 37 text

@glaforge / #groovylang How? Scripting: task automation !22

Slide 38

Slide 38 text

@glaforge / #groovylang How? Scripting: task automation !23

Slide 39

Slide 39 text

@glaforge / #groovylang How? Scripting: task automation !23 This is how you can grab a dependency…

Slide 40

Slide 40 text

@glaforge / #groovylang How? Scripting: task automation !23 This is how you can grab a dependency… …and use the library right away, without a build file or IDE

Slide 41

Slide 41 text

@glaforge / #groovylang How? Scripting: task automation !23

Slide 42

Slide 42 text

@glaforge / #groovylang How? Scripting: task automation !24

Slide 43

Slide 43 text

@glaforge / #groovylang How? Scripting: task automation !24 Traverse the file system easily

Slide 44

Slide 44 text

@glaforge / #groovylang How? Scripting: task automation !24

Slide 45

Slide 45 text

@glaforge / #groovylang How? Scripting: task automation !25

Slide 46

Slide 46 text

@glaforge / #groovylang How? Scripting: task automation !25 Execute external commands

Slide 47

Slide 47 text

@glaforge / #groovylang How? Scripting: task automation !25 Execute external commands Wait for the end of the process

Slide 48

Slide 48 text

@glaforge / #groovylang How? Scripting: task automation • Groovy’s APIs feature – an Ant task scripting API to reuse all existing Ant tasks •ftp, ssh, file copying/moving… – a template engine •for generating files, source code – easy creation & parsing of XML or JSON payloads – Sql facility to simplifying accessing a JDBC compliant relational DB – exposing and accessing JMX beans !26

Slide 49

Slide 49 text

@glaforge / #groovylang How? Scripting: task automation !27

Slide 50

Slide 50 text

@glaforge / #groovylang How? Scripting: task automation !28

Slide 51

Slide 51 text

@glaforge / #groovylang How? Scripting: task automation !28 Use the Groovy Markup Builder class to generate HTML or XML payloads

Slide 52

Slide 52 text

@glaforge / #groovylang How? Scripting: task automation !28

Slide 53

Slide 53 text

@glaforge / #groovylang How? Scripting: task automation !29

Slide 54

Slide 54 text

@glaforge / #groovylang How? Scripting: task automation !29 Use the Ant Builder, reusing the Mail Ant task to send a build notification

Slide 55

Slide 55 text

@glaforge / #groovylang How? Scripting: task automation !29

Slide 56

Slide 56 text

@glaforge / #groovylang What for? Scripting: build automation ! • Gradle is a powerful build automation solution – uses Groovy for its automation language ! • You can – build / package / deploy Java, Groovy, Scala, C/C++ projects – handle dependency management cleanly – define and enforce your own enterprise build conventions – extend Gradle declaratively and programmatically !30

Slide 57

Slide 57 text

@glaforge / #groovylang Who? Scripting: build automation !31

Slide 58

Slide 58 text

@glaforge / #groovylang How? Scripting: build automation !32

Slide 59

Slide 59 text

@glaforge / #groovylang How? Scripting: build automation !32 Use the ‘Java’ plugin

Slide 60

Slide 60 text

@glaforge / #groovylang How? Scripting: build automation !32 Use the ‘Java’ plugin Fetch your dependencies from Maven Central

Slide 61

Slide 61 text

@glaforge / #groovylang How? Scripting: build automation !32 Use the ‘Java’ plugin Fetch your dependencies from Maven Central Declare your dependencies and their scope

Slide 62

Slide 62 text

@glaforge / #groovylang How? Scripting: build automation !33

Slide 63

Slide 63 text

@glaforge / #groovylang How? Scripting: build automation !34

Slide 64

Slide 64 text

@glaforge / #groovylang How? Scripting: build automation !34 Declare and use the ‘android’ plugin

Slide 65

Slide 65 text

@glaforge / #groovylang How? Scripting: build automation !35

Slide 66

Slide 66 text

@glaforge / #groovylang How? Scripting: build automation !35 Gradle plugins can create their own declarative mini- language

Slide 67

Slide 67 text

@glaforge / #groovylang What for? Scripting: DevOps ! • More Groovy-based initiatives around the DevOps theme ! • Goals – handle Amazon AWS configuration, provisioning and deployments – talking with remote servers through SSH, and automating server configuration, working with scp and more !36

Slide 68

Slide 68 text

@glaforge / #groovylang What for? Scripting: DevOps • Learn more: ! – http://slideshare.net/aestasit/groovy-dev-ops-in-the-cloud – sshoogr: a Groovy-based DSL for working with remote SSH servers – grammazon: a Groovy library and Gradle plugin for working with Amazon EC2 instances ! – https://github.com/danveloper/provisioning-gradle-plugin – a Gradle plugin for driving server provisioning through configuration !37

Slide 69

Slide 69 text

@glaforge / #groovylang Who? Scripting: DevOps !38

Slide 70

Slide 70 text

@glaforge / #groovylang Who? Scripting: DevOps !38 Anyone who needs to automate cloud deployments

Slide 71

Slide 71 text

@glaforge / #groovylang Who? Scripting: DevOps !38 Anyone who needs to automate cloud deployments sshoogr & gramazon are from

Slide 72

Slide 72 text

@glaforge / #groovylang How? Scripting: DevOps with sshoogr !39

Slide 73

Slide 73 text

@glaforge / #groovylang How? Scripting: DevOps with sshoogr !39 Remote execution

Slide 74

Slide 74 text

@glaforge / #groovylang How? Scripting: DevOps with sshoogr !39 Remote execution SSH Secure copy

Slide 75

Slide 75 text

@glaforge / #groovylang How? Scripting: DevOps with gramazon Gradle plugin !40

Slide 76

Slide 76 text

@glaforge / #groovylang How? Scripting: DevOps with gramazon Gradle plugin !40 Start EC2 instances from your Gradle automation build

Slide 77

Slide 77 text

@glaforge / #groovylang How? Scripting: DevOps !41 https://github.com/aestasit

Slide 78

Slide 78 text

@glaforge / #groovylang How? Scripting: DevOps with Provisioning Gradle plugin !42

Slide 79

Slide 79 text

@glaforge / #groovylang How? Scripting: DevOps with Provisioning Gradle plugin !42 Import and apply the Provisioning plugin for Gradle

Slide 80

Slide 80 text

@glaforge / #groovylang How? Scripting: DevOps with Provisioning Gradle plugin !43

Slide 81

Slide 81 text

@glaforge / #groovylang How? Scripting: DevOps with Provisioning Gradle plugin !43 Virtual box configuration

Slide 82

Slide 82 text

@glaforge / #groovylang How? Scripting: DevOps with Provisioning Gradle plugin !43 Virtual box configuration Network configuration

Slide 83

Slide 83 text

@glaforge / #groovylang How? Scripting: DevOps with Provisioning Gradle plugin !44

Slide 84

Slide 84 text

@glaforge / #groovylang How? Scripting: DevOps with Provisioning Gradle plugin !44 Disk partitioning definition

Slide 85

Slide 85 text

@glaforge / #groovylang How? Scripting: DevOps with Provisioning Gradle plugin !45

Slide 86

Slide 86 text

@glaforge / #groovylang How? Scripting: DevOps with Provisioning Gradle plugin !45 Packages to be installed

Slide 87

Slide 87 text

@glaforge / #groovylang How? Scripting: DevOps with Provisioning Gradle plugin !46

Slide 88

Slide 88 text

@glaforge / #groovylang How? Scripting: DevOps with Provisioning Gradle plugin !46 Post installation commands

Slide 89

Slide 89 text

@glaforge / #groovylang How? Scripting: DevOps with Provisioning Gradle plugin ! ! • Checkout the Provisioning Gradle plugin from Dan Woods: ! – https://github.com/danveloper/provisioning-gradle-plugin !47

Slide 90

Slide 90 text

More readable & expressive tests Testing Case 2

Slide 91

Slide 91 text

@glaforge / #groovylang What for? Testing: More readable & expressive tests ! • Groovy has a malleable and streamlined syntax ! • Makes it nice for creating libraries and frameworks 
 with readable and expressive APIs !49

Slide 92

Slide 92 text

@glaforge / #groovylang Who? Testing: More readable & expressive tests ! • Many companies started integrating Groovy 
 in their projects through testing, 
 before any line of Groovy code in production ! • Benefit – easier to add, evolve and maintain test cases !50

Slide 93

Slide 93 text

@glaforge / #groovylang How? Testing: More readable & expressive tests ! • We’ll have a look at: ! – the Spock testing framework – the Geb web integration testing framework !51

Slide 94

Slide 94 text

No content

Slide 95

Slide 95 text

I’m Spock...

Slide 96

Slide 96 text

I’m Spock... ...the Spock testing framework

Slide 97

Slide 97 text

I’m Spock... ...the Spock testing framework

Slide 98

Slide 98 text

@glaforge / #groovylang How? Testing: Spock test framework !53

Slide 99

Slide 99 text

@glaforge / #groovylang How? Testing: Spock test framework !53 Wiki-like notation for defining data driven tests

Slide 100

Slide 100 text

@glaforge / #groovylang How? Testing: Spock test framework !54

Slide 101

Slide 101 text

No content

Slide 102

Slide 102 text

Define the mock interactions

Slide 103

Slide 103 text

Define the mock interactions Possible to define cardinality, matching any number of parameter, or arbitrary method name

Slide 104

Slide 104 text

No content

Slide 105

Slide 105 text

@glaforge / #groovylang How? Testing: Geb web integration tests !57

Slide 106

Slide 106 text

@glaforge / #groovylang How? Testing: Geb web integration tests !57 An HtmlUnit, FireFox or Chrome browser

Slide 107

Slide 107 text

@glaforge / #groovylang How? Testing: Geb web integration tests !57 An HtmlUnit, FireFox or Chrome browser Drive the browser to a certain URL

Slide 108

Slide 108 text

@glaforge / #groovylang How? Testing: Geb web integration tests !57 An HtmlUnit, FireFox or Chrome browser Drive the browser to a certain URL Assert the title contains the text

Slide 109

Slide 109 text

@glaforge / #groovylang How? Testing: Geb web integration tests !57 An HtmlUnit, FireFox or Chrome browser Drive the browser to a certain URL Assert the title contains the text Fill in a form, click the button to send it

Slide 110

Slide 110 text

@glaforge / #groovylang How? Testing: Geb web integration tests with Spock !58

Slide 111

Slide 111 text

@glaforge / #groovylang How? Testing: Geb web integration tests with Spock !58 With page objects

Slide 112

Slide 112 text

@glaforge / #groovylang How? Testing: Geb web integration tests with Spock !58 With page objects BDD style: given/when/then

Slide 113

Slide 113 text

@glaforge / #groovylang How? Testing: Geb web integration tests with Spock !58 With page objects BDD style: given/when/then Wait for slow loading pages

Slide 114

Slide 114 text

Extension points Configuration Customizing Case 3

Slide 115

Slide 115 text

@glaforge / #groovylang What for? Customizing: extension, configuration, plugins ! • You need to… ! – customize an application for a particular customer – configure an application for a particular environment – create / update / externalize business rules – create plugins for extending a platform !60

Slide 116

Slide 116 text

@glaforge / #groovylang Who? Customizing: extension, configuration, plugins !61

Slide 117

Slide 117 text

@glaforge / #groovylang Who? Customizing: extension, configuration, plugins !61 Continuous Integration server

Slide 118

Slide 118 text

@glaforge / #groovylang Who? Customizing: extension, configuration, plugins !61 Continuous Integration server Internet of Things

Slide 119

Slide 119 text

@glaforge / #groovylang Who? Customizing: extension, configuration, plugins !61 Continuous Integration server Internet of Things Second-generation wiki

Slide 120

Slide 120 text

@glaforge / #groovylang How? Customizing: extension, configuration, plugins ! • Jenkins provides two Groovy plugins: ! – the Groovy plugin
 https://wiki.jenkins-ci.org/display/JENKINS/Groovy+plugin •execute arbitrary Groovy scripts as Jenkins jobs ! – the Groovy postbuild plugin
 https://wiki.jenkins-ci.org/display/JENKINS/Groovy+Postbuild+Plugin •set build outcome, display badges, info or error messages, once a build completed !62

Slide 121

Slide 121 text

@glaforge / #groovylang How? Customizing: extension, configuration, plugins !63

Slide 122

Slide 122 text

@glaforge / #groovylang How? Customizing: extension, configuration, plugins ! • Home automation in the era 
 of the Internet of Things ! • Built-in IDE and simulator allow you to automate 
 all your devices of your home with Groovy scripts
 https://support.smartthings.com/entries/21603015-Introduction-to-Writing-SmartApps ! • Groovy supports allows to • set preferences, subscribe to events, set timers, handle events, send notifications, access people’s presence, consume external services… !64

Slide 123

Slide 123 text

@glaforge / #groovylang How? Customizing: extension, configuration, plugins ! • Home automation in the era 
 of the Internet of Things ! • Built-in IDE and simulator allow you to automate 
 all your devices of your home with Groovy scripts
 https://support.smartthings.com/entries/21603015-Introduction-to-Writing-SmartApps ! • Groovy supports allows to • set preferences, subscribe to events, set timers, handle events, send notifications, access people’s presence, consume external services… !64

Slide 124

Slide 124 text

@glaforge / #groovylang How? Customizing: extension, configuration, plugins !65

Slide 125

Slide 125 text

@glaforge / #groovylang How? Customizing: extension, configuration, plugins ! • XWiki is a second-generation wiki
 http://www.xwiki.org/
 (XWiki case study: http://bit.ly/xwiki-cs) • not just content, but programmable • a platform for building your own apps • extensible with plugins and macros ! • You can create your own plugins and macros in Groovy to extend the wiki, and add dynamic content !66

Slide 126

Slide 126 text

@glaforge / #groovylang How? Customizing: extension, configuration, plugins !67

Slide 127

Slide 127 text

@glaforge / #groovylang How? Customizing: extension, configuration, plugins !67 A wiki user with programming rights can add this Groovy script in a page

Slide 128

Slide 128 text

@glaforge / #groovylang How? Customizing: extension, configuration, plugins !67 A wiki user with programming rights can add this Groovy script in a page Uses Groovy’s handy JSON support

Slide 129

Slide 129 text

@glaforge / #groovylang How? Customizing: extension, configuration, plugins !67 A wiki user with programming rights can add this Groovy script in a page Uses Groovy’s handy JSON support

Slide 130

Slide 130 text

@glaforge / #groovylang How? Customizing: extension, configuration, plugins • What Groovy also brings to the table: ! • a rich API for integrating and embedding Groovy in your app • GroovyShell, Binding, customizers… ! • dedicated configuration API (ConfigSlurper) with a special « builder » syntax with a hierarchical data structure ! • a JMX bean & JMX builder for interacting with 
 and exposing JMX services !68

Slide 131

Slide 131 text

Expressive business rules Domain-Specific Language Case 4

Slide 132

Slide 132 text

@glaforge / #groovylang What for? Domain-Specific Languages: business rules • The goal of Groovy Domain-Specific Languages: • beyond just integrating Groovy scripts and classes: create a dedicated mini-language modeling your business • less technical boilerplate code, focus on the business semantics • write almost plain English-like sentences ! • Groovy has… • a succint, flexible & malleable syntax • both dynamic and compile-time metaprogramming capabilities • operator overloading !70

Slide 133

Slide 133 text

@glaforge / #groovylang Who? Domain-Specific Languages: business rules !71

Slide 134

Slide 134 text

@glaforge / #groovylang Who? Domain-Specific Languages: business rules !71 US Fortune 500 insurance actuaries write risk calculation rules in Groovy

Slide 135

Slide 135 text

@glaforge / #groovylang Who? Domain-Specific Languages: business rules !71 US Fortune 500 insurance actuaries write risk calculation rules in Groovy EPO built a data flow language atop Groovy to extract / transform / route patents across patent offices

Slide 136

Slide 136 text

@glaforge / #groovylang Who? Domain-Specific Languages: business rules !71 US Fortune 500 insurance actuaries write risk calculation rules in Groovy EPO built a data flow language atop Groovy to extract / transform / route patents across patent offices 1 billion € worth of loan granted through Hypoport’s financial platform Groovy decision rules

Slide 137

Slide 137 text

@glaforge / #groovylang Who? Domain-Specific Languages: business rules !71 US Fortune 500 insurance actuaries write risk calculation rules in Groovy EPO built a data flow language atop Groovy to extract / transform / route patents across patent offices 1 billion € worth of loan granted through Hypoport’s financial platform Groovy decision rules Customize experience of travel and hotel reservation with Groovy scripts and templates

Slide 138

Slide 138 text

@glaforge / #groovylang Who? Domain-Specific Languages: business rules !71 US Fortune 500 insurance actuaries write risk calculation rules in Groovy EPO built a data flow language atop Groovy to extract / transform / route patents across patent offices 1 billion € worth of loan granted through Hypoport’s financial platform Groovy decision rules Customize experience of travel and hotel reservation with Groovy scripts and templates Case study: http://bit.ly/epo-cs

Slide 139

Slide 139 text

@glaforge / #groovylang How? Domain-Specific Languages: business rules • Groovy uses BigDecimal by default for floating point • you can, of course, specify floats or doubles if needed • important for financial calculations w/ exact arithmetics !72

Slide 140

Slide 140 text

@glaforge / #groovylang How? Domain-Specific Languages: business rules • Groovy uses BigDecimal by default for floating point • you can, of course, specify floats or doubles if needed • important for financial calculations w/ exact arithmetics !72

Slide 141

Slide 141 text

@glaforge / #groovylang How? Domain-Specific Languages: business rules • Groovy uses BigDecimal by default for floating point • you can, of course, specify floats or doubles if needed • important for financial calculations w/ exact arithmetics !72

Slide 142

Slide 142 text

@glaforge / #groovylang How? Domain-Specific Languages: business rules • Groovy uses BigDecimal by default for floating point • you can, of course, specify floats or doubles if needed • important for financial calculations w/ exact arithmetics !72 Which formula would you rather maintain?

Slide 143

Slide 143 text

@glaforge / #groovylang How? Domain-Specific Languages: business rules • Groovy uses BigDecimal by default for floating point • you can, of course, specify floats or doubles if needed • important for financial calculations w/ exact arithmetics !72 Which formula would you rather maintain? Operator overloading

Slide 144

Slide 144 text

@glaforge / #groovylang How? Domain-Specific Languages: business rules • Groovy lets you create your own control 
 structures with closures !73

Slide 145

Slide 145 text

@glaforge / #groovylang How? Domain-Specific Languages: business rules • Groovy lets you create your own control 
 structures with closures !73

Slide 146

Slide 146 text

@glaforge / #groovylang How? Domain-Specific Languages: business rules • Groovy lets you create your own control 
 structures with closures !73

Slide 147

Slide 147 text

@glaforge / #groovylang How? Domain-Specific Languages: business rules • Groovy lets you create your own control 
 structures with closures !73

Slide 148

Slide 148 text

@glaforge / #groovylang How? Domain-Specific Languages: business rules • A Groovy-based DSL developed at the
 Liverpool School of Tropical Medicine
 to study antimalarial drug resistance !74

Slide 149

Slide 149 text

@glaforge / #groovylang How? Domain-Specific Languages: business rules • A Groovy-based DSL developed at the
 Liverpool School of Tropical Medicine
 to study antimalarial drug resistance !74 Paper: http://bit.ly/ronald-dsl

Slide 150

Slide 150 text

No content

Slide 151

Slide 151 text

Adding properties to numbers through runtime meta-programming

Slide 152

Slide 152 text

Adding properties to numbers through runtime meta-programming Groovy « command chains »: syntax convention for dropping parens & dots for natural-language-like sentences

Slide 153

Slide 153 text

Web & reactive apps Desktop apps Full blown apps Case 5

Slide 154

Slide 154 text

@glaforge / #groovylang Groovy ecosystem • The Groovy ecosystem is rich of tools, frameworks, and libraries ! • For web development, you can use – the mainstream Grails web stack, powered by Spring and Groovy – the newcomer Ratpack, a lightweight toolkit on top of Netty – or Spring Boot, an opinionated & Groovy-friendly take on Spring ! • For desktop applications, you can use Griffon – which supports different view toolkits such as GroovyFX, Swing, Pivot… !77

Slide 155

Slide 155 text

@glaforge / #groovylang What for? Full blown apps: the Grails web framework ! • Grails is a full web stack for the JVM – based on Groovy and Spring – can interact with relational databases through Hibernate or through any NoSQL datastore with Spring Data, with the GORM mapping layer – follows the Convention over Configuration paradigm – lets you see changes live with hot reloading – advanced REST and Async support – built-in view technology (GSPs) with taglibs !78

Slide 156

Slide 156 text

@glaforge / #groovylang Who? Full blown apps: the Grails web framework !79

Slide 157

Slide 157 text

@glaforge / #groovylang Who? Full blown apps: the Grails web framework !79 Created the Open Source Asgard web interface for application deployments and cloud management in Amazon Web Services

Slide 158

Slide 158 text

@glaforge / #groovylang Who? Full blown apps: the Grails web framework !79 Created the Open Source Asgard web interface for application deployments and cloud management in Amazon Web Services LinkedIn uses Grails for their commercial portals, for recruiters, companies searching for profiles…

Slide 159

Slide 159 text

@glaforge / #groovylang Who? Full blown apps: the Grails web framework !79 Created the Open Source Asgard web interface for application deployments and cloud management in Amazon Web Services LinkedIn uses Grails for their commercial portals, for recruiters, companies searching for profiles… Many web frontends from the Sky network serving a few hundred millions page views a month

Slide 160

Slide 160 text

@glaforge / #groovylang Who? Full blown apps: the Grails web framework !79 Created the Open Source Asgard web interface for application deployments and cloud management in Amazon Web Services LinkedIn uses Grails for their commercial portals, for recruiters, companies searching for profiles… Many web frontends from the Sky network serving a few hundred millions page views a month Wired’s product review section is powered by Grails

Slide 161

Slide 161 text

@glaforge / #groovylang How? Full blown apps: the Grails web framework !80

Slide 162

Slide 162 text

@glaforge / #groovylang How? Full blown apps: the Grails web framework !80 Too hard to cover Grails in a couple slides, just go download it now! :-)

Slide 163

Slide 163 text

Groovy’s cool :-) Summary

Slide 164

Slide 164 text

@glaforge / #groovylang Java’s best friend • Java derived syntax –Flat learning curve –Easy to learn • But goes beyond Java –Concise, expressive, readable –Fit for Domain-Specific Languages • Seamless & transparent Java integration –Mix & match Groovy & Java classes (joint compil.) –No language barrier to cross !82

Slide 165

Slide 165 text

@glaforge / #groovylang Groovy’s nature ! • Object oriented dynamic language... ! • But... – as type safe as you want it — static type checking – as fast as you need it — static compilation – as functional as you make it — closures... !83

Slide 166

Slide 166 text

@glaforge / #groovylang Groovy use cases • Scripting tasks, build automation, DevOps • Extension points for customizing / configuring apps • More readable and expressive tests • Business languages & Domain-Specific Languages • Full blown apps – for the web with Grails, Ratpack, Gaelyk – for web reactive programming with Reactor – for desktop with Griffon !84

Slide 167

Slide 167 text

…for your attention! Thanks

Slide 168

Slide 168 text

Slides will be available at: speackerdeck.com/ glaforge Q & A