SlideShare ist ein Scribd-Unternehmen logo
1 von 56
Downloaden Sie, um offline zu lesen
Why Groovy When Java 8,
                         Or Scala, Or…

                                    Russel Winder
                                  email: russel@winder.org.uk
                                 xmpp: russel@winder.org.uk
                                    twitter: russel_winder




Copyright © 2012 Russel Winder                                  1
Aims, Goals and Objectives
     ●   Show that Groovy cannot be complacent about it's
         place in the JVM-verse.
     ●   Survive till the end of the session…




Copyright © 2012 Russel Winder                              2
Structure


                                 A beginning.

                                  A middle.

                                   An end.

Copyright © 2012 Russel Winder                  3
Protocol
     ●   Questions or short comments during the session are
         entirely in order.
     ●   Let me know you have an interjection by raising
         your hand, and when I come to an appropriate
         pause, I'll pass you the token.

                                 Questions, answers, comments, etc. appearing
                                 to get too long as interjections may get stacked
                                 to be unstacked at a break.


Copyright © 2012 Russel Winder                                                      4
Interstitial Advertisement




Copyright © 2012 Russel Winder                        5
Frontispiece




Copyright © 2012 Russel Winder                  6
Copyright © 2012 Russel Winder   7
Copyright © 2012 Russel Winder   8
A Preface




Copyright © 2012 Russel Winder               9
Friends, programmers,
                                 humans,
                          lend me your ears;



Copyright © 2012 Russel Winder                 10
I come to bury Groovy,
                                 not to praise it.




Copyright © 2012 Russel Winder                       11
A Beginning




Copyright © 2012 Russel Winder                 12
Statically                        Dynamically
     typed                       WAR   typed
     languages                         languages




Copyright © 2012 Russel Winder                       13
Static Typing Mandatory
     ●   Compilers catch:                ●   Compiled direct to
           ●   Incorrect use of types.       target:
           ●   Silly spelling errors.        ●   Less overhead.
     ●   Need fewer tests.                   ●   Faster
                                         ●   Can work with big code
                                             bases because of the
                                             testable modularity.




Copyright © 2012 Russel Winder                                        14
Catch errors early, before execution.


      Computational performance is all that matters.




Copyright © 2012 Russel Winder                             15
Apart from correct implementation.




Copyright © 2012 Russel Winder                      16
And the right functionality




Copyright © 2012 Russel Winder                           17
And good user experience.




Copyright © 2012 Russel Winder                          18
Dynamic is Inadequate
     ●   Cannot program to             ●   Every action is
         interfaces.                       “interpreted” and so
     ●   Have to write tests for           slow.
         things a compiler can         ●   Difficult to work with
         (and should) catch                big codebases.
         trivially.
     ●   Have to run the code to
         find out anything.



Copyright © 2012 Russel Winder                                      19
Languages such as

                                 Java, Scala, Kotlin, Ceylon

                                        work where

                           Groovy, JRuby, Jython, Closure

                      result in incomprehensible codes.



Copyright © 2012 Russel Winder                                 20
Statically                           Dynamically
     typed                       Groovy   typed
     languages                            languages




Copyright © 2012 Russel Winder                          21
Groovy is in the middle of the battlefield by
             trying to be both dynamic and static.




Copyright © 2012 Russel Winder                            22
Guillaume Laforge emphasized
                    @TypeChecked and @StaticCompile
                    in his GGeX 2012 opening keynote.




Copyright © 2012 Russel Winder                          23
Guillaume Laforge emphasized
                      making Groovy static by default
                    in his GGeX 2012 opening keynote.




Copyright © 2012 Russel Winder                          24
Why turn a perfectly good dynamic language
                      into a static one?




Copyright © 2012 Russel Winder                        25
Let's not worry too much about RPython and
          CPython and PyPy. Or perhaps we should…




Copyright © 2012 Russel Winder                        26
Just use a good designed to be statically-typed
                  language from the outset?




Copyright © 2012 Russel Winder                           27
Scala
     ●   Doesn't have the same data model as Java.
     ●   Is in it's own world effectively.
     ●   So Scala projects generally all Scala.




Copyright © 2012 Russel Winder                       28
Ceylon
     ●   Doesn't have the same data model as Java.
     ●   Is in it's own world effectively.
     ●   So Ceylon projects generally all Ceylon.




                                 Ceylon supports optional typing!


Copyright © 2012 Russel Winder                                      29
Kotlin
     ●   Doesn't have the same data model as Java.
     ●   Is in it's own world effectively.
     ●   So Kotlin projects generally all Kotlin.




Copyright © 2012 Russel Winder                       30
If a language has to define it's own
                 data structures library then you begin
                       to think there is a problem.




Copyright © 2012 Russel Winder                            31
Or perhaps the Java Collections framework is
                   fundamentally broken?




Copyright © 2012 Russel Winder                          32
Java 8
     ●   Has exactly the same data model as Java.
     ●   Is the new world effectively.
     ●   So Java 8 projects generally all Java.




                                 The only question is when to upgrade
                                 from Java 5, 6 and 7 to Java 8.

Copyright © 2012 Russel Winder                                          33
Intermission




Copyright © 2012 Russel Winder                  34
http://steveonjava.com/nighthacking/

Copyright © 2012 Russel Winder                                 35
The fight is

                                   JavaFX

                                     vs.

                                  GroovyFX




Copyright © 2012 Russel Winder                  36
But, soft! what light through
                     yonder window breaks?




Copyright © 2012 Russel Winder               37
A Middle




Copyright © 2012 Russel Winder              38
Jave 8 evolves the Collections framework by
             introducing public defender methods.




Copyright © 2012 Russel Winder                          39
Backward compatibility assured.




Copyright © 2012 Russel Winder                       40
Data Parallelism in Collections.




Copyright © 2012 Russel Winder                          41
Data Parallelism
                                 Transform a sequence to
                                 another sequence all
                                 actions happen at the same
                                 time logically.




Copyright © 2012 Russel Winder                                42
GPars redundant?




Copyright © 2012 Russel Winder                      43
Dataflow
                                       Operators connected by
     Actors                            channels with activity
     Independent processes             triggered by arrival of
     communicating via                 data on the channels.
     asynchronous exchange
     of messages



                                 CSP
                                 Sequential processes
                                 connected by channels
                                 using synchronous message
                                 exchange (rendezvous).
Copyright © 2012 Russel Winder                                   44
Actors
     Independent processes
     communicating via
     asynchronous exchange
     of messages




Copyright © 2012 Russel Winder   45
Dataflow
                                 Operators connected by
                                 channels with activity
                                 triggered by arrival of
                                 data on the channels.




Copyright © 2012 Russel Winder                             46
CSP
                                 Sequential processes
                                 connected by channels
                                 using synchronous message
                                 exchange (rendezvous).
Copyright © 2012 Russel Winder                               47
The End




Copyright © 2012 Russel Winder             48
To Groovy or not to Groovy…




Copyright © 2012 Russel Winder      49
…that is the question.




Copyright © 2012 Russel Winder            50
Copyright © 2012 Russel Winder   51
Is static Groovy a better language than Java 8?




Copyright © 2012 Russel Winder                            52
Groovy has 6 months to stake it's claim to
            hegemony over the JVM space.




Copyright © 2012 Russel Winder                      53
Surreptitious Advertisement




Copyright © 2012 Russel Winder                     54
DevoxxUK 2013

                          2013-03-26 & 2013-03-27


               http://www.devoxx.com/display/UK13/Home


Copyright © 2012 Russel Winder                           55
Why Groovy When Java 8,
                         Or Scala, Or…

                                    Russel Winder
                                  email: russel@winder.org.uk
                                 xmpp: russel@winder.org.uk
                                    twitter: russel_winder




Copyright © 2012 Russel Winder                                  56

Weitere ähnliche Inhalte

Ähnlich wie Why Groovy When Java 8 or Scala, or…

Java is Dead, Long Live Ceylon, Kotlin, etc
Java is Dead,  Long Live Ceylon, Kotlin, etcJava is Dead,  Long Live Ceylon, Kotlin, etc
Java is Dead, Long Live Ceylon, Kotlin, etcRussel Winder
 
Java is dead, long live Scala, Kotlin, Ceylon, etc.
Java is dead, long live Scala, Kotlin, Ceylon, etc.Java is dead, long live Scala, Kotlin, Ceylon, etc.
Java is dead, long live Scala, Kotlin, Ceylon, etc.Russel Winder
 
Java 8: a New Beginning
Java 8: a New BeginningJava 8: a New Beginning
Java 8: a New BeginningRussel Winder
 
Gant, the lightweight and Groovy targeted scripting framework
Gant, the lightweight and Groovy targeted scripting frameworkGant, the lightweight and Groovy targeted scripting framework
Gant, the lightweight and Groovy targeted scripting frameworkSkills Matter
 
Tales from the Workshops
Tales from the WorkshopsTales from the Workshops
Tales from the WorkshopsRussel Winder
 
TSPBUG - Practical SharePoint IA
TSPBUG - Practical SharePoint IATSPBUG - Practical SharePoint IA
TSPBUG - Practical SharePoint IARuven Gotz
 
SPTechCon - July 2012 - Practical SharePoint Information Architecture
SPTechCon - July 2012 - Practical SharePoint Information ArchitectureSPTechCon - July 2012 - Practical SharePoint Information Architecture
SPTechCon - July 2012 - Practical SharePoint Information ArchitectureRuven Gotz
 
Just Keep Passing The Messages
Just Keep Passing The MessagesJust Keep Passing The Messages
Just Keep Passing The MessagesRussel Winder
 
Java Tech & Tools | Just Keep Passing the Message | Russel Winder
Java Tech & Tools | Just Keep Passing the Message | Russel WinderJava Tech & Tools | Just Keep Passing the Message | Russel Winder
Java Tech & Tools | Just Keep Passing the Message | Russel WinderJAX London
 
Just Keep Sending The Messages
Just Keep Sending The MessagesJust Keep Sending The Messages
Just Keep Sending The MessagesRussel Winder
 
Just Keep Sending The Messages
Just Keep Sending The MessagesJust Keep Sending The Messages
Just Keep Sending The MessagesRussel Winder
 
Keeping Your Project on Track Using the DEADLINES Model
Keeping Your Project on Track Using the DEADLINES ModelKeeping Your Project on Track Using the DEADLINES Model
Keeping Your Project on Track Using the DEADLINES ModelMarigold_Consulting
 
Psychological Aspects of Being an Entrepreneur:The Road to Entrepreneurship
Psychological Aspects of Being an Entrepreneur:The Road to EntrepreneurshipPsychological Aspects of Being an Entrepreneur:The Road to Entrepreneurship
Psychological Aspects of Being an Entrepreneur:The Road to EntrepreneurshipDeepanshu Saini
 
GroovyFX: or how to program JavaFX easily
GroovyFX: or how to program JavaFX easily GroovyFX: or how to program JavaFX easily
GroovyFX: or how to program JavaFX easily Russel Winder
 
Just Keep Passing the Messages from Groovy and Grails eXchange 2011
Just Keep Passing the Messages from Groovy and Grails eXchange 2011Just Keep Passing the Messages from Groovy and Grails eXchange 2011
Just Keep Passing the Messages from Groovy and Grails eXchange 2011Russel Winder
 
Introduction to Apache Hive
Introduction to Apache HiveIntroduction to Apache Hive
Introduction to Apache HiveTapan Avasthi
 
Introduction to Apache Pig
Introduction to Apache PigIntroduction to Apache Pig
Introduction to Apache PigTapan Avasthi
 
The Case for Kotlin and Ceylon
The Case for Kotlin and CeylonThe Case for Kotlin and Ceylon
The Case for Kotlin and CeylonRussel Winder
 
Adobe Education Leadership Forum - 2013
Adobe Education Leadership Forum - 2013Adobe Education Leadership Forum - 2013
Adobe Education Leadership Forum - 2013Pip Cleaves
 
Content Optimization - Three Dimensions to Creating Content that Works
Content Optimization - Three Dimensions to Creating Content that WorksContent Optimization - Three Dimensions to Creating Content that Works
Content Optimization - Three Dimensions to Creating Content that WorksAndrew Bredenkamp
 

Ähnlich wie Why Groovy When Java 8 or Scala, or… (20)

Java is Dead, Long Live Ceylon, Kotlin, etc
Java is Dead,  Long Live Ceylon, Kotlin, etcJava is Dead,  Long Live Ceylon, Kotlin, etc
Java is Dead, Long Live Ceylon, Kotlin, etc
 
Java is dead, long live Scala, Kotlin, Ceylon, etc.
Java is dead, long live Scala, Kotlin, Ceylon, etc.Java is dead, long live Scala, Kotlin, Ceylon, etc.
Java is dead, long live Scala, Kotlin, Ceylon, etc.
 
Java 8: a New Beginning
Java 8: a New BeginningJava 8: a New Beginning
Java 8: a New Beginning
 
Gant, the lightweight and Groovy targeted scripting framework
Gant, the lightweight and Groovy targeted scripting frameworkGant, the lightweight and Groovy targeted scripting framework
Gant, the lightweight and Groovy targeted scripting framework
 
Tales from the Workshops
Tales from the WorkshopsTales from the Workshops
Tales from the Workshops
 
TSPBUG - Practical SharePoint IA
TSPBUG - Practical SharePoint IATSPBUG - Practical SharePoint IA
TSPBUG - Practical SharePoint IA
 
SPTechCon - July 2012 - Practical SharePoint Information Architecture
SPTechCon - July 2012 - Practical SharePoint Information ArchitectureSPTechCon - July 2012 - Practical SharePoint Information Architecture
SPTechCon - July 2012 - Practical SharePoint Information Architecture
 
Just Keep Passing The Messages
Just Keep Passing The MessagesJust Keep Passing The Messages
Just Keep Passing The Messages
 
Java Tech & Tools | Just Keep Passing the Message | Russel Winder
Java Tech & Tools | Just Keep Passing the Message | Russel WinderJava Tech & Tools | Just Keep Passing the Message | Russel Winder
Java Tech & Tools | Just Keep Passing the Message | Russel Winder
 
Just Keep Sending The Messages
Just Keep Sending The MessagesJust Keep Sending The Messages
Just Keep Sending The Messages
 
Just Keep Sending The Messages
Just Keep Sending The MessagesJust Keep Sending The Messages
Just Keep Sending The Messages
 
Keeping Your Project on Track Using the DEADLINES Model
Keeping Your Project on Track Using the DEADLINES ModelKeeping Your Project on Track Using the DEADLINES Model
Keeping Your Project on Track Using the DEADLINES Model
 
Psychological Aspects of Being an Entrepreneur:The Road to Entrepreneurship
Psychological Aspects of Being an Entrepreneur:The Road to EntrepreneurshipPsychological Aspects of Being an Entrepreneur:The Road to Entrepreneurship
Psychological Aspects of Being an Entrepreneur:The Road to Entrepreneurship
 
GroovyFX: or how to program JavaFX easily
GroovyFX: or how to program JavaFX easily GroovyFX: or how to program JavaFX easily
GroovyFX: or how to program JavaFX easily
 
Just Keep Passing the Messages from Groovy and Grails eXchange 2011
Just Keep Passing the Messages from Groovy and Grails eXchange 2011Just Keep Passing the Messages from Groovy and Grails eXchange 2011
Just Keep Passing the Messages from Groovy and Grails eXchange 2011
 
Introduction to Apache Hive
Introduction to Apache HiveIntroduction to Apache Hive
Introduction to Apache Hive
 
Introduction to Apache Pig
Introduction to Apache PigIntroduction to Apache Pig
Introduction to Apache Pig
 
The Case for Kotlin and Ceylon
The Case for Kotlin and CeylonThe Case for Kotlin and Ceylon
The Case for Kotlin and Ceylon
 
Adobe Education Leadership Forum - 2013
Adobe Education Leadership Forum - 2013Adobe Education Leadership Forum - 2013
Adobe Education Leadership Forum - 2013
 
Content Optimization - Three Dimensions to Creating Content that Works
Content Optimization - Three Dimensions to Creating Content that WorksContent Optimization - Three Dimensions to Creating Content that Works
Content Optimization - Three Dimensions to Creating Content that Works
 

Mehr von Russel Winder

On Concurrency and Parallelism in the JVMverse
On Concurrency and Parallelism in the JVMverseOn Concurrency and Parallelism in the JVMverse
On Concurrency and Parallelism in the JVMverseRussel Winder
 
On the Architectures of Microservices: the next layer
On the Architectures of Microservices: the next layerOn the Architectures of Microservices: the next layer
On the Architectures of Microservices: the next layerRussel Winder
 
Fast Python? Don't Bother
Fast Python? Don't BotherFast Python? Don't Bother
Fast Python? Don't BotherRussel Winder
 
Making Python computations fast
Making Python computations fastMaking Python computations fast
Making Python computations fastRussel Winder
 
Making Computations Execute Very Quickly
Making Computations Execute Very QuicklyMaking Computations Execute Very Quickly
Making Computations Execute Very QuicklyRussel Winder
 
Spocktacular testing
Spocktacular testingSpocktacular testing
Spocktacular testingRussel Winder
 
Spocktacular Testing
Spocktacular TestingSpocktacular Testing
Spocktacular TestingRussel Winder
 
Is Groovy static or dynamic
Is Groovy static or dynamicIs Groovy static or dynamic
Is Groovy static or dynamicRussel Winder
 
Dataflow: the concurrency/parallelism architecture you need
Dataflow: the concurrency/parallelism architecture you needDataflow: the concurrency/parallelism architecture you need
Dataflow: the concurrency/parallelism architecture you needRussel Winder
 
Are Go and D threats to Python
Are Go and D threats to PythonAre Go and D threats to Python
Are Go and D threats to PythonRussel Winder
 
Is Groovy as fast as Java
Is Groovy as fast as JavaIs Groovy as fast as Java
Is Groovy as fast as JavaRussel Winder
 
Who needs C++ when you have D and Go
Who needs C++ when you have D and GoWho needs C++ when you have D and Go
Who needs C++ when you have D and GoRussel Winder
 
Why Go is an important programming language
Why Go is an important programming languageWhy Go is an important programming language
Why Go is an important programming languageRussel Winder
 
GPars: Groovy Parallelism for Java
GPars: Groovy Parallelism for JavaGPars: Groovy Parallelism for Java
GPars: Groovy Parallelism for JavaRussel Winder
 
Switch to Python 3…now…immediately
Switch to Python 3…now…immediatelySwitch to Python 3…now…immediately
Switch to Python 3…now…immediatelyRussel Winder
 
Given Groovy Who Needs Java
Given Groovy Who Needs JavaGiven Groovy Who Needs Java
Given Groovy Who Needs JavaRussel Winder
 

Mehr von Russel Winder (20)

On Concurrency and Parallelism in the JVMverse
On Concurrency and Parallelism in the JVMverseOn Concurrency and Parallelism in the JVMverse
On Concurrency and Parallelism in the JVMverse
 
On the Architectures of Microservices: the next layer
On the Architectures of Microservices: the next layerOn the Architectures of Microservices: the next layer
On the Architectures of Microservices: the next layer
 
Fast Python? Don't Bother
Fast Python? Don't BotherFast Python? Don't Bother
Fast Python? Don't Bother
 
Making Python computations fast
Making Python computations fastMaking Python computations fast
Making Python computations fast
 
Making Computations Execute Very Quickly
Making Computations Execute Very QuicklyMaking Computations Execute Very Quickly
Making Computations Execute Very Quickly
 
GPars Remoting
GPars RemotingGPars Remoting
GPars Remoting
 
GPars 2014
GPars 2014GPars 2014
GPars 2014
 
Spocktacular testing
Spocktacular testingSpocktacular testing
Spocktacular testing
 
Spocktacular Testing
Spocktacular TestingSpocktacular Testing
Spocktacular Testing
 
Is Groovy static or dynamic
Is Groovy static or dynamicIs Groovy static or dynamic
Is Groovy static or dynamic
 
Dataflow: the concurrency/parallelism architecture you need
Dataflow: the concurrency/parallelism architecture you needDataflow: the concurrency/parallelism architecture you need
Dataflow: the concurrency/parallelism architecture you need
 
Are Go and D threats to Python
Are Go and D threats to PythonAre Go and D threats to Python
Are Go and D threats to Python
 
Is Groovy as fast as Java
Is Groovy as fast as JavaIs Groovy as fast as Java
Is Groovy as fast as Java
 
Who needs C++ when you have D and Go
Who needs C++ when you have D and GoWho needs C++ when you have D and Go
Who needs C++ when you have D and Go
 
Why Go is an important programming language
Why Go is an important programming languageWhy Go is an important programming language
Why Go is an important programming language
 
GPars: Groovy Parallelism for Java
GPars: Groovy Parallelism for JavaGPars: Groovy Parallelism for Java
GPars: Groovy Parallelism for Java
 
Switch to Python 3…now…immediately
Switch to Python 3…now…immediatelySwitch to Python 3…now…immediately
Switch to Python 3…now…immediately
 
GPars Workshop
GPars WorkshopGPars Workshop
GPars Workshop
 
Given Groovy Who Needs Java
Given Groovy Who Needs JavaGiven Groovy Who Needs Java
Given Groovy Who Needs Java
 
GPars
GParsGPars
GPars
 

Kürzlich hochgeladen

SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
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
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 

Kürzlich hochgeladen (20)

SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
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
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
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
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 

Why Groovy When Java 8 or Scala, or…

  • 1. Why Groovy When Java 8, Or Scala, Or… Russel Winder email: russel@winder.org.uk xmpp: russel@winder.org.uk twitter: russel_winder Copyright © 2012 Russel Winder 1
  • 2. Aims, Goals and Objectives ● Show that Groovy cannot be complacent about it's place in the JVM-verse. ● Survive till the end of the session… Copyright © 2012 Russel Winder 2
  • 3. Structure A beginning. A middle. An end. Copyright © 2012 Russel Winder 3
  • 4. Protocol ● Questions or short comments during the session are entirely in order. ● Let me know you have an interjection by raising your hand, and when I come to an appropriate pause, I'll pass you the token. Questions, answers, comments, etc. appearing to get too long as interjections may get stacked to be unstacked at a break. Copyright © 2012 Russel Winder 4
  • 7. Copyright © 2012 Russel Winder 7
  • 8. Copyright © 2012 Russel Winder 8
  • 9. A Preface Copyright © 2012 Russel Winder 9
  • 10. Friends, programmers, humans, lend me your ears; Copyright © 2012 Russel Winder 10
  • 11. I come to bury Groovy, not to praise it. Copyright © 2012 Russel Winder 11
  • 12. A Beginning Copyright © 2012 Russel Winder 12
  • 13. Statically Dynamically typed WAR typed languages languages Copyright © 2012 Russel Winder 13
  • 14. Static Typing Mandatory ● Compilers catch: ● Compiled direct to ● Incorrect use of types. target: ● Silly spelling errors. ● Less overhead. ● Need fewer tests. ● Faster ● Can work with big code bases because of the testable modularity. Copyright © 2012 Russel Winder 14
  • 15. Catch errors early, before execution. Computational performance is all that matters. Copyright © 2012 Russel Winder 15
  • 16. Apart from correct implementation. Copyright © 2012 Russel Winder 16
  • 17. And the right functionality Copyright © 2012 Russel Winder 17
  • 18. And good user experience. Copyright © 2012 Russel Winder 18
  • 19. Dynamic is Inadequate ● Cannot program to ● Every action is interfaces. “interpreted” and so ● Have to write tests for slow. things a compiler can ● Difficult to work with (and should) catch big codebases. trivially. ● Have to run the code to find out anything. Copyright © 2012 Russel Winder 19
  • 20. Languages such as Java, Scala, Kotlin, Ceylon work where Groovy, JRuby, Jython, Closure result in incomprehensible codes. Copyright © 2012 Russel Winder 20
  • 21. Statically Dynamically typed Groovy typed languages languages Copyright © 2012 Russel Winder 21
  • 22. Groovy is in the middle of the battlefield by trying to be both dynamic and static. Copyright © 2012 Russel Winder 22
  • 23. Guillaume Laforge emphasized @TypeChecked and @StaticCompile in his GGeX 2012 opening keynote. Copyright © 2012 Russel Winder 23
  • 24. Guillaume Laforge emphasized making Groovy static by default in his GGeX 2012 opening keynote. Copyright © 2012 Russel Winder 24
  • 25. Why turn a perfectly good dynamic language into a static one? Copyright © 2012 Russel Winder 25
  • 26. Let's not worry too much about RPython and CPython and PyPy. Or perhaps we should… Copyright © 2012 Russel Winder 26
  • 27. Just use a good designed to be statically-typed language from the outset? Copyright © 2012 Russel Winder 27
  • 28. Scala ● Doesn't have the same data model as Java. ● Is in it's own world effectively. ● So Scala projects generally all Scala. Copyright © 2012 Russel Winder 28
  • 29. Ceylon ● Doesn't have the same data model as Java. ● Is in it's own world effectively. ● So Ceylon projects generally all Ceylon. Ceylon supports optional typing! Copyright © 2012 Russel Winder 29
  • 30. Kotlin ● Doesn't have the same data model as Java. ● Is in it's own world effectively. ● So Kotlin projects generally all Kotlin. Copyright © 2012 Russel Winder 30
  • 31. If a language has to define it's own data structures library then you begin to think there is a problem. Copyright © 2012 Russel Winder 31
  • 32. Or perhaps the Java Collections framework is fundamentally broken? Copyright © 2012 Russel Winder 32
  • 33. Java 8 ● Has exactly the same data model as Java. ● Is the new world effectively. ● So Java 8 projects generally all Java. The only question is when to upgrade from Java 5, 6 and 7 to Java 8. Copyright © 2012 Russel Winder 33
  • 34. Intermission Copyright © 2012 Russel Winder 34
  • 36. The fight is JavaFX vs. GroovyFX Copyright © 2012 Russel Winder 36
  • 37. But, soft! what light through yonder window breaks? Copyright © 2012 Russel Winder 37
  • 38. A Middle Copyright © 2012 Russel Winder 38
  • 39. Jave 8 evolves the Collections framework by introducing public defender methods. Copyright © 2012 Russel Winder 39
  • 40. Backward compatibility assured. Copyright © 2012 Russel Winder 40
  • 41. Data Parallelism in Collections. Copyright © 2012 Russel Winder 41
  • 42. Data Parallelism Transform a sequence to another sequence all actions happen at the same time logically. Copyright © 2012 Russel Winder 42
  • 43. GPars redundant? Copyright © 2012 Russel Winder 43
  • 44. Dataflow Operators connected by Actors channels with activity Independent processes triggered by arrival of communicating via data on the channels. asynchronous exchange of messages CSP Sequential processes connected by channels using synchronous message exchange (rendezvous). Copyright © 2012 Russel Winder 44
  • 45. Actors Independent processes communicating via asynchronous exchange of messages Copyright © 2012 Russel Winder 45
  • 46. Dataflow Operators connected by channels with activity triggered by arrival of data on the channels. Copyright © 2012 Russel Winder 46
  • 47. CSP Sequential processes connected by channels using synchronous message exchange (rendezvous). Copyright © 2012 Russel Winder 47
  • 48. The End Copyright © 2012 Russel Winder 48
  • 49. To Groovy or not to Groovy… Copyright © 2012 Russel Winder 49
  • 50. …that is the question. Copyright © 2012 Russel Winder 50
  • 51. Copyright © 2012 Russel Winder 51
  • 52. Is static Groovy a better language than Java 8? Copyright © 2012 Russel Winder 52
  • 53. Groovy has 6 months to stake it's claim to hegemony over the JVM space. Copyright © 2012 Russel Winder 53
  • 55. DevoxxUK 2013 2013-03-26 & 2013-03-27 http://www.devoxx.com/display/UK13/Home Copyright © 2012 Russel Winder 55
  • 56. Why Groovy When Java 8, Or Scala, Or… Russel Winder email: russel@winder.org.uk xmpp: russel@winder.org.uk twitter: russel_winder Copyright © 2012 Russel Winder 56