SlideShare a Scribd company logo
1 of 47
Download to read offline
Confessions	
  of	
  a	
  	
  
Java	
  developer	
  	
  
that	
  fell	
  in	
  love	
  with	
  the	
  
Groovy	
  language	
  
Victor	
  Trakhtenberg	
  
	
  
	
  
	
  
victortr75@gmail.com	
  	
  	
  	
  	
  	
  	
  @victortr75	
  	
  	
  	
  	
  	
  
Personal	
  
My	
  name	
  is	
  Victor	
  
Personal	
  
Java.IL	
  community	
  co-­‐founder	
  
h=p://www.meetup.com/JavaIL/	
  
Personal	
  
Full	
  Stack	
  Engineer	
  @	
  	
  
h@p://commercesciences.com/jobs	
  
It	
  is	
  NOT	
  an	
  introducFon	
  to	
  Groovy	
  
It	
  is	
  NOT	
  “why	
  you	
  should	
  not	
  use	
  
Java”	
  
It	
  is	
  NOT	
  “why	
  you	
  must	
  	
  
use	
  	
  
Groovy”	
  
It	
  is	
  “why	
  every	
  Java	
  
developer	
  	
  
SHOULD	
  KNOW	
  	
  
Groovy”	
  
Groovy	
  is	
  very	
  easy	
  to	
  enter	
  
into	
  for	
  Java	
  developers,	
  
since…	
  
Java	
  code	
  is	
  Groovy	
  code	
  
Groovy	
  Features	
  
•  Strings	
  
•  CollecFons	
  
•  Date	
  
•  Parsing	
  and	
  producing	
  
JSON	
  
•  Working	
  with	
  a	
  DB	
  
•  Processing	
  XML	
  
•  Template	
  engines	
  
•  Builders	
  
•  Grapes	
  
•  Traits	
  
•  Processing	
  
configuraFon	
  
•  HTTPBuilder	
  
•  and	
  many	
  more…	
  
Groovy	
  is	
  more	
  than	
  just	
  
a	
  set	
  of	
  features,	
  
it	
  is	
  more	
  than	
  a	
  be=er	
  
Java	
  
There	
  are	
  new	
  concepts	
  for	
  
Java	
  developers	
  
•  Dynamic	
  language	
  
•  with	
  opFonal	
  staFc-­‐typing	
  and	
  staFc-­‐
compilaFon	
  
•  Closures	
  
•  FuncFonal	
  programming	
  
•  Meta-­‐programming	
  
•  Traits	
  
•  DSLs	
  	
  
•  and	
  more…	
  
Using	
  Groovy	
  
Raise	
  your	
  hands	
  
Using	
  Java	
  
Using	
  Ruby,Python,	
  Scala	
  etc.	
  
Prelude	
  -­‐	
  REPL	
  
Groovy	
  CollecFons	
  
Map	
  with	
  default	
  
h=p://groovy-­‐the-­‐superb-­‐homeless.mally.pl/	
  
Using	
  Groovy	
  in	
  a	
  running	
  Java	
  
project	
  
Our	
  setup:	
  Java	
  Play!	
  Framework	
  project	
  
Choose	
  one	
  concern	
  to	
  use	
  Groovy	
  
Our	
  choice:	
  JSON	
  manipulaFons	
  
Parse	
  JSON	
  
Build	
  JSON	
  
Case	
  Study:	
  Campaign	
  ConfiguraFon	
  	
  
Management	
  
The	
  Java	
  interface	
  and	
  	
  
the	
  Groovy	
  implementaFon	
  
Java-­‐to-­‐Groovy	
  Bridge	
  
Fetch	
  campaign	
  type	
  
Is	
  it	
  a	
  ‘coupon’	
  campaign	
  
Is	
  it	
  a	
  ‘coupon’	
  campaign	
  
Is	
  it	
  a	
  ‘coupon’	
  campaign	
  
Integrate	
  with	
  Salesforce	
  	
  
Update	
  account	
  at	
  Salesforce	
  
Integrate	
  with	
  Salesforce	
  -­‐	
  AuthenFcate	
  
URIBuilder	
  
URIBuilder	
  -­‐	
  Java	
  
Challenges	
  
•  Java	
  <-­‐>	
  Groovy	
  bridge	
  
– The	
  need	
  for	
  the	
  Java	
  interface	
  
•  IDE	
  support	
  
– Browsing	
  Java	
  code	
  –	
  Groovy	
  code	
  
•  Long	
  stack	
  traces	
  	
  
– 	
  challenging	
  debugging	
  
•  Coding	
  convenFons	
  
Use	
  Groovy	
  for	
  non-­‐producFon	
  
Groovy	
  in	
  light	
  of	
  Java8	
  
•  There	
  is	
  sFll	
  a	
  gap	
  between	
  Java	
  8	
  and	
  Groovy	
  
•  There	
  is	
  a	
  synergy	
  between	
  Groovy	
  and	
  Java	
  8	
  
h=p://www.slideshare.net/SpringCentral/groovy-­‐in-­‐thelightoaava8	
  
h=p://www.javacodegeeks.com/2014/06/java-­‐8-­‐lambdas-­‐vs-­‐groovy-­‐closures-­‐compactness-­‐grouping-­‐and-­‐summing.html	
  
Groovy	
  in	
  light	
  of	
  Java8	
  
•  Groovy	
  syntax	
  is	
  more	
  compact	
  
•  JDK	
  classes	
  enhancements	
  (String,	
  URL,	
  File	
  etc.)	
  
•  Operator	
  overloading	
  
•  MemoizaFon	
  +	
  trampoliningRegular	
  expressions	
  
•  SQL	
  handling	
  
•  Coercion	
  of	
  types	
  to	
  Boolean	
  
•  JSN	
  +	
  XML	
  parsing	
  and	
  producing	
  
•  Traits	
  
•  AST	
  transformaFons	
  
•  DSL	
  
•  …	
  
h=p://jaxenter.com/groovy-­‐is-­‐the-­‐swin-­‐alternaFve-­‐for-­‐android-­‐107846.html	
  
Groovy	
  resources	
  
•  h=p://groovy-­‐lang.org/	
  
•  h=p://glaforge.appspot.com/category/Groovy%20Weekly	
  
•  h=p://www.mrhaki.com/	
  
•  h=ps://plus.google.com/communiFes/105160926044623621768	
  
•  h=p://www.mscharhag.com/2015/02/creaFng-­‐android-­‐apps-­‐with-­‐
groovy.html	
  
•  h=p://groovy.codehaus.org/modules/h=p-­‐builder/doc/uribuilder.html	
  
•  h=p://www.drdobbs.com/jvm/why-­‐build-­‐your-­‐java-­‐projects-­‐with-­‐
gradle/240168608?pgno=3	
  
•  h=p://www.infoq.com/presentaFons/groovy-­‐test-­‐java-­‐spock	
  
•  h=p://www.infoq.com/presentaFons/tesFng-­‐spock-­‐geb	
  
•  h=p://melix.github.io/blog/2015/02/who-­‐is-­‐groovy.html	
  
•  h=p://groovy-­‐the-­‐superb-­‐homeless.mally.pl/#/	
  
•  h=ps://github.com/victorgit/GroovyPresentaFon	
  
MrHaki	
  –	
  Groovy	
  Goodness	
  
h=p://mrhaki.blogspot.co.il/2009/09/groovy-­‐goodness-­‐padding-­‐strings.html	
  
Groovy	
  Challenge!	
  
	
  
Save	
  the	
  date:	
  
31-­‐May	
  
h=p://www.meetup.com/WeCode-­‐IL/	
  
Images	
  sources	
  
•  h=p://www.clevercuFes.com/myimages/products/Computers/IHEARTPROGRAMMING.jpg	
  
•  h=p://blogs.percepFonsystem.com/wp-­‐content/uploads/2013/12/Happy-­‐Customer.jpg	
  
•  h=p://lifepale=e.com/wp-­‐content/uploads/2015/01/ProducFvity.jpg	
  
•  h=p://www.checkacFon.com/blog/wp-­‐content/uploads/2014/01/startup-­‐employee-­‐producFvity-­‐Fps-­‐675x320.jpg	
  
•  h=p://www.akifarslan.com.tr/wp-­‐content/uploads/2013/10/java.jpg	
  
•  h=p://cdn.makeuseof.com/wp-­‐content/uploads/2012/03/jvm.png?84ec63	
  
•  h=p://cdn.slidesharecdn.com/ss_thumbnails/ecosystem-­‐120717081103-­‐phpapp01-­‐thumbnail-­‐4.jpg?cb=1342530724	
  
•  h=p://www.army-­‐armee.forces.gc.ca/assets/ARMY_Internet/images/ceremonial-­‐guard/index-­‐main.jpg	
  
•  h=p://www.local-­‐guru.net/img/guru/have_fun.png	
  
•  h=p://blog.xo.com/wp-­‐content/uploads/2014/03/pic-­‐raised-­‐hands-­‐550x300.png	
  
•  h=ps://pbs.twimg.com/media/BVDKBfUCIAAWKw9.jpg	
  
•  h=p://www.nscsd.org/webpages/jenkondrk/imageGallery/Clip%20art/raise%20hand.gif	
  
•  h=p://ubik.cc/MAOW-­‐Firenze-­‐09/images/repl-­‐loop.png	
  
•  h=p://hirportal.sikerado.hu/images/kep/201110/belyeg.jpg	
  
•  h=p://www.slideshare.net/SpringCentral/groovy-­‐in-­‐thelightoaava8	
  
•  h=p://blog.cacoethes.co.uk/groovyandgrails/groovy-­‐in-­‐light-­‐of-­‐java-­‐8	
  
•  h=p://www.infoq.com/arFcles/groovy-­‐to-­‐Java-­‐8	
  
•  h=ps://tedvinke.wordpress.com/2014/06/20/java-­‐8-­‐lambdas-­‐vs-­‐groovy-­‐closures-­‐compactness-­‐grouping-­‐and-­‐summing/	
  
•  h=p://groovy.mn/staFc/hh97hMrFEv8Xc9j1zvR9winGH86xmHGbiZNKFTORWYl.jpg	
  

More Related Content

What's hot

Morden F2E Education - Think of Progressive Web Apps
Morden F2E Education - Think of Progressive Web AppsMorden F2E Education - Think of Progressive Web Apps
Morden F2E Education - Think of Progressive Web AppsCaesar Chi
 
Angular 2 Seminar_(December 7/12/2015)
Angular 2 Seminar_(December 7/12/2015)Angular 2 Seminar_(December 7/12/2015)
Angular 2 Seminar_(December 7/12/2015)Haim Michael
 
Creating Large Scale Software Platforms with OSGi and an Extension Point Mode...
Creating Large Scale Software Platforms with OSGi and an Extension Point Mode...Creating Large Scale Software Platforms with OSGi and an Extension Point Mode...
Creating Large Scale Software Platforms with OSGi and an Extension Point Mode...Nuxeo
 
Full-Stack Development
Full-Stack DevelopmentFull-Stack Development
Full-Stack DevelopmentDhilipsiva DS
 
Make your app idea a reality with Ruby On Rails
Make your app idea a reality with Ruby On RailsMake your app idea a reality with Ruby On Rails
Make your app idea a reality with Ruby On RailsNataly Tkachuk
 
Integrating PHP With System-i using Web Services
Integrating PHP With System-i using Web ServicesIntegrating PHP With System-i using Web Services
Integrating PHP With System-i using Web ServicesIvo Jansch
 
codecept.js introduce - front end test E2E tool introduce
codecept.js introduce - front end test E2E tool introducecodecept.js introduce - front end test E2E tool introduce
codecept.js introduce - front end test E2E tool introduceCaesar Chi
 
Node.js Jump Start
Node.js Jump StartNode.js Jump Start
Node.js Jump StartHaim Michael
 
Comparison of Programming Platforms
Comparison of Programming PlatformsComparison of Programming Platforms
Comparison of Programming PlatformsAnup Hariharan Nair
 
React Typescript for beginners: Translator app with Microsoft cognitive services
React Typescript for beginners: Translator app with Microsoft cognitive servicesReact Typescript for beginners: Translator app with Microsoft cognitive services
React Typescript for beginners: Translator app with Microsoft cognitive servicesFabio Biondi
 
Architecture & Workflow of Modern Web Apps
Architecture & Workflow of Modern Web AppsArchitecture & Workflow of Modern Web Apps
Architecture & Workflow of Modern Web AppsRasheed Waraich
 
PHP for Android: prototyping Android apps in php
PHP for Android: prototyping Android apps in phpPHP for Android: prototyping Android apps in php
PHP for Android: prototyping Android apps in phpCesare D'Amico
 
SynapseIndia gives an overview on comparison in PHP & ASP.NET in Terms of Cos...
SynapseIndia gives an overview on comparison in PHP & ASP.NET in Terms of Cos...SynapseIndia gives an overview on comparison in PHP & ASP.NET in Terms of Cos...
SynapseIndia gives an overview on comparison in PHP & ASP.NET in Terms of Cos...SynapseIndia
 
Professional JavaScript Development (An Introduction for Java Developers)
Professional JavaScript Development (An Introduction for Java Developers)Professional JavaScript Development (An Introduction for Java Developers)
Professional JavaScript Development (An Introduction for Java Developers)jbandi
 

What's hot (14)

Morden F2E Education - Think of Progressive Web Apps
Morden F2E Education - Think of Progressive Web AppsMorden F2E Education - Think of Progressive Web Apps
Morden F2E Education - Think of Progressive Web Apps
 
Angular 2 Seminar_(December 7/12/2015)
Angular 2 Seminar_(December 7/12/2015)Angular 2 Seminar_(December 7/12/2015)
Angular 2 Seminar_(December 7/12/2015)
 
Creating Large Scale Software Platforms with OSGi and an Extension Point Mode...
Creating Large Scale Software Platforms with OSGi and an Extension Point Mode...Creating Large Scale Software Platforms with OSGi and an Extension Point Mode...
Creating Large Scale Software Platforms with OSGi and an Extension Point Mode...
 
Full-Stack Development
Full-Stack DevelopmentFull-Stack Development
Full-Stack Development
 
Make your app idea a reality with Ruby On Rails
Make your app idea a reality with Ruby On RailsMake your app idea a reality with Ruby On Rails
Make your app idea a reality with Ruby On Rails
 
Integrating PHP With System-i using Web Services
Integrating PHP With System-i using Web ServicesIntegrating PHP With System-i using Web Services
Integrating PHP With System-i using Web Services
 
codecept.js introduce - front end test E2E tool introduce
codecept.js introduce - front end test E2E tool introducecodecept.js introduce - front end test E2E tool introduce
codecept.js introduce - front end test E2E tool introduce
 
Node.js Jump Start
Node.js Jump StartNode.js Jump Start
Node.js Jump Start
 
Comparison of Programming Platforms
Comparison of Programming PlatformsComparison of Programming Platforms
Comparison of Programming Platforms
 
React Typescript for beginners: Translator app with Microsoft cognitive services
React Typescript for beginners: Translator app with Microsoft cognitive servicesReact Typescript for beginners: Translator app with Microsoft cognitive services
React Typescript for beginners: Translator app with Microsoft cognitive services
 
Architecture & Workflow of Modern Web Apps
Architecture & Workflow of Modern Web AppsArchitecture & Workflow of Modern Web Apps
Architecture & Workflow of Modern Web Apps
 
PHP for Android: prototyping Android apps in php
PHP for Android: prototyping Android apps in phpPHP for Android: prototyping Android apps in php
PHP for Android: prototyping Android apps in php
 
SynapseIndia gives an overview on comparison in PHP & ASP.NET in Terms of Cos...
SynapseIndia gives an overview on comparison in PHP & ASP.NET in Terms of Cos...SynapseIndia gives an overview on comparison in PHP & ASP.NET in Terms of Cos...
SynapseIndia gives an overview on comparison in PHP & ASP.NET in Terms of Cos...
 
Professional JavaScript Development (An Introduction for Java Developers)
Professional JavaScript Development (An Introduction for Java Developers)Professional JavaScript Development (An Introduction for Java Developers)
Professional JavaScript Development (An Introduction for Java Developers)
 

Similar to Java.il - Confessions of a java developer that fell in love with the groovy language

Groovy on Android (as of 2016)
Groovy on Android (as of 2016)Groovy on Android (as of 2016)
Groovy on Android (as of 2016)Kevin H.A. Tan
 
javerosmx-2015-marzo-groovy-java8-comparison
javerosmx-2015-marzo-groovy-java8-comparisonjaverosmx-2015-marzo-groovy-java8-comparison
javerosmx-2015-marzo-groovy-java8-comparisonDomingo Suarez Torres
 
Venkat Subramaniam Blending Java With Dynamic Languages
Venkat Subramaniam Blending Java With Dynamic LanguagesVenkat Subramaniam Blending Java With Dynamic Languages
Venkat Subramaniam Blending Java With Dynamic Languagesdeimos
 
List of 7 popular java frameworks for 2019
List of 7 popular java frameworks for 2019  List of 7 popular java frameworks for 2019
List of 7 popular java frameworks for 2019 kritikumar16
 
List of 7 popular java frameworks for 2019
List of 7 popular java frameworks for 2019  List of 7 popular java frameworks for 2019
List of 7 popular java frameworks for 2019 kritikumar16
 
Taking Flexibility to the Next Level
Taking Flexibility to the Next LevelTaking Flexibility to the Next Level
Taking Flexibility to the Next LevelForgeRock
 
Polygot Java EE on the GraalVM
Polygot Java EE on the GraalVMPolygot Java EE on the GraalVM
Polygot Java EE on the GraalVMRyan Cuprak
 
Java Development Company | Xicom
Java Development Company | XicomJava Development Company | Xicom
Java Development Company | XicomRyanForeman5
 
Efficient DevOps Tooling with Java and GraalVM
Efficient DevOps Tooling with Java and GraalVMEfficient DevOps Tooling with Java and GraalVM
Efficient DevOps Tooling with Java and GraalVMQAware GmbH
 
Java Script from Browser to Server
Java Script from Browser to ServerJava Script from Browser to Server
Java Script from Browser to ServerWSO2
 
How and why GraalVM is quickly becoming relevant for you (DOAG 2020)
How and why GraalVM is quickly becoming relevant for you (DOAG 2020)How and why GraalVM is quickly becoming relevant for you (DOAG 2020)
How and why GraalVM is quickly becoming relevant for you (DOAG 2020)Lucas Jellema
 
Best Java Training Institute in Hyderabad
Best Java Training Institute in HyderabadBest Java Training Institute in Hyderabad
Best Java Training Institute in HyderabadSri Seo
 
JavaOne 2014 BOF4241 What's Next for JSF?
JavaOne 2014 BOF4241 What's Next for JSF?JavaOne 2014 BOF4241 What's Next for JSF?
JavaOne 2014 BOF4241 What's Next for JSF?Edward Burns
 
Why use Go for web development?
Why use Go for web development?Why use Go for web development?
Why use Go for web development?Weng Wei
 

Similar to Java.il - Confessions of a java developer that fell in love with the groovy language (20)

Groovy on Android (as of 2016)
Groovy on Android (as of 2016)Groovy on Android (as of 2016)
Groovy on Android (as of 2016)
 
Kotlin introduction
Kotlin introductionKotlin introduction
Kotlin introduction
 
javerosmx-2015-marzo-groovy-java8-comparison
javerosmx-2015-marzo-groovy-java8-comparisonjaverosmx-2015-marzo-groovy-java8-comparison
javerosmx-2015-marzo-groovy-java8-comparison
 
Venkat Subramaniam Blending Java With Dynamic Languages
Venkat Subramaniam Blending Java With Dynamic LanguagesVenkat Subramaniam Blending Java With Dynamic Languages
Venkat Subramaniam Blending Java With Dynamic Languages
 
Groovy & Grails
Groovy & GrailsGroovy & Grails
Groovy & Grails
 
Jvm
JvmJvm
Jvm
 
List of 7 popular java frameworks for 2019
List of 7 popular java frameworks for 2019  List of 7 popular java frameworks for 2019
List of 7 popular java frameworks for 2019
 
List of 7 popular java frameworks for 2019
List of 7 popular java frameworks for 2019  List of 7 popular java frameworks for 2019
List of 7 popular java frameworks for 2019
 
Taking Flexibility to the Next Level
Taking Flexibility to the Next LevelTaking Flexibility to the Next Level
Taking Flexibility to the Next Level
 
Polygot Java EE on the GraalVM
Polygot Java EE on the GraalVMPolygot Java EE on the GraalVM
Polygot Java EE on the GraalVM
 
Java Development Company | Xicom
Java Development Company | XicomJava Development Company | Xicom
Java Development Company | Xicom
 
Efficient DevOps Tooling with Java and GraalVM
Efficient DevOps Tooling with Java and GraalVMEfficient DevOps Tooling with Java and GraalVM
Efficient DevOps Tooling with Java and GraalVM
 
Java Script from Browser to Server
Java Script from Browser to ServerJava Script from Browser to Server
Java Script from Browser to Server
 
Go Revel Gooo...
Go Revel Gooo...Go Revel Gooo...
Go Revel Gooo...
 
How and why GraalVM is quickly becoming relevant for you (DOAG 2020)
How and why GraalVM is quickly becoming relevant for you (DOAG 2020)How and why GraalVM is quickly becoming relevant for you (DOAG 2020)
How and why GraalVM is quickly becoming relevant for you (DOAG 2020)
 
Best Java Training Institute in Hyderabad
Best Java Training Institute in HyderabadBest Java Training Institute in Hyderabad
Best Java Training Institute in Hyderabad
 
One-stop solution for Grails web app development
One-stop solution for Grails web app developmentOne-stop solution for Grails web app development
One-stop solution for Grails web app development
 
getting-your-groovy-on
getting-your-groovy-ongetting-your-groovy-on
getting-your-groovy-on
 
JavaOne 2014 BOF4241 What's Next for JSF?
JavaOne 2014 BOF4241 What's Next for JSF?JavaOne 2014 BOF4241 What's Next for JSF?
JavaOne 2014 BOF4241 What's Next for JSF?
 
Why use Go for web development?
Why use Go for web development?Why use Go for web development?
Why use Go for web development?
 

More from Victor Trakhtenberg

Confessions of a java developer that fell in love with the groovy language
Confessions of a java developer that fell in love with the groovy languageConfessions of a java developer that fell in love with the groovy language
Confessions of a java developer that fell in love with the groovy languageVictor Trakhtenberg
 
Swagger - make your API accessible
Swagger - make your API accessibleSwagger - make your API accessible
Swagger - make your API accessibleVictor Trakhtenberg
 

More from Victor Trakhtenberg (6)

We codeil save kermit
We codeil   save kermitWe codeil   save kermit
We codeil save kermit
 
Confessions of a java developer that fell in love with the groovy language
Confessions of a java developer that fell in love with the groovy languageConfessions of a java developer that fell in love with the groovy language
Confessions of a java developer that fell in love with the groovy language
 
WeCode IL: Save Kermit
WeCode IL:  Save KermitWeCode IL:  Save Kermit
WeCode IL: Save Kermit
 
Swagger code motion talk
Swagger code motion talkSwagger code motion talk
Swagger code motion talk
 
Swagger - make your API accessible
Swagger - make your API accessibleSwagger - make your API accessible
Swagger - make your API accessible
 
Sc11 presentation 2001_06_28
Sc11 presentation 2001_06_28Sc11 presentation 2001_06_28
Sc11 presentation 2001_06_28
 

Recently uploaded

SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 

Recently uploaded (20)

SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 

Java.il - Confessions of a java developer that fell in love with the groovy language

  • 1. Confessions  of  a     Java  developer     that  fell  in  love  with  the   Groovy  language   Victor  Trakhtenberg         victortr75@gmail.com              @victortr75            
  • 2. Personal   My  name  is  Victor  
  • 3. Personal   Java.IL  community  co-­‐founder   h=p://www.meetup.com/JavaIL/  
  • 4. Personal   Full  Stack  Engineer  @     h@p://commercesciences.com/jobs  
  • 5.
  • 6.
  • 7.
  • 8.
  • 9. It  is  NOT  an  introducFon  to  Groovy   It  is  NOT  “why  you  should  not  use   Java”   It  is  NOT  “why  you  must     use     Groovy”  
  • 10. It  is  “why  every  Java   developer     SHOULD  KNOW     Groovy”  
  • 11. Groovy  is  very  easy  to  enter   into  for  Java  developers,   since…   Java  code  is  Groovy  code  
  • 12. Groovy  Features   •  Strings   •  CollecFons   •  Date   •  Parsing  and  producing   JSON   •  Working  with  a  DB   •  Processing  XML   •  Template  engines   •  Builders   •  Grapes   •  Traits   •  Processing   configuraFon   •  HTTPBuilder   •  and  many  more…  
  • 13. Groovy  is  more  than  just   a  set  of  features,   it  is  more  than  a  be=er   Java  
  • 14. There  are  new  concepts  for   Java  developers   •  Dynamic  language   •  with  opFonal  staFc-­‐typing  and  staFc-­‐ compilaFon   •  Closures   •  FuncFonal  programming   •  Meta-­‐programming   •  Traits   •  DSLs     •  and  more…  
  • 15.
  • 16. Using  Groovy   Raise  your  hands   Using  Java   Using  Ruby,Python,  Scala  etc.  
  • 19.
  • 22.
  • 23. Using  Groovy  in  a  running  Java   project   Our  setup:  Java  Play!  Framework  project   Choose  one  concern  to  use  Groovy   Our  choice:  JSON  manipulaFons  
  • 26. Case  Study:  Campaign  ConfiguraFon     Management  
  • 27. The  Java  interface  and     the  Groovy  implementaFon  
  • 30. Is  it  a  ‘coupon’  campaign  
  • 31. Is  it  a  ‘coupon’  campaign  
  • 32. Is  it  a  ‘coupon’  campaign  
  • 34. Update  account  at  Salesforce  
  • 35. Integrate  with  Salesforce  -­‐  AuthenFcate  
  • 38. Challenges   •  Java  <-­‐>  Groovy  bridge   – The  need  for  the  Java  interface   •  IDE  support   – Browsing  Java  code  –  Groovy  code   •  Long  stack  traces     –   challenging  debugging   •  Coding  convenFons  
  • 39. Use  Groovy  for  non-­‐producFon  
  • 40. Groovy  in  light  of  Java8   •  There  is  sFll  a  gap  between  Java  8  and  Groovy   •  There  is  a  synergy  between  Groovy  and  Java  8   h=p://www.slideshare.net/SpringCentral/groovy-­‐in-­‐thelightoaava8   h=p://www.javacodegeeks.com/2014/06/java-­‐8-­‐lambdas-­‐vs-­‐groovy-­‐closures-­‐compactness-­‐grouping-­‐and-­‐summing.html  
  • 41. Groovy  in  light  of  Java8   •  Groovy  syntax  is  more  compact   •  JDK  classes  enhancements  (String,  URL,  File  etc.)   •  Operator  overloading   •  MemoizaFon  +  trampoliningRegular  expressions   •  SQL  handling   •  Coercion  of  types  to  Boolean   •  JSN  +  XML  parsing  and  producing   •  Traits   •  AST  transformaFons   •  DSL   •  …  
  • 43. Groovy  resources   •  h=p://groovy-­‐lang.org/   •  h=p://glaforge.appspot.com/category/Groovy%20Weekly   •  h=p://www.mrhaki.com/   •  h=ps://plus.google.com/communiFes/105160926044623621768   •  h=p://www.mscharhag.com/2015/02/creaFng-­‐android-­‐apps-­‐with-­‐ groovy.html   •  h=p://groovy.codehaus.org/modules/h=p-­‐builder/doc/uribuilder.html   •  h=p://www.drdobbs.com/jvm/why-­‐build-­‐your-­‐java-­‐projects-­‐with-­‐ gradle/240168608?pgno=3   •  h=p://www.infoq.com/presentaFons/groovy-­‐test-­‐java-­‐spock   •  h=p://www.infoq.com/presentaFons/tesFng-­‐spock-­‐geb   •  h=p://melix.github.io/blog/2015/02/who-­‐is-­‐groovy.html   •  h=p://groovy-­‐the-­‐superb-­‐homeless.mally.pl/#/   •  h=ps://github.com/victorgit/GroovyPresentaFon  
  • 44. MrHaki  –  Groovy  Goodness   h=p://mrhaki.blogspot.co.il/2009/09/groovy-­‐goodness-­‐padding-­‐strings.html  
  • 45. Groovy  Challenge!     Save  the  date:   31-­‐May   h=p://www.meetup.com/WeCode-­‐IL/  
  • 46.
  • 47. Images  sources   •  h=p://www.clevercuFes.com/myimages/products/Computers/IHEARTPROGRAMMING.jpg   •  h=p://blogs.percepFonsystem.com/wp-­‐content/uploads/2013/12/Happy-­‐Customer.jpg   •  h=p://lifepale=e.com/wp-­‐content/uploads/2015/01/ProducFvity.jpg   •  h=p://www.checkacFon.com/blog/wp-­‐content/uploads/2014/01/startup-­‐employee-­‐producFvity-­‐Fps-­‐675x320.jpg   •  h=p://www.akifarslan.com.tr/wp-­‐content/uploads/2013/10/java.jpg   •  h=p://cdn.makeuseof.com/wp-­‐content/uploads/2012/03/jvm.png?84ec63   •  h=p://cdn.slidesharecdn.com/ss_thumbnails/ecosystem-­‐120717081103-­‐phpapp01-­‐thumbnail-­‐4.jpg?cb=1342530724   •  h=p://www.army-­‐armee.forces.gc.ca/assets/ARMY_Internet/images/ceremonial-­‐guard/index-­‐main.jpg   •  h=p://www.local-­‐guru.net/img/guru/have_fun.png   •  h=p://blog.xo.com/wp-­‐content/uploads/2014/03/pic-­‐raised-­‐hands-­‐550x300.png   •  h=ps://pbs.twimg.com/media/BVDKBfUCIAAWKw9.jpg   •  h=p://www.nscsd.org/webpages/jenkondrk/imageGallery/Clip%20art/raise%20hand.gif   •  h=p://ubik.cc/MAOW-­‐Firenze-­‐09/images/repl-­‐loop.png   •  h=p://hirportal.sikerado.hu/images/kep/201110/belyeg.jpg   •  h=p://www.slideshare.net/SpringCentral/groovy-­‐in-­‐thelightoaava8   •  h=p://blog.cacoethes.co.uk/groovyandgrails/groovy-­‐in-­‐light-­‐of-­‐java-­‐8   •  h=p://www.infoq.com/arFcles/groovy-­‐to-­‐Java-­‐8   •  h=ps://tedvinke.wordpress.com/2014/06/20/java-­‐8-­‐lambdas-­‐vs-­‐groovy-­‐closures-­‐compactness-­‐grouping-­‐and-­‐summing/   •  h=p://groovy.mn/staFc/hh97hMrFEv8Xc9j1zvR9winGH86xmHGbiZNKFTORWYl.jpg