Enviar pesquisa
Carregar
Groovy Fly Through
•
0 gostou
•
871 visualizações
N
niklal
Seguir
Tecnologia
Educação
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 49
Baixar agora
Baixar para ler offline
Recomendados
Agent threading model
Agent threading model
Judd Gaddie
Zero-Overhead Metaprogramming: Reflection and Metaobject Protocols Fast and w...
Zero-Overhead Metaprogramming: Reflection and Metaobject Protocols Fast and w...
Stefan Marr
Typescript - why it's awesome
Typescript - why it's awesome
Piotr Miazga
DashProfiler 200807
DashProfiler 200807
Tim Bunce
Building High-Performance Language Implementations With Low Effort
Building High-Performance Language Implementations With Low Effort
Stefan Marr
(Greach 2015) Dsl'ing your Groovy
(Greach 2015) Dsl'ing your Groovy
Alonso Torres
Rust: Reach Further (from QCon Sao Paolo 2018)
Rust: Reach Further (from QCon Sao Paolo 2018)
nikomatsakis
Rust "Hot or Not" at Sioux
Rust "Hot or Not" at Sioux
nikomatsakis
Recomendados
Agent threading model
Agent threading model
Judd Gaddie
Zero-Overhead Metaprogramming: Reflection and Metaobject Protocols Fast and w...
Zero-Overhead Metaprogramming: Reflection and Metaobject Protocols Fast and w...
Stefan Marr
Typescript - why it's awesome
Typescript - why it's awesome
Piotr Miazga
DashProfiler 200807
DashProfiler 200807
Tim Bunce
Building High-Performance Language Implementations With Low Effort
Building High-Performance Language Implementations With Low Effort
Stefan Marr
(Greach 2015) Dsl'ing your Groovy
(Greach 2015) Dsl'ing your Groovy
Alonso Torres
Rust: Reach Further (from QCon Sao Paolo 2018)
Rust: Reach Further (from QCon Sao Paolo 2018)
nikomatsakis
Rust "Hot or Not" at Sioux
Rust "Hot or Not" at Sioux
nikomatsakis
Guaranteeing Memory Safety in Rust
Guaranteeing Memory Safety in Rust
nikomatsakis
No excuses, switch to kotlin
No excuses, switch to kotlin
Thijs Suijten
Intro to Rust from Applicative / NY Meetup
Intro to Rust from Applicative / NY Meetup
nikomatsakis
Gpu programming with java
Gpu programming with java
Gary Sieling
Engineering fast indexes (Deepdive)
Engineering fast indexes (Deepdive)
Daniel Lemire
Python lec4
Python lec4
Swarup Ghosh
Unleash your inner console cowboy
Unleash your inner console cowboy
Kenneth Geisshirt
iOS Development with Blocks
iOS Development with Blocks
Jeff Kelley
Natural Language Toolkit (NLTK), Basics
Natural Language Toolkit (NLTK), Basics
Prakash Pimpale
Webinar: Replication and Replica Sets
Webinar: Replication and Replica Sets
MongoDB
Is HTML5 Ready? (workshop)
Is HTML5 Ready? (workshop)
Remy Sharp
Ns2programs
Ns2programs
Meenakshi Devi
Introduce to Rust-A Powerful System Language
Introduce to Rust-A Powerful System Language
安齊 劉
Rust vs C++
Rust vs C++
corehard_by
Python lec5
Python lec5
Swarup Ghosh
Coding in Style
Coding in Style
scalaconfjp
Introduction to CUDA C: NVIDIA : Notes
Introduction to CUDA C: NVIDIA : Notes
Subhajit Sahu
OPTIMAL BINARY SEARCH
OPTIMAL BINARY SEARCH
Cool Guy
GR8Conf 2011: GContracts
GR8Conf 2011: GContracts
GR8Conf
C++ How I learned to stop worrying and love metaprogramming
C++ How I learned to stop worrying and love metaprogramming
cppfrug
#SMiLELondon Pearson
#SMiLELondon Pearson
Marc Wright
تويتر لاستخدام التواصل الاجتماعي
تويتر لاستخدام التواصل الاجتماعي
Freelancer
Mais conteúdo relacionado
Mais procurados
Guaranteeing Memory Safety in Rust
Guaranteeing Memory Safety in Rust
nikomatsakis
No excuses, switch to kotlin
No excuses, switch to kotlin
Thijs Suijten
Intro to Rust from Applicative / NY Meetup
Intro to Rust from Applicative / NY Meetup
nikomatsakis
Gpu programming with java
Gpu programming with java
Gary Sieling
Engineering fast indexes (Deepdive)
Engineering fast indexes (Deepdive)
Daniel Lemire
Python lec4
Python lec4
Swarup Ghosh
Unleash your inner console cowboy
Unleash your inner console cowboy
Kenneth Geisshirt
iOS Development with Blocks
iOS Development with Blocks
Jeff Kelley
Natural Language Toolkit (NLTK), Basics
Natural Language Toolkit (NLTK), Basics
Prakash Pimpale
Webinar: Replication and Replica Sets
Webinar: Replication and Replica Sets
MongoDB
Is HTML5 Ready? (workshop)
Is HTML5 Ready? (workshop)
Remy Sharp
Ns2programs
Ns2programs
Meenakshi Devi
Introduce to Rust-A Powerful System Language
Introduce to Rust-A Powerful System Language
安齊 劉
Rust vs C++
Rust vs C++
corehard_by
Python lec5
Python lec5
Swarup Ghosh
Coding in Style
Coding in Style
scalaconfjp
Introduction to CUDA C: NVIDIA : Notes
Introduction to CUDA C: NVIDIA : Notes
Subhajit Sahu
OPTIMAL BINARY SEARCH
OPTIMAL BINARY SEARCH
Cool Guy
GR8Conf 2011: GContracts
GR8Conf 2011: GContracts
GR8Conf
C++ How I learned to stop worrying and love metaprogramming
C++ How I learned to stop worrying and love metaprogramming
cppfrug
Mais procurados
(20)
Guaranteeing Memory Safety in Rust
Guaranteeing Memory Safety in Rust
No excuses, switch to kotlin
No excuses, switch to kotlin
Intro to Rust from Applicative / NY Meetup
Intro to Rust from Applicative / NY Meetup
Gpu programming with java
Gpu programming with java
Engineering fast indexes (Deepdive)
Engineering fast indexes (Deepdive)
Python lec4
Python lec4
Unleash your inner console cowboy
Unleash your inner console cowboy
iOS Development with Blocks
iOS Development with Blocks
Natural Language Toolkit (NLTK), Basics
Natural Language Toolkit (NLTK), Basics
Webinar: Replication and Replica Sets
Webinar: Replication and Replica Sets
Is HTML5 Ready? (workshop)
Is HTML5 Ready? (workshop)
Ns2programs
Ns2programs
Introduce to Rust-A Powerful System Language
Introduce to Rust-A Powerful System Language
Rust vs C++
Rust vs C++
Python lec5
Python lec5
Coding in Style
Coding in Style
Introduction to CUDA C: NVIDIA : Notes
Introduction to CUDA C: NVIDIA : Notes
OPTIMAL BINARY SEARCH
OPTIMAL BINARY SEARCH
GR8Conf 2011: GContracts
GR8Conf 2011: GContracts
C++ How I learned to stop worrying and love metaprogramming
C++ How I learned to stop worrying and love metaprogramming
Destaque
#SMiLELondon Pearson
#SMiLELondon Pearson
Marc Wright
تويتر لاستخدام التواصل الاجتماعي
تويتر لاستخدام التواصل الاجتماعي
Freelancer
Lee Stevens sharepoint 2010
Lee Stevens sharepoint 2010
Marc Wright
Something Specific and Simple
Something Specific and Simple
niklal
Blog & Electronic Press التدوين و الصحافة الإلكترونية
Blog & Electronic Press التدوين و الصحافة الإلكترونية
Freelancer
University Ready? Task 2 - Reading Like You've Never Read Before
University Ready? Task 2 - Reading Like You've Never Read Before
Elisabeth Chan
(first '(Clojure.))
(first '(Clojure.))
niklal
Länkad Data
Länkad Data
niklal
Destaque
(8)
#SMiLELondon Pearson
#SMiLELondon Pearson
تويتر لاستخدام التواصل الاجتماعي
تويتر لاستخدام التواصل الاجتماعي
Lee Stevens sharepoint 2010
Lee Stevens sharepoint 2010
Something Specific and Simple
Something Specific and Simple
Blog & Electronic Press التدوين و الصحافة الإلكترونية
Blog & Electronic Press التدوين و الصحافة الإلكترونية
University Ready? Task 2 - Reading Like You've Never Read Before
University Ready? Task 2 - Reading Like You've Never Read Before
(first '(Clojure.))
(first '(Clojure.))
Länkad Data
Länkad Data
Semelhante a Groovy Fly Through
Introduction to Groovy
Introduction to Groovy
André Faria Gomes
Clojure And Swing
Clojure And Swing
Skills Matter
Groovy!
Groovy!
Petr Giecek
Gradle build tool that rocks with DSL JavaOne India 4th May 2012
Gradle build tool that rocks with DSL JavaOne India 4th May 2012
Rajmahendra Hegde
Groovy.pptx
Groovy.pptx
Giancarlo Frison
Groovy On Trading Desk (2010)
Groovy On Trading Desk (2010)
Jonathan Felch
Game Design and Development Workshop Day 1
Game Design and Development Workshop Day 1
Troy Miles
Groovy: to Infinity and Beyond -- JavaOne 2010 -- Guillaume Laforge
Groovy: to Infinity and Beyond -- JavaOne 2010 -- Guillaume Laforge
Guillaume Laforge
Latinoware
Latinoware
kchodorow
Scala @ TechMeetup Edinburgh
Scala @ TechMeetup Edinburgh
Stuart Roebuck
Refactoring to Macros with Clojure
Refactoring to Macros with Clojure
Dmitry Buzdin
Groovy intro for OUDL
Groovy intro for OUDL
J David Beutel
Dart, unicorns and rainbows
Dart, unicorns and rainbows
chrisbuckett
Kotlin / Android Update
Kotlin / Android Update
Garth Gilmour
Javascript status 2016
Javascript status 2016
Arshavski Alexander
Groovy presentation
Groovy presentation
Manav Prasad
Groovy
Groovy
Zen Urban
Hw09 Hadoop + Clojure
Hw09 Hadoop + Clojure
Cloudera, Inc.
Groovy
Groovy
Pascal Nsue Engonga
A Sceptical Guide to Functional Programming
A Sceptical Guide to Functional Programming
Garth Gilmour
Semelhante a Groovy Fly Through
(20)
Introduction to Groovy
Introduction to Groovy
Clojure And Swing
Clojure And Swing
Groovy!
Groovy!
Gradle build tool that rocks with DSL JavaOne India 4th May 2012
Gradle build tool that rocks with DSL JavaOne India 4th May 2012
Groovy.pptx
Groovy.pptx
Groovy On Trading Desk (2010)
Groovy On Trading Desk (2010)
Game Design and Development Workshop Day 1
Game Design and Development Workshop Day 1
Groovy: to Infinity and Beyond -- JavaOne 2010 -- Guillaume Laforge
Groovy: to Infinity and Beyond -- JavaOne 2010 -- Guillaume Laforge
Latinoware
Latinoware
Scala @ TechMeetup Edinburgh
Scala @ TechMeetup Edinburgh
Refactoring to Macros with Clojure
Refactoring to Macros with Clojure
Groovy intro for OUDL
Groovy intro for OUDL
Dart, unicorns and rainbows
Dart, unicorns and rainbows
Kotlin / Android Update
Kotlin / Android Update
Javascript status 2016
Javascript status 2016
Groovy presentation
Groovy presentation
Groovy
Groovy
Hw09 Hadoop + Clojure
Hw09 Hadoop + Clojure
Groovy
Groovy
A Sceptical Guide to Functional Programming
A Sceptical Guide to Functional Programming
Último
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
Manik S Magar
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
Dilum Bandara
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
null - The Open Security Community
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
Enterprise Knowledge
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
Slibray Presentation
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
ScyllaDB
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Precisely
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
Stephanie Beckett
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Mark Simos
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
Alex Barbosa Coqueiro
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
Addepto
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
charlottematthew16
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
BookNet Canada
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
Sri Ambati
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
Fwdays
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
Dubai Multi Commodity Centre
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
Commit University
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
2toLead Limited
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
Miki Katsuragi
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
Rizwan Syed
Último
(20)
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
Groovy Fly Through
1.
Fly Through
2.
Who? <niklas.lindstrom@valtech.se> @niklasl
3.
Trust me? Used dynamic
langs on the JVM since 2000. Groovy since 2004/2007
4.
What? A Dynamic Language
for the JVM
5.
A modern language Inspired
by best features: Java Ruby Python Smalltalk ...
6.
Java The Premise The Platform
7.
Exciting? Modern GC JIT Puts hardware
to good use (mem, multi-core, I/O)
8.
Java = Community Well-established
libraries (jdk, commons, ...). Loads of opens source stuff.
9.
Evolution Groovy extends Java. Really.
100% semantically, 90% syntactically.
10.
Creative Tools
11.
What does it
look like? class First { static void main(String[] args) { println "You just gave me " + args[0] } }
12.
Shorter println "You just
gave me ${args[0]}"
13.
Many Variants class Think
{ String value def getMeaning() { "You just gave me ${value}." } static main(args) { def first = args? args[0] : "nothing" println new Think(value:first).meaning } }
14.
Usages Everywhere. Groovy classes are
real classes in Java.
15.
Cherry-pick ● Small scripts ●
API experimentation ● Tools for batch and analysis ● Tests, Specs ● Building
16.
Entire applications Seamlessly cross-compiles
with Java. Write any or all parts in Groovy, using any Java framework.
17.
Ceremony public class Item
{ private String name; private String description; public Item() {} public String getName() { return name; } public String setName(String name) { this.name = name; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } }
18.
Pragmatic class Item { String
name String description }
19.
Compact Properties new Date().time
// same as getTime()
20.
Dynamic def v =
"string.." v = 1 assert v instanceof String
21.
No cast needed Just
access methods and properties expected to be there.
22.
But.. Types have significance..
23.
Type Hybrid Dynamic refs
are declared with def. Typed refs are auto-cast & converted: String v = 123 v.bytes[-1] == '3'
24.
GroovyCastException Date d d =
"hi!"
25.
Small Values of
Cool
26.
Optional Parens client.sendMessage "Message:
${msg}" client.quit()
27.
Access else null response?.entity
28.
Use all files*.name
29.
Slice def l =
['a', 'b', 'c', 'd'] assert l[1..-2] == ['b', 'c']
30.
Map Expandos Map map
= ['a': 1, b: 2] assert map['a'] == 1 assert map.b == 2 map.c = 3 map['d'] = 3 assert map['c'] == map.d
31.
Closures Code block literals. Syntax: def
items = ["a", "b", "c", "def"] items.eachWithIndex { item, i -> println "${i+1}: ${item}" }
32.
Sift and Transform def
values = ["1", "2", "12", "123"] def some = values.findAll { it.size() > 1 } def ints = some.collect { (it as int) * 2 } assert ints == [24, 246]
33.
GDK new File("urls.txt").eachLine { def
url = new URL(it) def file = new File("./${url.path}") file.parentFile.mkdirs() file.bytes = url.bytes }
34.
Xml... def slurper =
new XmlSlurper() def html = slurper.parse(new File("/some.xhtml")) html.body.'*'.each { println it.'@id' }
35.
Spock def "lists should
be appendable"() { given: def a = [] when: a << 1 then: a == [1] }
36.
Mocks EventHandler handler =
Mock() handler.handle(someAllowedEvent) >> true handler.handle(_) >> false
37.
Data-driven expect: a.toUpperCase() == b where: a
| b "a" | "A" "b" | "B" "c" | "C" "d" | "D"
38.
PowerAsserts assert a ==
[1] ERROR org.codehaus.groovy.tr...rt.PowerAssertionError: assert a == [1] | | | false []
39.
Environments
40.
Scripts $ groovy setup_db.groovy
41.
REPL $ groovysh groovy:000> import
org.apache.commons.io.*
42.
Groovy Console
43.
Building Ant Maven Gradle
44.
Grab with Grape @Grab('org.mortbay.jetty:jetty-embedded:6.1.0') import
org.mortbay.jetty.Server def server = new Server(8080) server.start()
45.
IDE:s Amazing IntelliJ support. Eclipse
known to be good..
46.
The Power of
Prototyping "You can use Groovy as an exploratory language for functionality spikes."
47.
More Info <http://groovy.codehaus.org/> <http://spockframework.org/> .. the
web is full of groovy: <http://groovyconsole.appspot.com/> Groovy Style For the Java Guy
48.
Thank you!
49.
CC Images Groovy-logo, "Groovy
Duke" "Tools" "Shell" "Tadpole"
Baixar agora