Úvod do Groovy pro Java experty
Transkript
Úvod do Groovy pro Java experty
Václav Pech
Senior Software Developer
JetBrains, Inc.
www.jetbrains.com
Něco o mně
• Václav Pech
– Programátor
– Nadšenec do Groovy
• JetBrains
– Dodavatel Vašich oblíbených nástrojů
• IntelliJ IDEA, TeamCity, ReSharper a další
www.jetbrains.com
2
Něco o prezentaci
• Část 1: Groovy syntaxe
– Nové obzory pro Java vývojáře
• Část 2: Příklady uplatnění pro Groovy
– Skriptování, Buildery, DSLs
• Otázky a odpovědi
•
POZOR!: Během prezentace bude ukazován a editován kód
www.jetbrains.com
3
Jeden jazyk to vše nezvládne
–
–
–
–
–
–
–
–
–
SQL
XHTML
JavaScript
XUL (XML UI Language)
SVG (Scalable Vector Graphics)
CSS (Cascading Stylesheets)
XPath
Velocity, XSL-T
…
– Groovy – Scripting, DSLs, builders, …
www.jetbrains.com
4
Groovy
• Dynamický, objektově orientovaný
skriptovací jazyk
– Syntaxe podobná Javě
• Včetně anotací a enumerací
• Snadné osvojení pro Java vývojáře
– Překládá se do Java bytecode
– Velmi snadná integrace s Javou
– Dynamické typování
www.jetbrains.com
5
Groovy
• Open sourced
• Od 2004 pod JSR 241: The Groovy
Programming Language
• V současnosti rozvíjen společností
G2one
• Podpora v IDE
• Pluginy pro všechna IDE
• JetGroovy plugin pro IntelliJ IDEA
• Runtime podpora
– Spring, Seam, …
www.jetbrains.com
6
Properties
www.jetbrains.com
7
Closures
www.jetbrains.com
8
Closures – implicitní parametr
www.jetbrains.com
9
Iterace
www.jetbrains.com
10
GDK
• java.util.Collection
– each(), find(), join(), min(), max() …
• java.lang.Object
– any(), every(), print(), invokeMethod(), …
• java.lang.Number
– plus(), minus(), power(), upto(), times(), …
• …
www.jetbrains.com
11
Operator overloading
www.jetbrains.com
12
Stringy a GStringy
www.jetbrains.com
13
Multi-line Stringy a GStringy
www.jetbrains.com
14
Operátory
• Spread
• def names = customers*.name
• [‘Java’, *[‘Groovy’, ‘Ruby’, ‘Scala’, ‘Jython’]]
• Safe dereference
• customer.shippingAddress?.street
• Membership
• if (code.language in [‘Java’, ‘Groovy’])
• Elvis
• return user.locale?:defaultLocale
www.jetbrains.com
15
Operátory
• Spaceship (compareTo)
• a <=> b
• Find and Match - =~, ==~
• methodName =~ ‘findAll(.*)Employees’
• Subscript
• map[‘key’] == map.key == map.get(‘key’)
• ‘VeryLongString’[4..-1]
• As
• new Thread({println ‘In parallel’} as Runnable)
www.jetbrains.com
16
Rozšíření syntaxe
• Rozšířené JDK třídy (GDK)
• Dynamické (duck) typování – volitelně!
• Rozšíření syntaxe
–
–
–
–
–
–
–
–
–
Properties
Closures
Named parameters (new Customer(name:’Joe’))
Kolekce a mapy
Přetěžování operátorů
GString (“Name: $name”)
GPath (employees.findAll{it.age>30}*.name)
Datový typ range (e.g. 9..29 or 0..-1)
Integrace regulárních výrazů
www.jetbrains.com
17
Testování
• Testy Java i Groovy kódu
• Spouštěné pomocí Ant či Maven
• Integrovaná podpora JUnit
• assert…(), shouldFail(), …
• Duck typing
• Mocking
– Integrovaná podpora stubů a mocků
www.jetbrains.com
18
Pasáže pro starší a pokročilé
• Buildery
– Konstrukce hierarchických datových
struktur
• Skriptování
– Přidávání a překlad kódu za běhu aplikace
• Silná podpora pro DSL
– Využívá schopnosti meta-programování
www.jetbrains.com
19
Buildery
• Konstrukce hierarchií
www.jetbrains.com
20
Buildery - GAnt
www.jetbrains.com
21
Buildery – Spring config
www.jetbrains.com
22
Buildery – domain classes
www.jetbrains.com
23
Skriptování
• Vyhodnocení Groovy kódu za běhu
– Vlastní kód či testy
– Implementace rozhraní
www.jetbrains.com
24
DSL
• Jednoúčelové jazyky
• Cílené na určitou problémovou doménu
• Poskytují přátelštější API
– Externí
• Vlastní gramatiky a parsery
• Vlastní syntaxe
– Interní
• Vnořené do hostovacího jazyka
• Syntaxe se řídí gramatikou hostovacího jazyka
www.jetbrains.com
25
DSL – práce s datumy
www.jetbrains.com
26
DSL – Hibernate criteria
www.jetbrains.com
27
DSL – manipulace s účty
www.jetbrains.com
28
Meta-programování
• Buildery
• Kategorie
• Změna postupu při vyvolání metod
•
•
•
•
•
•
Předefinovat invokeMethod()
Předefinovat methodMissing()
Předefinovat propertyMissing()
Přidat metodu nebo property k meta-třídě
Předefinovat invokeMethod() na meta-třídě
Přidat Expando meta-class na instanci
www.jetbrains.com
29
Dynamické vyvolání metod
MetaClass
GroovyObject
invokeMethod()
methods
getProperty()
properties
setProperty()
invokeMethod()
methodMissing()
propertyMissing()
www.jetbrains.com
30
Grails
• Framework pro tvorbu webovských
applikací
• MVC architektura
• Open sourced
• Cílem je co nejvíce zpříjemnit a
zefektivnit vývoj webovských aplikací
www.jetbrains.com
31
Technologie
www.jetbrains.com
32
Komunita
• G2One Inc. – G2One.com
– Guillaume Laforge (Groovy Project Lead)
– Graeme Rocher (Grails Project Lead)
• http://groovy.codehaus.org/
• http://grails.org/
• Novinky ze světa Groovy
– http://aboutgroovy.com
– http://groovyblogs.org
– http://groovy.dzone.com
www.jetbrains.com
33
Literatura
• Groovy in Action
• The Definitive Guide to Grails
www.jetbrains.com
34
Shrnutí
• Groovy
– Podařené rozšíření Javy
– Vylepšení syntaxe
– Buildery, Skriptování, DSL
– Kontakt: [email protected]
www.jetbrains.com
35
Otázky
www.jetbrains.com
36
Podobné dokumenty
Pokročilé techniky automa- tického testování v
• Podpora pro testování ve Spring Frameworku 2.5
• Techniky a patterny testování různých vrstev aplikace
- Data layer: database sandbox, automatic database model setup / update, database interface,...
Statická analýza kódu
Statická analýza kódu za kód bez chyb
Václav Pech
Senior Software Developer
JetBrains, Inc.
Michal Utíkal, M.E.
SQL, jQuery, Angular, TeamCity, Git, Svn, Xml, CSS
Zkušenosti se softwarovou architekturou, prací v týmu a vývojem asynchronních aplikací
Spolehlivost a odpovědnost, kritické myšlení, vysoké prac...
[email protected] (+420) 773 400084
Banking 2010 – 2013; total allocation 2 years 2 months customers: Profinit, Ceska Sporitelna
- Designer (technical design) of new features of internet banking, definition of new proceses of
analysi...
Nástroje pro vývoj aplikací a jejich vazba na CASE
V teoretickém základu je nutno nejprve definovat termín CASE, jedná se o zkratku slov computeraided software engineering. Obsah této zkratky vystihuje nejlépe definice: „CASE is the use of computer...
Sborník příspěvků
webu jako odvozování. Vznikl proto formát RDFa, který umožňuje do XML
dokumentů (a tedy i přímo do jazyka XHTML) zapisovat výroky RDF při použití
syntaxe, která se přibližuje mikroformátům. Ze strá...
Nástroje pro vývoj aplikací a jejich vazba na CASE
IntelliJ IDEA 8 (31)
IntelliJ IDEA společnosti JetBrains se honosí několika oceněními za nejlepší Java IDE. V
minulosti přinášelo do programování v Javě mnoho novinek, které byly z velké části pře...
Naruby / pracovní list
jakéhosi zašpiněného nádechu; převládající stříbřité pablesky nyní stěží zazářily, plazily se při okrajích toho
tvrdého a matného štítu ztlumeny v chladné tóny odřeného zinku. Ale ani potom nebylo ...
Soutěžní řád a amatérská pravidla
1.13.1 Soutěžící jsou povinni dostavit se k soutěži včas a řádně oblečeni. Musí znát pravidla a
soutěžní řád kulturistiky a musí být obeznámeni s propozicemi soutěže, na níž startují.
1.13.2 Soutěž...