Úvod do Groovy pro Java experty



Podobné dokumenty
Dynamické programovací jazyky

Statická analýza kódu - za kód bez chyb

Groovy agilní Java. Pavel Kříž Filip Malý

Nástroje a frameworky pro automatizovaný vývoj. Jaroslav Žáček jaroslav.zacek@osu.cz

JAVA. Další jazyky kompilovatelné do Java byte-code

public static void main(string[] args) { System.out.println(new Main().getClass().getAnnotation(Greet.class).text());

1 - Úvod do platformy.net. IW5 - Programování v.net a C#

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Úvod do programování v jazyce Java

Ruby on Rails. Bc. Tomáš Juřík Bc. Bára Huňková

MBI - technologická realizace modelu

Databáze EMS podacích lístků

Novinky ve Visual Studio Tomáš Kroupa

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Skriptovací jazyky. Obsah

Java/QE Akademie - Osnova

Dotazování nad stromem abstraktní syntaxe

Web frameworks v praxi

Architektura aplikace

Anotace a Hibernate. Aleš Nosek Ondřej Vadinský Daniel Krátký

Využití JBoss Fuse ve skandinávské energetice

1. Programování proti rozhraní

VÝVOJ INTERNETOVÝCH APLIKACÍ - VIA

Návrh softwarových systém. Návrh softwarových systémů

O Apache Derby detailněji. Hynek Mlnařík

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Gradle.

Rozhraní pro práci s XML dokumenty. Roman Malo

Stručný obsah. Část I. Část II. Část III. Úvod do vývoje v prostředí Visual Studio 25. Návrh uživatelského rozhraní 127

Ukládání a vyhledávání XML dat

Tvorba informačních systémů

První kapitola úvod do problematiky

Lambda funkce Novinky v interfaces Streamy Optional - aneb zbavujeme se null. Java 8. Ondřej Hrstka

Jalapeño: pekelně ostrá Java persistence v Caché. Daniel Kutáč Senior Sales Engineer

Základy programovaní 3 (Java)

Testovací metoda. Testovací metoda. public class SimpleTest {

Vývoj informačních systémů. Přehled témat a úkolů

Python XML a Web 1 PGS

Software602 Form Designer

LINQ. (Language integrated query) Prezentace na 3IT353. Zpracovali: Martin Latiak, Michal Pěnka, Petr Spurný

George J. Klir. State University of New York (SUNY) Binghamton, New York 13902, USA

NSWI096 - INTERNET JavaScript

Aleš Rybák, Jiří Kadlec. Pluginy budoucnosti

Sem vložte zadání Vaší práce.

Vývoj informačních systémů. Přehled témat a úkolů

Kartografická webová aplikace. Přednáška z předmětu Počítačová kartografie (KMA/POK) Otakar Čerba Západočeská univerzita

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Technologie Java. Jaroslav Žáček

Ruby on Rails: zapomeňte na Javu

Úvod Seznámení s předmětem Co je.net Vlastnosti.NET Konec. Programování v C# Úvodní slovo 1 / 25

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

JAVA Unit testing Java, zimní semestr

Dědění, polymorfismus

Integrace OpenOffice.org a Javy. CZJUG, , Robert Vojta

Algoritmizace a programování

Databázové a informační systémy

FG Forrest, a.s. Jan Novotný. Automatické testování v praxi 2.

Platformy / technologie. Jaroslav Žáček

Technology Entry form Entry up-to-date? Internal links Faulty internal Possible internal links

Tvorba informačních systémů

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

PLATFORMY / TECHNOLOGIE JAROSLAV ŽÁČEK

Spring framework 2.0. Roman Pichlík CZJUG

GWT pro pokročilé. MoroSystems, s.r.o. Pavel Klobása. Senior Java Developer.

STARÁ DOBRÁ JAVA A PERSISTENCE S CACHÉ

SQL a XML jako alternativa ke klasickým unixovým nástrojům

11. Přehled prog. jazyků

Úvod do tvorby internetových aplikací

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Programovací jazyk Java

Nové přístupy tvorby web site. Doc. Ing. Zdeněk Havlíček, CSc. KIT PEF CZU - 13/11/2001

Bioadresář. Specifikace požadavků. Verze Datum Projektový tým Bc. Martin Ventruba Bc. Ondřej Veselý Bc. Stratos Zerdaloglu

Stream API. Petr Krajča. Základy programovaní 4 (Java) Katedra informatiky Univerzita Palackého v Olomouci

9. Ladění a testování programů. booleovský výraz

Metodiky pro automatické testování webové aplikace. Ondřej Melkes, Martin Komenda

Hiearchical MVC (Model-view-controller) vs. PAC (Presentation-abstraction-control)

Úvod do aplikací internetu a přehled možností při tvorbě webu

UJO Framework. revoluční architektura beans. verze

Struktura třídy, operátory, jednoduché algoritmy, junit. Programování II 2. cvičení Alena Buchalcevová

Platformy / technologie. Jaroslav Žáček

GUI. Systémová integrace pro desktopové aplikace

PHP framework Nette. Kapitola Úvod. 1.2 Architektura Nette

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

Pokročilé techniky tvorby sestav v Caché. ZENové Reporty

Proč Angular JS framework?

Klíčová slova: dynamické internetové stránky, HTML, CSS, PHP, SQL, MySQL,

Vývoj aplikací řízený testy. Miroslav Beneš

Java a XML. 10/26/09 1/7 Java a XML

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

KAPITOLA 3. Architektura aplikací na frameworku Rails. V této kapitole: modely, pohledy, řadiče.

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Podpora XML v.net. Podpora XML v.net. nezávislý publicista. Jirka Kosek.

Obsah. Úvod 11 Zpětná vazba od čtenářů 13 Errata 14 Poznámka ke kódům 14

InterSystems Caché Post-Relational Database

Programování v jazyku C# II. 9.kapitola

Obsah. Předmluva Začínáme: překlad, spuštění a ladění 27

Úvod do programování v jazyce Java

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/

2012 ET NETERA a.s. Wicket přehled technologie Martin Strejc

Transkript:

Úvod do Groovy pro Java experty Václav Pech Senior Software Developer JetBrains, Inc.

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ší 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 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, 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í 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, 6

Properties 7

Closures 8

Closures implicitní parametr 9

Iterace 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(), 11

Operator overloading 12

Stringy a GStringy 13

Multi-line Stringy a GStringy 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 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) 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ů 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ů 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í 19

Buildery Konstrukce hierarchií 20

Buildery - GAnt 21

Buildery Spring config 22

Buildery domain classes 23

Skriptování Vyhodnocení Groovy kódu za běhu Vlastní kód či testy Implementace rozhraní 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 25

DSL práce s datumy 26

DSL Hibernate criteria 27

DSL manipulace s účty 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 29

Dynamické vyvolání metod GroovyObject invokemethod() getproperty() setproperty() MetaClass methods properties invokemethod() methodmissing() propertymissing() 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í 31

Technologie 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 33

Literatura Groovy in Action The Definitive Guide to Grails 34

Shrnutí Groovy Podařené rozšíření Javy Vylepšení syntaxe Buildery, Skriptování, DSL Kontakt: vaclav@jetbrains.com 35

Otázky 36