Ú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ěž...