SlideShare uma empresa Scribd logo
1 de 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

Mais conteúdo relacionado

Mais procurados

Re-Introduction to Third-party Scripting
Re-Introduction to Third-party ScriptingRe-Introduction to Third-party Scripting
Re-Introduction to Third-party Scripting
benvinegar
 
Modern iframe programming
Modern iframe programmingModern iframe programming
Modern iframe programming
benvinegar
 

Mais procurados (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
 

Destaque

The Seven Righteous Fights
The Seven Righteous FightsThe Seven Righteous Fights
The Seven Righteous Fights
VMware Tanzu
 
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
 
Temperate Forest Power Point
Temperate Forest Power PointTemperate Forest Power Point
Temperate Forest Power Point
Rajikai
 
Climate zones
Climate zonesClimate zones
Climate zones
hookc
 

Destaque (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
 

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

Phonegap for Engineers
Phonegap for EngineersPhonegap for Engineers
Phonegap for Engineers
Brian 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 firefox
Gennady Feldman
 
Dynamic Languages on the JVM
Dynamic Languages on the JVMDynamic Languages on the JVM
Dynamic Languages on the JVM
elliando dias
 
T4T Training day - NodeJS
T4T Training day - NodeJST4T Training day - NodeJS
T4T Training day - NodeJS
Tim Sommer
 
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.
 

Semelhante a 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...
 

Último

AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
VictorSzoltysek
 
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
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
mohitmore19
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
VishalKumarJha10
 

Último (20)

HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Pharm-D Biostatistics and Research methodology
Pharm-D Biostatistics and Research methodologyPharm-D Biostatistics and Research methodology
Pharm-D Biostatistics and Research methodology
 
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
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
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 Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
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...
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
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
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfAzure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
 
%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
 

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

Notas do Editor

  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.