SlideShare une entreprise Scribd logo
1  sur  42
Confessions
of a Java developer
who fell in love
with the Groovy language
Victor Trakhtenberg
victortr75@gmail.com @victortr75
Personal
My name is Victor
Personal
Java.IL community co-founder
http://www.meetup.com/JavaIL/
Full Stack Engineer @
http://commercesciences.com/jobs
WeCode-IL
code with us!!
http://www.meetup.com/WeCode-IL/
Groovy language concepts
• Dynamic language
• with optional static-typing and static-
compilation
• Closures
• Functional programming
• Meta-programming
• Traits
• DSLs
• and more…
Groovy Features
• Strings
• Collections
• Date
• Parsing and producing
JSON
• Working with a DB
• Processing XML
• Template engines
• Builders
• Grapes
• Traits
• Processing
configuration
• HTTPBuilder
• and many more…
Groovy History
• 2003 – A dynamic language for the JVM (community commits
– 100%)
• 2007 – Groovy 1.0
• 2008 – G2One era (G2One -> SpringSource -> VMWare ->
Pivotal)
• 2011 – Time to move to GitHub
• 2012 – Groovy 2 and static compilation (community commits
– 63%)
• 2014 – Android support
• 2015 – End of Pivotal sponsorship + Apache foundation
http://melix.github.io/blog/2015/02/who-is-groovy.html
Prelude - REPL
Groovy Strings
Strings
Groovy Collections
Collections
Collections - cont.
Map with default
Groovy Date
Dates: it’s easy!!
TimeDuration + TimeCategory
Using Groovy in a running Java
project
Our setup: Java Play! Framework project
Choose one concern to use Groovy
Our choice: JSON manipulations
Parse JSON
Build JSON
Case Study: Campaign Configuration
Management
Is it a ‘coupon’ campaign
Integrate with Salesforce
Update account at Salesforce
Integrate with Salesforce - Authenticate
Groovy SQL
DB Table to CSV
Groovy + MongoDB = gmongo
Use Groovy for non-production
Spock – Data Tables
http://jaxenter.com/groovy-is-the-swift-alternative-for-android-107846.html
Groovy resources
• http://groovy-lang.org/
• http://glaforge.appspot.com/category/Groovy%20Weekly
• http://www.mrhaki.com/
• https://plus.google.com/communities/105160926044623621768
• http://www.mscharhag.com/2015/02/creating-android-apps-with-
groovy.html
• https://dzone.com/articles/groovys-smooth-operators
• http://groovy.codehaus.org/modules/http-builder/doc/uribuilder.html
• http://www.drdobbs.com/jvm/why-build-your-java-projects-with-
gradle/240168608?pgno=3
• http://www.infoq.com/presentations/groovy-test-java-spock
• http://www.infoq.com/presentations/testing-spock-geb
• http://melix.github.io/blog/2015/02/who-is-groovy.html
• http://groovy-the-superb-homeless.mally.pl/#/
• https://github.com/victorgit/GroovyPresentation
MrHaki – Groovy Goodness
http://mrhaki.blogspot.co.il/2009/09/groovy-goodness-padding-strings.html
Images sources
• http://www.clevercuties.com/myimages/products/Computers/IHEARTPROGRAMMING.jpg
• http://blogs.perceptionsystem.com/wp-content/uploads/2013/12/Happy-Customer.jpg
• http://lifepalette.com/wp-content/uploads/2015/01/Productivity.jpg
• http://www.checkaction.com/blog/wp-content/uploads/2014/01/startup-employee-productivity-tips-675x320.jpg
• http://www.akifarslan.com.tr/wp-content/uploads/2013/10/java.jpg
• http://cdn.makeuseof.com/wp-content/uploads/2012/03/jvm.png?84ec63
• http://cdn.slidesharecdn.com/ss_thumbnails/ecosystem-120717081103-phpapp01-thumbnail-4.jpg?cb=1342530724
• http://www.army-armee.forces.gc.ca/assets/ARMY_Internet/images/ceremonial-guard/index-main.jpg
• http://www.local-guru.net/img/guru/have_fun.png
• http://blog.xo.com/wp-content/uploads/2014/03/pic-raised-hands-550x300.png
• https://pbs.twimg.com/media/BVDKBfUCIAAWKw9.jpg
• http://www.nscsd.org/webpages/jenkondrk/imageGallery/Clip%20art/raise%20hand.gif
• http://ubik.cc/MAOW-Firenze-09/images/repl-loop.png
• http://hirportal.sikerado.hu/images/kep/201110/belyeg.jpg
• http://www.slideshare.net/SpringCentral/groovy-in-thelightofjava8
• http://blog.cacoethes.co.uk/groovyandgrails/groovy-in-light-of-java-8
• http://www.infoq.com/articles/groovy-to-Java-8
• https://tedvinke.wordpress.com/2014/06/20/java-8-lambdas-vs-groovy-closures-compactness-grouping-and-summing/
• http://groovy.mn/static/hh97hMrFEv8Xc9j1zvR9winGH86xmHGbiZNKFTORWYl.jpg
• http://4.bp.blogspot.com/-eHpEiIM6Nss/VRs-EqQjzYI/AAAAAAAATSo/tpEFUn3QrZY/s1600/SQL-Server.png
• http://www.kittenswhiskers.com/wp-content/uploads/sites/48/2014/02/fun-with-yarn-640x422.jpg

Contenu connexe

Tendances

Agile Tools for PHP
Agile Tools for PHPAgile Tools for PHP
Agile Tools for PHPphilipjting
 
Golang #5: To Go or not to Go
Golang #5: To Go or not to GoGolang #5: To Go or not to Go
Golang #5: To Go or not to GoOliver N
 
Internship at CloudFactory
Internship at CloudFactoryInternship at CloudFactory
Internship at CloudFactoryKarmath Dangol
 
From .NET Core 3, all the rest will be legacy
From .NET Core 3, all the rest will be legacyFrom .NET Core 3, all the rest will be legacy
From .NET Core 3, all the rest will be legacyRick van den Bosch
 
Build a Bot Workshop
Build a Bot WorkshopBuild a Bot Workshop
Build a Bot WorkshopBasant Medhat
 
Radu vunvulea building and testing windows 8 metro style applications using ...
Radu vunvulea  building and testing windows 8 metro style applications using ...Radu vunvulea  building and testing windows 8 metro style applications using ...
Radu vunvulea building and testing windows 8 metro style applications using ...Radu Vunvulea
 
ATO 2014 - So You Think You Know 'Go'? The Go Programming Language
ATO 2014 - So You Think You Know 'Go'? The Go Programming LanguageATO 2014 - So You Think You Know 'Go'? The Go Programming Language
ATO 2014 - So You Think You Know 'Go'? The Go Programming LanguageJohn Potocny
 
Dsl로 만나는 groovy
Dsl로 만나는 groovyDsl로 만나는 groovy
Dsl로 만나는 groovySeeyoung Chang
 
Re-Introduction to Third-party Scripting
Re-Introduction to Third-party ScriptingRe-Introduction to Third-party Scripting
Re-Introduction to Third-party Scriptingbenvinegar
 
Ruby, the language of devops
Ruby, the language of devopsRuby, the language of devops
Ruby, the language of devopsRob Kinyon
 
Modern iframe programming
Modern iframe programmingModern iframe programming
Modern iframe programmingbenvinegar
 
Introduction to SDL Passolo
Introduction to SDL PassoloIntroduction to SDL Passolo
Introduction to SDL PassoloAnnie Markova
 
Translating software with SDL Passolo
Translating software with SDL PassoloTranslating software with SDL Passolo
Translating software with SDL PassoloSDL Trados
 
Translating software with SDL Passolo?
Translating software with SDL Passolo?Translating software with SDL Passolo?
Translating software with SDL Passolo?Loctimize GmbH
 
Jfokus - Rocket Propelled Java
Jfokus - Rocket Propelled JavaJfokus - Rocket Propelled Java
Jfokus - Rocket Propelled JavaAndres Almiray
 

Tendances (20)

Kotlin introduction
Kotlin introductionKotlin introduction
Kotlin introduction
 
Agile Tools for PHP
Agile Tools for PHPAgile Tools for PHP
Agile Tools for PHP
 
Golang #5: To Go or not to Go
Golang #5: To Go or not to GoGolang #5: To Go or not to Go
Golang #5: To Go or not to Go
 
Internship at CloudFactory
Internship at CloudFactoryInternship at CloudFactory
Internship at CloudFactory
 
From .NET Core 3, all the rest will be legacy
From .NET Core 3, all the rest will be legacyFrom .NET Core 3, all the rest will be legacy
From .NET Core 3, all the rest will be legacy
 
Scala vs ruby
Scala vs rubyScala vs ruby
Scala vs ruby
 
Build a Bot Workshop
Build a Bot WorkshopBuild a Bot Workshop
Build a Bot Workshop
 
Radu vunvulea building and testing windows 8 metro style applications using ...
Radu vunvulea  building and testing windows 8 metro style applications using ...Radu vunvulea  building and testing windows 8 metro style applications using ...
Radu vunvulea building and testing windows 8 metro style applications using ...
 
ATO 2014 - So You Think You Know 'Go'? The Go Programming Language
ATO 2014 - So You Think You Know 'Go'? The Go Programming LanguageATO 2014 - So You Think You Know 'Go'? The Go Programming Language
ATO 2014 - So You Think You Know 'Go'? The Go Programming Language
 
Dsl로 만나는 groovy
Dsl로 만나는 groovyDsl로 만나는 groovy
Dsl로 만나는 groovy
 
Re-Introduction to Third-party Scripting
Re-Introduction to Third-party ScriptingRe-Introduction to Third-party Scripting
Re-Introduction to Third-party Scripting
 
Ruby, the language of devops
Ruby, the language of devopsRuby, the language of devops
Ruby, the language of devops
 
Modern iframe programming
Modern iframe programmingModern iframe programming
Modern iframe programming
 
Mono Repo
Mono RepoMono Repo
Mono Repo
 
Golang
GolangGolang
Golang
 
Introduction to SDL Passolo
Introduction to SDL PassoloIntroduction to SDL Passolo
Introduction to SDL Passolo
 
Translating software with SDL Passolo
Translating software with SDL PassoloTranslating software with SDL Passolo
Translating software with SDL Passolo
 
Translating software with SDL Passolo?
Translating software with SDL Passolo?Translating software with SDL Passolo?
Translating software with SDL Passolo?
 
Jfokus - Rocket Propelled Java
Jfokus - Rocket Propelled JavaJfokus - Rocket Propelled Java
Jfokus - Rocket Propelled Java
 
Tangram
TangramTangram
Tangram
 

En vedette

How To Keep Your Developers Happy, Whilst Keeping Your Job!
How To Keep Your Developers Happy, Whilst Keeping Your Job!How To Keep Your Developers Happy, Whilst Keeping Your Job!
How To Keep Your Developers Happy, Whilst Keeping Your Job!VMware Tanzu
 
I've Pair Programmed for 30,000 Hours: Ask Me Anything!
I've Pair Programmed for 30,000 Hours: Ask Me Anything!I've Pair Programmed for 30,000 Hours: Ask Me Anything!
I've Pair Programmed for 30,000 Hours: Ask Me Anything!VMware Tanzu
 
Containers Will Not Fix Your Broken Culture (and Other Hard Truths)
Containers Will Not Fix Your Broken Culture (and Other Hard Truths)Containers Will Not Fix Your Broken Culture (and Other Hard Truths)
Containers Will Not Fix Your Broken Culture (and Other Hard Truths)VMware Tanzu
 
The Seven Righteous Fights
The Seven Righteous FightsThe Seven Righteous Fights
The Seven Righteous FightsVMware Tanzu
 
Zen and the Art of Platform
Zen and the Art of PlatformZen and the Art of Platform
Zen and the Art of PlatformVMware Tanzu
 
Temperate grasslands
Temperate grasslandsTemperate grasslands
Temperate grasslandssparkshinx
 
Transforming Culture at Bloomberg
Transforming Culture at BloombergTransforming Culture at Bloomberg
Transforming Culture at BloombergVMware Tanzu
 
Architecture & Operations
Architecture & OperationsArchitecture & Operations
Architecture & OperationsVMware Tanzu
 
Are Your Microservices Naked and Afraid?
Are Your Microservices Naked and Afraid?  Are Your Microservices Naked and Afraid?
Are Your Microservices Naked and Afraid? VMware Tanzu
 
An Introduction to Groovy for Java Developers
An Introduction to Groovy for Java DevelopersAn Introduction to Groovy for Java Developers
An Introduction to Groovy for Java DevelopersKostas Saidis
 
JavaCro 2016 - From Java to Groovy: Adventure Time!
JavaCro 2016 - From Java to Groovy: Adventure Time!JavaCro 2016 - From Java to Groovy: Adventure Time!
JavaCro 2016 - From Java to Groovy: Adventure Time!Iván López Martín
 
Why Domain-Driven Design and Reactive Programming?
Why Domain-Driven Design and Reactive Programming?Why Domain-Driven Design and Reactive Programming?
Why Domain-Driven Design and Reactive Programming?VMware Tanzu
 
Breaking the Monolith
Breaking the MonolithBreaking the Monolith
Breaking the MonolithVMware Tanzu
 
Temperate Forest Power Point
Temperate Forest Power PointTemperate Forest Power Point
Temperate Forest Power PointRajikai
 
Pivotal Cloud Foundry: A Technical Overview
Pivotal Cloud Foundry: A Technical OverviewPivotal Cloud Foundry: A Technical Overview
Pivotal Cloud Foundry: A Technical OverviewVMware Tanzu
 
Climate zones
Climate zonesClimate zones
Climate zoneshookc
 

En vedette (18)

Temperate grasslands
Temperate grasslandsTemperate grasslands
Temperate grasslands
 
How To Keep Your Developers Happy, Whilst Keeping Your Job!
How To Keep Your Developers Happy, Whilst Keeping Your Job!How To Keep Your Developers Happy, Whilst Keeping Your Job!
How To Keep Your Developers Happy, Whilst Keeping Your Job!
 
I've Pair Programmed for 30,000 Hours: Ask Me Anything!
I've Pair Programmed for 30,000 Hours: Ask Me Anything!I've Pair Programmed for 30,000 Hours: Ask Me Anything!
I've Pair Programmed for 30,000 Hours: Ask Me Anything!
 
Containers Will Not Fix Your Broken Culture (and Other Hard Truths)
Containers Will Not Fix Your Broken Culture (and Other Hard Truths)Containers Will Not Fix Your Broken Culture (and Other Hard Truths)
Containers Will Not Fix Your Broken Culture (and Other Hard Truths)
 
The Seven Righteous Fights
The Seven Righteous FightsThe Seven Righteous Fights
The Seven Righteous Fights
 
Zen and the Art of Platform
Zen and the Art of PlatformZen and the Art of Platform
Zen and the Art of Platform
 
Temperate grasslands
Temperate grasslandsTemperate grasslands
Temperate grasslands
 
The temperate zone
The temperate zoneThe temperate zone
The temperate zone
 
Transforming Culture at Bloomberg
Transforming Culture at BloombergTransforming Culture at Bloomberg
Transforming Culture at Bloomberg
 
Architecture & Operations
Architecture & OperationsArchitecture & Operations
Architecture & Operations
 
Are Your Microservices Naked and Afraid?
Are Your Microservices Naked and Afraid?  Are Your Microservices Naked and Afraid?
Are Your Microservices Naked and Afraid?
 
An Introduction to Groovy for Java Developers
An Introduction to Groovy for Java DevelopersAn Introduction to Groovy for Java Developers
An Introduction to Groovy for Java Developers
 
JavaCro 2016 - From Java to Groovy: Adventure Time!
JavaCro 2016 - From Java to Groovy: Adventure Time!JavaCro 2016 - From Java to Groovy: Adventure Time!
JavaCro 2016 - From Java to Groovy: Adventure Time!
 
Why Domain-Driven Design and Reactive Programming?
Why Domain-Driven Design and Reactive Programming?Why Domain-Driven Design and Reactive Programming?
Why Domain-Driven Design and Reactive Programming?
 
Breaking the Monolith
Breaking the MonolithBreaking the Monolith
Breaking the Monolith
 
Temperate Forest Power Point
Temperate Forest Power PointTemperate Forest Power Point
Temperate Forest Power Point
 
Pivotal Cloud Foundry: A Technical Overview
Pivotal Cloud Foundry: A Technical OverviewPivotal Cloud Foundry: A Technical Overview
Pivotal Cloud Foundry: A Technical Overview
 
Climate zones
Climate zonesClimate zones
Climate zones
 

Similaire à Confessions of a java developer that fell in love with the groovy language

Starting from scratch in 2017
Starting from scratch in 2017Starting from scratch in 2017
Starting from scratch in 2017Stefano Bonetta
 
Phonegap for Engineers
Phonegap for EngineersPhonegap for Engineers
Phonegap for EngineersBrian LeRoux
 
JavaScript debugging diagnostic web tools and firefox
JavaScript debugging diagnostic web tools and firefoxJavaScript debugging diagnostic web tools and firefox
JavaScript debugging diagnostic web tools and firefoxGennady Feldman
 
Using Javascript in today's world
Using Javascript in today's worldUsing Javascript in today's world
Using Javascript in today's worldSudar Muthu
 
Dynamic Languages on the JVM
Dynamic Languages on the JVMDynamic Languages on the JVM
Dynamic Languages on the JVMelliando dias
 
CrossWorlds: Unleash the Power of Domino for Connections Development
CrossWorlds: Unleash the Power of Domino for Connections Development CrossWorlds: Unleash the Power of Domino for Connections Development
CrossWorlds: Unleash the Power of Domino for Connections Development LetsConnect
 
Go: What's Different ?
Go: What's Different ?Go: What's Different ?
Go: What's Different ?Tarun Vashisth
 
Social Connections 2015 CrossWorlds and Domino
Social Connections 2015 CrossWorlds and DominoSocial Connections 2015 CrossWorlds and Domino
Social Connections 2015 CrossWorlds and DominoPaul Withers
 
Java.il - Confessions of a java developer that fell in love with the groovy l...
Java.il - Confessions of a java developer that fell in love with the groovy l...Java.il - Confessions of a java developer that fell in love with the groovy l...
Java.il - Confessions of a java developer that fell in love with the groovy l...Victor Trakhtenberg
 
Groovy Finesse
Groovy FinesseGroovy Finesse
Groovy Finessemzgubin
 
Groovy Finesse
Groovy FinesseGroovy Finesse
Groovy Finessemzgubin
 
T4T Training day - NodeJS
T4T Training day - NodeJST4T Training day - NodeJS
T4T Training day - NodeJSTim Sommer
 
Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slideselliando dias
 
IronRuby for the Rubyist
IronRuby for the RubyistIronRuby for the Rubyist
IronRuby for the RubyistWill Green
 
Building a Multithreaded Web-Based Game Engine Using HTML5/CSS3 and JavaScrip...
Building a Multithreaded Web-Based Game Engine Using HTML5/CSS3 and JavaScrip...Building a Multithreaded Web-Based Game Engine Using HTML5/CSS3 and JavaScrip...
Building a Multithreaded Web-Based Game Engine Using HTML5/CSS3 and JavaScrip...Corey Clark, Ph.D.
 

Similaire à Confessions of a java developer that fell in love with the groovy language (20)

Starting from scratch in 2017
Starting from scratch in 2017Starting from scratch in 2017
Starting from scratch in 2017
 
Phonegap for Engineers
Phonegap for EngineersPhonegap for Engineers
Phonegap for Engineers
 
JavaScript debugging diagnostic web tools and firefox
JavaScript debugging diagnostic web tools and firefoxJavaScript debugging diagnostic web tools and firefox
JavaScript debugging diagnostic web tools and firefox
 
Using Javascript in today's world
Using Javascript in today's worldUsing Javascript in today's world
Using Javascript in today's world
 
Node
NodeNode
Node
 
Dynamic Languages on the JVM
Dynamic Languages on the JVMDynamic Languages on the JVM
Dynamic Languages on the JVM
 
CrossWorlds: Unleash the Power of Domino for Connections Development
CrossWorlds: Unleash the Power of Domino for Connections Development CrossWorlds: Unleash the Power of Domino for Connections Development
CrossWorlds: Unleash the Power of Domino for Connections Development
 
Go: What's Different ?
Go: What's Different ?Go: What's Different ?
Go: What's Different ?
 
Social Connections 2015 CrossWorlds and Domino
Social Connections 2015 CrossWorlds and DominoSocial Connections 2015 CrossWorlds and Domino
Social Connections 2015 CrossWorlds and Domino
 
Polyglot Grails
Polyglot GrailsPolyglot Grails
Polyglot Grails
 
Java.il - Confessions of a java developer that fell in love with the groovy l...
Java.il - Confessions of a java developer that fell in love with the groovy l...Java.il - Confessions of a java developer that fell in love with the groovy l...
Java.il - Confessions of a java developer that fell in love with the groovy l...
 
Groovy Finesse
Groovy FinesseGroovy Finesse
Groovy Finesse
 
Groovy Finesse
Groovy FinesseGroovy Finesse
Groovy Finesse
 
Jaoo irony
Jaoo ironyJaoo irony
Jaoo irony
 
T4T Training day - NodeJS
T4T Training day - NodeJST4T Training day - NodeJS
T4T Training day - NodeJS
 
Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slides
 
IronRuby for the Rubyist
IronRuby for the RubyistIronRuby for the Rubyist
IronRuby for the Rubyist
 
cadec-2017-golang
cadec-2017-golangcadec-2017-golang
cadec-2017-golang
 
20120802 timisoara
20120802 timisoara20120802 timisoara
20120802 timisoara
 
Building a Multithreaded Web-Based Game Engine Using HTML5/CSS3 and JavaScrip...
Building a Multithreaded Web-Based Game Engine Using HTML5/CSS3 and JavaScrip...Building a Multithreaded Web-Based Game Engine Using HTML5/CSS3 and JavaScrip...
Building a Multithreaded Web-Based Game Engine Using HTML5/CSS3 and JavaScrip...
 

Dernier

Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...SelfMade bd
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionOnePlan Solutions
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...masabamasaba
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfproinshot.com
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfkalichargn70th171
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...masabamasaba
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareJim McKeeth
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...masabamasaba
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdfPearlKirahMaeRagusta1
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is insideshinachiaurasa2
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech studentsHimanshiGarg82
 
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...Nitya salvi
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfayushiqss
 

Dernier (20)

Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
 

Confessions of a java developer that fell in love with the groovy language

  • 1. Confessions of a Java developer who fell in love with the Groovy language Victor Trakhtenberg victortr75@gmail.com @victortr75
  • 4. Full Stack Engineer @ http://commercesciences.com/jobs
  • 6.
  • 7.
  • 8.
  • 9. Groovy language concepts • Dynamic language • with optional static-typing and static- compilation • Closures • Functional programming • Meta-programming • Traits • DSLs • and more…
  • 10. Groovy Features • Strings • Collections • Date • Parsing and producing JSON • Working with a DB • Processing XML • Template engines • Builders • Grapes • Traits • Processing configuration • HTTPBuilder • and many more…
  • 11. Groovy History • 2003 – A dynamic language for the JVM (community commits – 100%) • 2007 – Groovy 1.0 • 2008 – G2One era (G2One -> SpringSource -> VMWare -> Pivotal) • 2011 – Time to move to GitHub • 2012 – Groovy 2 and static compilation (community commits – 63%) • 2014 – Android support • 2015 – End of Pivotal sponsorship + Apache foundation http://melix.github.io/blog/2015/02/who-is-groovy.html
  • 12.
  • 23.
  • 24. Using Groovy in a running Java project Our setup: Java Play! Framework project Choose one concern to use Groovy Our choice: JSON manipulations
  • 27. Case Study: Campaign Configuration Management
  • 28. Is it a ‘coupon’ campaign
  • 30. Update account at Salesforce
  • 31. Integrate with Salesforce - Authenticate
  • 33. DB Table to CSV
  • 34.
  • 35. Groovy + MongoDB = gmongo
  • 36. Use Groovy for non-production
  • 37. Spock – Data Tables
  • 39. Groovy resources • http://groovy-lang.org/ • http://glaforge.appspot.com/category/Groovy%20Weekly • http://www.mrhaki.com/ • https://plus.google.com/communities/105160926044623621768 • http://www.mscharhag.com/2015/02/creating-android-apps-with- groovy.html • https://dzone.com/articles/groovys-smooth-operators • http://groovy.codehaus.org/modules/http-builder/doc/uribuilder.html • http://www.drdobbs.com/jvm/why-build-your-java-projects-with- gradle/240168608?pgno=3 • http://www.infoq.com/presentations/groovy-test-java-spock • http://www.infoq.com/presentations/testing-spock-geb • http://melix.github.io/blog/2015/02/who-is-groovy.html • http://groovy-the-superb-homeless.mally.pl/#/ • https://github.com/victorgit/GroovyPresentation
  • 40. MrHaki – Groovy Goodness http://mrhaki.blogspot.co.il/2009/09/groovy-goodness-padding-strings.html
  • 41.
  • 42. Images sources • http://www.clevercuties.com/myimages/products/Computers/IHEARTPROGRAMMING.jpg • http://blogs.perceptionsystem.com/wp-content/uploads/2013/12/Happy-Customer.jpg • http://lifepalette.com/wp-content/uploads/2015/01/Productivity.jpg • http://www.checkaction.com/blog/wp-content/uploads/2014/01/startup-employee-productivity-tips-675x320.jpg • http://www.akifarslan.com.tr/wp-content/uploads/2013/10/java.jpg • http://cdn.makeuseof.com/wp-content/uploads/2012/03/jvm.png?84ec63 • http://cdn.slidesharecdn.com/ss_thumbnails/ecosystem-120717081103-phpapp01-thumbnail-4.jpg?cb=1342530724 • http://www.army-armee.forces.gc.ca/assets/ARMY_Internet/images/ceremonial-guard/index-main.jpg • http://www.local-guru.net/img/guru/have_fun.png • http://blog.xo.com/wp-content/uploads/2014/03/pic-raised-hands-550x300.png • https://pbs.twimg.com/media/BVDKBfUCIAAWKw9.jpg • http://www.nscsd.org/webpages/jenkondrk/imageGallery/Clip%20art/raise%20hand.gif • http://ubik.cc/MAOW-Firenze-09/images/repl-loop.png • http://hirportal.sikerado.hu/images/kep/201110/belyeg.jpg • http://www.slideshare.net/SpringCentral/groovy-in-thelightofjava8 • http://blog.cacoethes.co.uk/groovyandgrails/groovy-in-light-of-java-8 • http://www.infoq.com/articles/groovy-to-Java-8 • https://tedvinke.wordpress.com/2014/06/20/java-8-lambdas-vs-groovy-closures-compactness-grouping-and-summing/ • http://groovy.mn/static/hh97hMrFEv8Xc9j1zvR9winGH86xmHGbiZNKFTORWYl.jpg • http://4.bp.blogspot.com/-eHpEiIM6Nss/VRs-EqQjzYI/AAAAAAAATSo/tpEFUn3QrZY/s1600/SQL-Server.png • http://www.kittenswhiskers.com/wp-content/uploads/sites/48/2014/02/fun-with-yarn-640x422.jpg

Notes de l'éditeur

  1. שלום לכולם. כמה מילים על עצמי. קוראים לי ויקטור.
  2. אני אחד המארגנים של קהילת Java.IL יחד עם אסף, אורי, חיים ותומר אנחנו מארגנים meetups וכנסים בנושאים הקשורים ל Java JVM ושפות תיכנות JVM אנחנו פועלים כחצי שנה, יש כבר קרוב ל 650 נרשמים. אני רוצה לנצל את ההזדמנות הזאת כדי להזמין אותכם להירשם, להשתתף במיטאפים: גם לשמוע וגם לדבר, ולהיות פעילים בקהילה.
  3. בזמני החופשי מפעילות זו אני עןשה חיים ב Commerce Sciences יחד עם שאר הצוות אנחנו כובשים את עולם ה Website Personalization אנחנו מגייסים. אז אם אתם אוהבים ליצור מוצרים שלקוחות אוהבים להשתמש, דברו איתי.
  4. אני אוהב לתכנת. אחת הסיבות המרכזיות היא שאני אוהב לראות שמשתמשים במה שאני יוצר, אני אוהב שלקוחות אוהבים להשתמש במוצרים שאני יוצר. לכן חשוב לי להשתמש בכלים שעוזרים לי להיות פרודוקטיבי, כלים שעוזרים לי לגרום לדברים לקרות. שפת תיכנות היא אחד הכלים האלה.
  5. בואו נראה איך Java בתחום הזה. ה runtime של Java ה JVM הוא מערכת יציבה שקיימת כבר 20 שנה, מאד נדיר להיתקל בבאג כאן. אפשר לבנות מערכות שהן robust and scalable - תורם הרבה לפרודקטיביות. ל Java יש ecosystem מאד עשיר, כמעט כל בעיה שאתם נתקלים אפשר למצוא תשובה או לשאול…- תורם הרבה לפרודקטיביות.
  6. לפני כשנתיים וחצי פגשתי את Groovy. Groovy היא שפת תיכנות מבוססת על  Java, היא רצה מעל JVM, ולכן נהנת מכל הדברים הטובים שלה. היות ואפשר להשתמש בקוד Java בתוך קוד של Groovy אפשר להנות מה ecosystem של Java, אבל Groovy מוסיפה ecosystem נוסף, ecosystem חם ומקבל מפתחים חדשים. Groovy היא שפה דינאמית וקלילה בעזרת Groovy אפשר להיות הרבה יותר פרודוקטיבי וגם להנות מהפיתוח.
  7. ויש הרבה features מעניינים. אני לא הולך לפרט כאן את features, יש הרבה חומר ברשת. אני אגע בקצרה בכמה בהמשך.
  8. משתמשים ב Groovy בהרבה אירגונים גדולים ומפורסמים וקטנים. אני משתתף הרבה במיטאפים וכנסים בארץ, אני מארגן חלק מהם ואני שומע מעט מאד על Groovy. זה לא המצב בעולם, בכנסים מובילים בעולם מדברים הרבה על Groovy יש הרבה פרויקטים עם Groovy. אני חושב שהמצב בארץ לא מוצדק חבל שזה כך ואני רוצה לשנות את זה. אני חושב שיש ל Groovy יתרון על פני שפות JVM אחרות שגם הן נהנות מה runtime הזה. יש כמה שפות מצויינות אבל ל Groovy  קל מאד להיכנס בניגוד לשפות אחרות. לכן אני חושב שכל מפתח Java חייב לדעת Groovy: זה יכול להיות שימושי בהרבה מאד מקרים, זה מכניס כיף לפיתוח. אני אראה לכם כמה דוגמאות כאלה בהמשך.
  9. לפני שאני נוגע ב Groovy עצמו אני רוצה להראות לכם כלי מאד שימושי שמגיע עם Groovy, זהו כלי שאפשר להשתמש בו גם כשמפתחים Java. מפתחי Ruby,Python,Scala,Javascript שבינכם מכירים את המושג REPL: זוהי אותה סביבה command line בהרבה מקרים, שמאפשרת לכתוב פקודות בשפה מסויימת ומייד לראות תוצאה. זה מאד שימושי, תורם הרבה לזרימה בזמן הפיתוח. כמה נחמד לרשום קוד Javascript ב Chrome dev tool ופשוט מייד לראות תוצאה. ב Java אין משהו כזה, ואני חושב שזאת נכות של  Java. אבל עכשיו בזכות ה groovy shell יש את זה גם ב Java!! אני אראה לכם. אני קיבלתי ממקור חיצוני URL אבל הוא היה escaped חיפשתי באינטרנט ומצאתי שיש API של apache commons lang שמאפשר לעשות unescape בדרך כלל ב Java צריך לייצר איזשהו main או unit test no more!!!! אפשר לעשות את זה גם מ IDE הנה כך ב intellij
  10. אחד הדברים הראשונים שאני למדתי לאהוב ב Groovy הן Groovy collections הן מתבססות על Java collections אבל מוסיפות כל כך הרבה יכולות! הנה כך מאתחלים רשימה שהיא בעצם ה ArrayList של Java קל מאד לקחת רשימה ולהפוך אותה לרשימה אחרת
  11. איך מאתחלים map עם ערכים התחלתיים וערך default שורה אחת ב Groovy וכך עושים את זה ב  Java
  12. ב Commerce Sciences אנחנו מפתחים מוצר שה front end שלו היא single page application המפותח מעל Ember וה- backend אפליקציית Java מעל Play! Framework. אנחנו מנהלים campaigns של לקוחות. campaign הוא בעצם json שנשמר ב DB. חלקים מה json הזה נשלחים ל front end בפורמט ש ember מצפה לקבל. יש הרבה התעסקות עם json. אנחנו מצאנו את עצמנו מתאמצים המון לעשות את זה ב Java. ב Groovy זה כל כך פשוט, תיכף תיראו.
  13. הסיפר שלנו הוא בעצם דוגמה לשימוש ב Groovy באפלירציית Java קיימת. אנחנו התחלנו עם בעיה אחת: מניפולציות json.