SlideShare a Scribd company logo
1 of 14
Download to read offline
Groovy Finesse

Why would we use Groovy?
General Information

  HomePage - http://groovy.codehaus.org
  Groovy is open source using a BSD / Apache style licence
  Sun's defacto scripting language (JSR-241)
     http://www.jcp.org/en/jsr/detail?id=241
  Dynamic Language that is compiled into Java class
  bytecode
  The company behind Groovy and Grails (G2One) was just
  bought by a respectable company called SpringSource (the
  same one that does the support for Spring)
  70k downloads in November 2007 and growing
Benefits

  Easy for Java Developers to understand and adopt
  Is the Only JVM language interchangeable with Java code
      Compiled Groovy classes can be used from Java
      Compiled Java classes can be used from Groovy
      Can use Java syntax in Groovy seamlessly
  Growing community and interest
  The company behind Groovy G2One was just bought by a
  respectable company called SpringSource
  With the new stable release (1.6) that came out last week it
  brings forth performance improvements
  GroovyConsole provides a quick way to test out any
  arbitrary code
Benefits over Java

  More concise, cleaner syntax and has less syntax noise
  than Java
  Can be ran as shell scripts (just like Perl)
  Closures
     Closures are Objects that encapsulate behavior
     Have a scope that allows for clean exiting of external
     resources without writing explicit code
         Closing files gracefully
         Closing JDBC connections gracefully
         etc
      Currying allows to make more concise closures from
     other closures by providing defaults to parameters
Benefits over Java

  MOP - Meta Object Protocol
    Allows to inspect any arbitrary object
        Helper methods dump() or inspect() will expose the
        underlying attributes and their values
    Allows addition or modification of methods at runtime
    Allows the creation of DSLs
Benefits over Java

   Builders (a nice and clean patterns that allows to build
  complex objects using nested closures)
     MarkupBuilder - for HTML, XML etc
     JMXBuilder
     SwingBuilder
Features not Found in Standard Java

The Groovy language is largely a superset of the Java
language. One can usually rename a .java file to a .groovy one
and it will work (though there are a few gotchas). Groovy has a
number of features not found in standard Java.
This makes the learning curve for Java developers almost zero,
since they can start with Java syntax and gradually learn to add
Groovy features. [1] Groovy features not available in Java
include both static and dynamic typing (with the def keyword),
closures, operator overloading, native syntax for lists and
associative arrays (maps), native support for regular
expressions, polymorphic iteration, expressions embedded
inside strings, additional helper methods, and the safe
navigation operator "?." to automatically check for nulls (for
example, "variable?.method()", or "variable?.field")
Groovy Modules

 COM Scripting — script Windows ActiveX and COM components with
 Groovy
 Gant
 GFreeMarker — an integration of the FreeMarker template engine for
 Groovy
 GMaven — GMaven provides integration of the Groovy language into
 Maven.
 Google Data Support — makes using the Google Data APIs easier from
 within Groovy
 Gram — a simple xdoclet-like tool for processing doclet tags or Java 5
 annotations
 GraphicsBuilder — GraphicsBuilder is a Groovy builder for Java 2D
 Grapplet
 Griffon — Dekstop Enhancements for Groovy
 Groosh — Provides a shell-like capability for handling external processes.
 Groovy Jabber-RPC — allows you to make XML-RPC calls using the
 Jabber protocol
Groovy Modules

 GroovyJMS
 GroovyLab — Provides a domain specific language (DSL) for math
 engineering (matlab-like syntax).
 Groovy Monkey — is a dynamic scripting tool for the Eclipse Platform
 GroovyRestlet — Groovy DSL for constructing Restlet application
 Groovy Science
 Groovy SOAP — create a SOAP server and make calls to remote SOAP
 servers using Groovy
 GroovySWT — a wrapper around SWT, the eclipse Standard Widget
 Toolkit
 GroovyWS — GroovySOAP replacement that uses CXF and Java5
 features
 GSP — means GroovyServer Pages, which is similar to JSP (JavaServer
 Pages)
 GSQL — supports easier access to databases using Groovy
 HTTP Builder — provides a convenient builder API for complex HTTP
 requests
 JideBuilder — JideBuilder is a Groovy builder for the open source JIDE
Groovy Modules

 Native Launcher — a native program for launching groovy scripts
 Proxy-o-Matic — Proxy-o-Matic lets you create dynamic proxies fast and in
 an homogeneous way
 Windows NSIS-Installer — a Windows-specific installer for Groovy
 Windows Services — framework for Groovy-based WinNT (Windows)
 Services
 WingSBuilder — WingsBuilder is a Groovy builder for the wingS
 Framework
 XMLRPC — allows you to create a local XML-RPC server and/or to make
 calls on remote XML-RPC servers
 Grails — a Groovy-based web framework inspired by Ruby on Rails
 GORM — the Grails Object-Relational Mapping persistence framework
 GroovyPlugin — A Groovy plugin for JSPWiki
 OCM Groovy — A Object Content Mapping implemented in Groovy
 leveraging the Java Content Repository (JCR)
 Tellurium — A test framework built on top of the Selenium test framework
 implemented in Groovy
IDE Support

 Debugging with JSwat
 Eclipse Plugin
 IntelliJ IDEA Plugin
 IntelliJ IDEA Plugin (JetBrains Edition)
 JEdit Plugin
 NetBeans Plugin
 Oracle JDeveloper Plugin
 Other Plugins
 TextMate
Project Build Management

 Maven
 Ant
 Gradle
Groovy Books

 Groovy In Action (Manning)
 Programming Groovy: Dynamic Productivity for the Java
 Developer (Pragmatic Programmers)
 Groovy Recipes: Greasing the Wheels of Java (Pragmatic
 Programmers)
 Beginning Groovy and Grails: From Novice to Professional
 (Apress)
 Groovy Programming: An Introduction for Java Developers
 (Morgan Kaufmann)
 Groovy and Grails Recipes: Recipes a Dynamic Approach
 (Apress)
 The Definitive Guide to Grails (Apress)
 The Definitive Guide to Grails: Second Edition (Apress)
 Getting Started with Grails (Lulu.com)
Who Uses Groovy?

 Mule ESB
 ServiceMix ESB
 Spring
 Grails
 LinkedI

More Related Content

What's hot

Як РНР розробник пише код на Kotlin
Як РНР розробник пише код на KotlinЯк РНР розробник пише код на Kotlin
Як РНР розробник пише код на Kotlinphpfriendsclub
 
Introduction to go lang
Introduction to go langIntroduction to go lang
Introduction to go langAmal Mohan N
 
MySQL Compatible Open Source Connectors
MySQL Compatible Open Source ConnectorsMySQL Compatible Open Source Connectors
MySQL Compatible Open Source ConnectorsAndrew Hutchings
 
Life of a Chromium Developer
Life of a Chromium DeveloperLife of a Chromium Developer
Life of a Chromium Developermpaproductions
 
Cache in Chromium: Disk Cache
Cache in Chromium: Disk CacheCache in Chromium: Disk Cache
Cache in Chromium: Disk CacheChang W. Doh
 
Chromium: NaCl and Pepper API
Chromium: NaCl and Pepper APIChromium: NaCl and Pepper API
Chromium: NaCl and Pepper APIChang W. Doh
 
Debugging of (C)Python applications
Debugging of (C)Python applicationsDebugging of (C)Python applications
Debugging of (C)Python applicationsRoman Podoliaka
 
차세대컴파일러, VM의미래: 애플 오픈소스 LLVM
차세대컴파일러, VM의미래: 애플 오픈소스 LLVM차세대컴파일러, VM의미래: 애플 오픈소스 LLVM
차세대컴파일러, VM의미래: 애플 오픈소스 LLVMJung Kim
 
Thesis - LLVM toolchain support as a plug-in for Eclipse CDT
Thesis - LLVM toolchain support as a plug-in for Eclipse CDTThesis - LLVM toolchain support as a plug-in for Eclipse CDT
Thesis - LLVM toolchain support as a plug-in for Eclipse CDTTuononenP
 
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
 
Agile Tools for PHP
Agile Tools for PHPAgile Tools for PHP
Agile Tools for PHPphilipjting
 
HOW AND WHY GRAALVM IS QUICKLY BECOMING RELEVANT FOR YOU
HOW AND WHY GRAALVM IS QUICKLY BECOMING RELEVANT FOR YOUHOW AND WHY GRAALVM IS QUICKLY BECOMING RELEVANT FOR YOU
HOW AND WHY GRAALVM IS QUICKLY BECOMING RELEVANT FOR YOULucas Jellema
 
Wonders of Golang
Wonders of GolangWonders of Golang
Wonders of GolangKartik Sura
 
C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...
C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...
C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...corehard_by
 
PHP & MySQL: PDO x MySQLi
PHP & MySQL: PDO x MySQLiPHP & MySQL: PDO x MySQLi
PHP & MySQL: PDO x MySQLiMarcos Marcolin
 

What's hot (20)

JSX
JSXJSX
JSX
 
Як РНР розробник пише код на Kotlin
Як РНР розробник пише код на KotlinЯк РНР розробник пише код на Kotlin
Як РНР розробник пише код на Kotlin
 
Introduction to go lang
Introduction to go langIntroduction to go lang
Introduction to go lang
 
MySQL Compatible Open Source Connectors
MySQL Compatible Open Source ConnectorsMySQL Compatible Open Source Connectors
MySQL Compatible Open Source Connectors
 
00_VB_Intro
00_VB_Intro00_VB_Intro
00_VB_Intro
 
Es build presentation
Es build presentationEs build presentation
Es build presentation
 
Life of a Chromium Developer
Life of a Chromium DeveloperLife of a Chromium Developer
Life of a Chromium Developer
 
Cache in Chromium: Disk Cache
Cache in Chromium: Disk CacheCache in Chromium: Disk Cache
Cache in Chromium: Disk Cache
 
Chromium: NaCl and Pepper API
Chromium: NaCl and Pepper APIChromium: NaCl and Pepper API
Chromium: NaCl and Pepper API
 
Debugging of (C)Python applications
Debugging of (C)Python applicationsDebugging of (C)Python applications
Debugging of (C)Python applications
 
차세대컴파일러, VM의미래: 애플 오픈소스 LLVM
차세대컴파일러, VM의미래: 애플 오픈소스 LLVM차세대컴파일러, VM의미래: 애플 오픈소스 LLVM
차세대컴파일러, VM의미래: 애플 오픈소스 LLVM
 
Thesis - LLVM toolchain support as a plug-in for Eclipse CDT
Thesis - LLVM toolchain support as a plug-in for Eclipse CDTThesis - LLVM toolchain support as a plug-in for Eclipse CDT
Thesis - LLVM toolchain support as a plug-in for Eclipse CDT
 
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!
 
Agile Tools for PHP
Agile Tools for PHPAgile Tools for PHP
Agile Tools for PHP
 
HOW AND WHY GRAALVM IS QUICKLY BECOMING RELEVANT FOR YOU
HOW AND WHY GRAALVM IS QUICKLY BECOMING RELEVANT FOR YOUHOW AND WHY GRAALVM IS QUICKLY BECOMING RELEVANT FOR YOU
HOW AND WHY GRAALVM IS QUICKLY BECOMING RELEVANT FOR YOU
 
Go Lang
Go LangGo Lang
Go Lang
 
Wonders of Golang
Wonders of GolangWonders of Golang
Wonders of Golang
 
Gradle
GradleGradle
Gradle
 
C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...
C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...
C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...
 
PHP & MySQL: PDO x MySQLi
PHP & MySQL: PDO x MySQLiPHP & MySQL: PDO x MySQLi
PHP & MySQL: PDO x MySQLi
 

Viewers also liked

Groovy Finesse
Groovy FinesseGroovy Finesse
Groovy Finessemzgubin
 
Crafting delightful experiences
Crafting delightful experiencesCrafting delightful experiences
Crafting delightful experiencesUday Shankar
 
Hot or Not? Fundraising in 2012
Hot or Not? Fundraising in 2012Hot or Not? Fundraising in 2012
Hot or Not? Fundraising in 2012frank barry
 
User Experioence - delivering great ux through great ui
User Experioence - delivering great ux through great uiUser Experioence - delivering great ux through great ui
User Experioence - delivering great ux through great uiUday Shankar
 
Mopping Up With Groovy
Mopping Up With GroovyMopping Up With Groovy
Mopping Up With Groovyfuglylogic
 
Hype vs. Reality: The AI Explainer
Hype vs. Reality: The AI ExplainerHype vs. Reality: The AI Explainer
Hype vs. Reality: The AI ExplainerLuminary Labs
 
Study: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving CarsStudy: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving CarsLinkedIn
 

Viewers also liked (7)

Groovy Finesse
Groovy FinesseGroovy Finesse
Groovy Finesse
 
Crafting delightful experiences
Crafting delightful experiencesCrafting delightful experiences
Crafting delightful experiences
 
Hot or Not? Fundraising in 2012
Hot or Not? Fundraising in 2012Hot or Not? Fundraising in 2012
Hot or Not? Fundraising in 2012
 
User Experioence - delivering great ux through great ui
User Experioence - delivering great ux through great uiUser Experioence - delivering great ux through great ui
User Experioence - delivering great ux through great ui
 
Mopping Up With Groovy
Mopping Up With GroovyMopping Up With Groovy
Mopping Up With Groovy
 
Hype vs. Reality: The AI Explainer
Hype vs. Reality: The AI ExplainerHype vs. Reality: The AI Explainer
Hype vs. Reality: The AI Explainer
 
Study: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving CarsStudy: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving Cars
 

Similar to Groovy Finesse

Dynamic Languages on the JVM
Dynamic Languages on the JVMDynamic Languages on the JVM
Dynamic Languages on the JVMelliando dias
 
Groovy and Grails intro
Groovy and Grails introGroovy and Grails intro
Groovy and Grails introMiguel Pastor
 
Why don't you Groovy?
Why don't you Groovy?Why don't you Groovy?
Why don't you Groovy?Orest Ivasiv
 
intoduction to Grails Framework
intoduction to Grails Frameworkintoduction to Grails Framework
intoduction to Grails FrameworkHarshdeep Kaur
 
Dynamic Languages Web Frameworks Indicthreads 2009
Dynamic Languages Web Frameworks Indicthreads 2009Dynamic Languages Web Frameworks Indicthreads 2009
Dynamic Languages Web Frameworks Indicthreads 2009Arun Gupta
 
Griffon: Re-imaging Desktop Java Technology
Griffon: Re-imaging Desktop Java TechnologyGriffon: Re-imaging Desktop Java Technology
Griffon: Re-imaging Desktop Java TechnologyJames Williams
 
GWT Introduction for Eclipse Day
GWT Introduction for Eclipse Day GWT Introduction for Eclipse Day
GWT Introduction for Eclipse Day DNG Consulting
 
Groovy and Grails in Action - Devoxx 2008 - University - Guillaume Laforge
Groovy and Grails in Action - Devoxx 2008 - University - Guillaume LaforgeGroovy and Grails in Action - Devoxx 2008 - University - Guillaume Laforge
Groovy and Grails in Action - Devoxx 2008 - University - Guillaume LaforgeGuillaume Laforge
 
OSGi enRoute Unveiled - P Kriens
OSGi enRoute Unveiled - P KriensOSGi enRoute Unveiled - P Kriens
OSGi enRoute Unveiled - P Kriensmfrancis
 
Jalimo Slides Linuxtag2007 (English)
Jalimo Slides Linuxtag2007 (English)Jalimo Slides Linuxtag2007 (English)
Jalimo Slides Linuxtag2007 (English)smancke
 
Javascript as a target language - GWT KickOff - Part 2/2
Javascript as a target language - GWT KickOff - Part 2/2Javascript as a target language - GWT KickOff - Part 2/2
Javascript as a target language - GWT KickOff - Part 2/2JooinK
 
GROOVY ON GRAILS
GROOVY ON GRAILSGROOVY ON GRAILS
GROOVY ON GRAILSziyaaskerov
 
Gr8Conf US 2017 - From Java to Groovy: Adventure Time!
Gr8Conf US 2017 - From Java to Groovy: Adventure Time!Gr8Conf US 2017 - From Java to Groovy: Adventure Time!
Gr8Conf US 2017 - From Java to Groovy: Adventure Time!Iván López Martín
 
AOT and Native with Spring Boot 3.0
AOT and Native with Spring Boot 3.0AOT and Native with Spring Boot 3.0
AOT and Native with Spring Boot 3.0MoritzHalbritter
 
Magic with groovy & grails
Magic with groovy & grailsMagic with groovy & grails
Magic with groovy & grailsGeorge Platon
 
NodeJS vs Golang - A detailed comparison
NodeJS vs Golang - A detailed comparisonNodeJS vs Golang - A detailed comparison
NodeJS vs Golang - A detailed comparisonDevathon
 
Java 7 - New Features - by Mihail Stoynov and Svetlin Nakov
Java 7 - New Features - by Mihail Stoynov and Svetlin NakovJava 7 - New Features - by Mihail Stoynov and Svetlin Nakov
Java 7 - New Features - by Mihail Stoynov and Svetlin NakovSvetlin Nakov
 

Similar to Groovy Finesse (20)

Dynamic Languages on the JVM
Dynamic Languages on the JVMDynamic Languages on the JVM
Dynamic Languages on the JVM
 
Groovy and Grails intro
Groovy and Grails introGroovy and Grails intro
Groovy and Grails intro
 
Groovy & Grails
Groovy & GrailsGroovy & Grails
Groovy & Grails
 
Why don't you Groovy?
Why don't you Groovy?Why don't you Groovy?
Why don't you Groovy?
 
intoduction to Grails Framework
intoduction to Grails Frameworkintoduction to Grails Framework
intoduction to Grails Framework
 
Dynamic Languages Web Frameworks Indicthreads 2009
Dynamic Languages Web Frameworks Indicthreads 2009Dynamic Languages Web Frameworks Indicthreads 2009
Dynamic Languages Web Frameworks Indicthreads 2009
 
Geb with spock
Geb with spockGeb with spock
Geb with spock
 
Griffon: Re-imaging Desktop Java Technology
Griffon: Re-imaging Desktop Java TechnologyGriffon: Re-imaging Desktop Java Technology
Griffon: Re-imaging Desktop Java Technology
 
GWT Introduction for Eclipse Day
GWT Introduction for Eclipse Day GWT Introduction for Eclipse Day
GWT Introduction for Eclipse Day
 
Groovy and Grails in Action - Devoxx 2008 - University - Guillaume Laforge
Groovy and Grails in Action - Devoxx 2008 - University - Guillaume LaforgeGroovy and Grails in Action - Devoxx 2008 - University - Guillaume Laforge
Groovy and Grails in Action - Devoxx 2008 - University - Guillaume Laforge
 
OSGi enRoute Unveiled - P Kriens
OSGi enRoute Unveiled - P KriensOSGi enRoute Unveiled - P Kriens
OSGi enRoute Unveiled - P Kriens
 
Jalimo Slides Linuxtag2007 (English)
Jalimo Slides Linuxtag2007 (English)Jalimo Slides Linuxtag2007 (English)
Jalimo Slides Linuxtag2007 (English)
 
Javascript as a target language - GWT KickOff - Part 2/2
Javascript as a target language - GWT KickOff - Part 2/2Javascript as a target language - GWT KickOff - Part 2/2
Javascript as a target language - GWT KickOff - Part 2/2
 
GROOVY ON GRAILS
GROOVY ON GRAILSGROOVY ON GRAILS
GROOVY ON GRAILS
 
Groovy
GroovyGroovy
Groovy
 
Gr8Conf US 2017 - From Java to Groovy: Adventure Time!
Gr8Conf US 2017 - From Java to Groovy: Adventure Time!Gr8Conf US 2017 - From Java to Groovy: Adventure Time!
Gr8Conf US 2017 - From Java to Groovy: Adventure Time!
 
AOT and Native with Spring Boot 3.0
AOT and Native with Spring Boot 3.0AOT and Native with Spring Boot 3.0
AOT and Native with Spring Boot 3.0
 
Magic with groovy & grails
Magic with groovy & grailsMagic with groovy & grails
Magic with groovy & grails
 
NodeJS vs Golang - A detailed comparison
NodeJS vs Golang - A detailed comparisonNodeJS vs Golang - A detailed comparison
NodeJS vs Golang - A detailed comparison
 
Java 7 - New Features - by Mihail Stoynov and Svetlin Nakov
Java 7 - New Features - by Mihail Stoynov and Svetlin NakovJava 7 - New Features - by Mihail Stoynov and Svetlin Nakov
Java 7 - New Features - by Mihail Stoynov and Svetlin Nakov
 

Recently uploaded

Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfAijun Zhang
 
VoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXVoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXTarek Kalaji
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesDavid Newbury
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IES VE
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Adtran
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintMahmoud Rabie
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarPrecisely
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureEric D. Schabell
 
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDEADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDELiveplex
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxMatsuo Lab
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfDaniel Santiago Silva Capera
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxGDSC PJATK
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfJamie (Taka) Wang
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8DianaGray10
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-pyJamie (Taka) Wang
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024D Cloud Solutions
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaborationbruanjhuli
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostMatt Ray
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1DianaGray10
 

Recently uploaded (20)

Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdf
 
VoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXVoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBX
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond Ontologies
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership Blueprint
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity Webinar
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability Adventure
 
201610817 - edge part1
201610817 - edge part1201610817 - edge part1
201610817 - edge part1
 
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDEADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptx
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptx
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-py
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1
 

Groovy Finesse

  • 1. Groovy Finesse Why would we use Groovy?
  • 2. General Information HomePage - http://groovy.codehaus.org Groovy is open source using a BSD / Apache style licence Sun's defacto scripting language (JSR-241) http://www.jcp.org/en/jsr/detail?id=241 Dynamic Language that is compiled into Java class bytecode The company behind Groovy and Grails (G2One) was just bought by a respectable company called SpringSource (the same one that does the support for Spring) 70k downloads in November 2007 and growing
  • 3. Benefits Easy for Java Developers to understand and adopt Is the Only JVM language interchangeable with Java code Compiled Groovy classes can be used from Java Compiled Java classes can be used from Groovy Can use Java syntax in Groovy seamlessly Growing community and interest The company behind Groovy G2One was just bought by a respectable company called SpringSource With the new stable release (1.6) that came out last week it brings forth performance improvements GroovyConsole provides a quick way to test out any arbitrary code
  • 4. Benefits over Java More concise, cleaner syntax and has less syntax noise than Java Can be ran as shell scripts (just like Perl) Closures Closures are Objects that encapsulate behavior Have a scope that allows for clean exiting of external resources without writing explicit code Closing files gracefully Closing JDBC connections gracefully etc Currying allows to make more concise closures from other closures by providing defaults to parameters
  • 5. Benefits over Java MOP - Meta Object Protocol Allows to inspect any arbitrary object Helper methods dump() or inspect() will expose the underlying attributes and their values Allows addition or modification of methods at runtime Allows the creation of DSLs
  • 6. Benefits over Java Builders (a nice and clean patterns that allows to build complex objects using nested closures) MarkupBuilder - for HTML, XML etc JMXBuilder SwingBuilder
  • 7. Features not Found in Standard Java The Groovy language is largely a superset of the Java language. One can usually rename a .java file to a .groovy one and it will work (though there are a few gotchas). Groovy has a number of features not found in standard Java. This makes the learning curve for Java developers almost zero, since they can start with Java syntax and gradually learn to add Groovy features. [1] Groovy features not available in Java include both static and dynamic typing (with the def keyword), closures, operator overloading, native syntax for lists and associative arrays (maps), native support for regular expressions, polymorphic iteration, expressions embedded inside strings, additional helper methods, and the safe navigation operator "?." to automatically check for nulls (for example, "variable?.method()", or "variable?.field")
  • 8. Groovy Modules COM Scripting — script Windows ActiveX and COM components with Groovy Gant GFreeMarker — an integration of the FreeMarker template engine for Groovy GMaven — GMaven provides integration of the Groovy language into Maven. Google Data Support — makes using the Google Data APIs easier from within Groovy Gram — a simple xdoclet-like tool for processing doclet tags or Java 5 annotations GraphicsBuilder — GraphicsBuilder is a Groovy builder for Java 2D Grapplet Griffon — Dekstop Enhancements for Groovy Groosh — Provides a shell-like capability for handling external processes. Groovy Jabber-RPC — allows you to make XML-RPC calls using the Jabber protocol
  • 9. Groovy Modules GroovyJMS GroovyLab — Provides a domain specific language (DSL) for math engineering (matlab-like syntax). Groovy Monkey — is a dynamic scripting tool for the Eclipse Platform GroovyRestlet — Groovy DSL for constructing Restlet application Groovy Science Groovy SOAP — create a SOAP server and make calls to remote SOAP servers using Groovy GroovySWT — a wrapper around SWT, the eclipse Standard Widget Toolkit GroovyWS — GroovySOAP replacement that uses CXF and Java5 features GSP — means GroovyServer Pages, which is similar to JSP (JavaServer Pages) GSQL — supports easier access to databases using Groovy HTTP Builder — provides a convenient builder API for complex HTTP requests JideBuilder — JideBuilder is a Groovy builder for the open source JIDE
  • 10. Groovy Modules Native Launcher — a native program for launching groovy scripts Proxy-o-Matic — Proxy-o-Matic lets you create dynamic proxies fast and in an homogeneous way Windows NSIS-Installer — a Windows-specific installer for Groovy Windows Services — framework for Groovy-based WinNT (Windows) Services WingSBuilder — WingsBuilder is a Groovy builder for the wingS Framework XMLRPC — allows you to create a local XML-RPC server and/or to make calls on remote XML-RPC servers Grails — a Groovy-based web framework inspired by Ruby on Rails GORM — the Grails Object-Relational Mapping persistence framework GroovyPlugin — A Groovy plugin for JSPWiki OCM Groovy — A Object Content Mapping implemented in Groovy leveraging the Java Content Repository (JCR) Tellurium — A test framework built on top of the Selenium test framework implemented in Groovy
  • 11. IDE Support Debugging with JSwat Eclipse Plugin IntelliJ IDEA Plugin IntelliJ IDEA Plugin (JetBrains Edition) JEdit Plugin NetBeans Plugin Oracle JDeveloper Plugin Other Plugins TextMate
  • 12. Project Build Management Maven Ant Gradle
  • 13. Groovy Books Groovy In Action (Manning) Programming Groovy: Dynamic Productivity for the Java Developer (Pragmatic Programmers) Groovy Recipes: Greasing the Wheels of Java (Pragmatic Programmers) Beginning Groovy and Grails: From Novice to Professional (Apress) Groovy Programming: An Introduction for Java Developers (Morgan Kaufmann) Groovy and Grails Recipes: Recipes a Dynamic Approach (Apress) The Definitive Guide to Grails (Apress) The Definitive Guide to Grails: Second Edition (Apress) Getting Started with Grails (Lulu.com)
  • 14. Who Uses Groovy? Mule ESB ServiceMix ESB Spring Grails LinkedI