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



Podobné dokumenty
Úvod do Groovy pro Java experty

Dynamické programovací jazyky

Databázové aplikace pro internetové prostředí PHP úvod, základní princip, vkládání skriptu, komentáře, výpis na obrazovku

Vstupní požadavky, doporučení a metodické pokyny

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

Google Web Toolkit. Martin Šurkovský, SUR března Katedra informatiky

Úvod do programovacích jazyků (Java)

PHP PHP je skriptovací programovací jazyk dynamických internetových stránek PHP je nezávislý na platformě

JavaScript 101. "Trocha života do statických stránek"

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

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

Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13

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

1 Webový server, instalace PHP a MySQL 13

Skriptovací jazyky. Obsah

NSWI096 - INTERNET JavaScript

MBI - technologická realizace modelu

První kapitola úvod do problematiky

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

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

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

Předmluva k aktuálnímu vydání Úvod k prvnímu vydání z roku Typografické a syntaktické konvence... 20

8 Třídy, objekty, metody, předávání argumentů metod

Software602 Form Designer

1. Webový server, instalace PHP a MySQL 13

Inovace bakalářského studijního oboru Aplikovaná chemie

Vývojové nástroje jazyka Java

rychlý vývoj webových aplikací nezávislých na platformě Jiří Kosek

UJO Framework. revoluční architektura beans. verze

Programování v Javě I. Leden 2008

Základy objektové orientace I. Únor 2010

1. Úvod do Ajaxu 11. Jak Ajax funguje? 13

Programátorská příručka

Programování v Javě I. Únor 2009

AUTOMATICKÉ ŘÍZENÍ S INTERNETOVOU KOMUNIKACÍ V PHP Automatic Control with Internet Communication in PHP

Z. Kotala, P. Toman: Java ( Obsah )

Jazyk C# (seminář 6)

IRAE 07/08 Přednáška č. 1

INOVACE PŘEDMĚTŮ ICT. MODUL 11: PROGRAMOVÁNÍ WEBOVÝCH APLIKLACÍ Metodika

Obsah. Začínáme programovat v Ruby on Rails 9. Úvod Vítejte v Ruby 15. O autorovi 9 Poděkování 9

Úvodem 9. Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10. Než začneme 11

MATURITNÍ ZKOUŠKY Obor: OBCHODNÍ AKADEMIE

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

Seminář Java II p.1/43

DSL manuál. Ing. Jan Hranáč. 27. října V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v

Sada 1 - PHP. 03. Proměnné, konstanty

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

1. Programování proti rozhraní

typová konverze typová inference

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

4a. Makra Visual Basic pro Microsoft Excel Cyklické odkazy a iterace Makra funkce a metody

Předměty. Algoritmizace a programování Seminář z programování. Verze pro akademický rok 2012/2013. Verze pro akademický rok 2012/2013

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

5a. Makra Visual Basic pro Microsoft Escel. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina

PREPROCESOR POKRAČOVÁNÍ

Algoritmizace a programování

SPJA, cvičení 1. ipython, python, skripty. základy syntaxe: základní datové typy, řetězce. podmínky: if-elif-else, vyhodnocení logických výrazů

Ukázka knihy z internetového knihkupectví

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

5 Přehled operátorů, příkazy, přetypování

Vytváření a použití knihoven tříd

Obsah. Rozdíly mezi systémy Joomla 1.0 a Systém Joomla coby jednička online komunity...16 Shrnutí...16

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

Část IV - Bezpečnost 21. Kapitola 19 Bezpečnostní model ASP.NET 23

Programovací jazyk Java

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Algoritmizace a programování

PHP tutoriál (základy PHP snadno a rychle)

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

Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo

Server-side technologie pro webové aplikace

Technologie Java. Jaroslav Žáček

MAXScript výukový kurz

PHP - úvod. Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky.

Výčtový typ strana 67

VÝVOJ INTERNETOVÝCH APLIKACÍ - VIA

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

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

Richtext editory. Filip Dvořák

Pointery II. Jan Hnilica Počítačové modelování 17

Programování v jazyce JavaScript

10 Balíčky, grafické znázornění tříd, základy zapozdření

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace

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

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

Úvod do programování v jazyce Java

4. ZÁKLADNÍ POJMY Z OBJEKTOVĚ ORIENTOVANÉHO PROGRAMOVÁNÍ

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Obsah. Úvodem 15. Zaměření knihy 15 Co v knize najdete 15 Doprovodné CD 17 Poděkování 18

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

Programování v jazyce C a C++

Obsah. Předmluva 13. O autorovi 15. Poděkování 16. O odborných korektorech 17. Úvod 19

Microsoft Word základní

Programovací jazyky Přehled a vývoj

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

PHP framework Nette. Kapitola Úvod. 1.2 Architektura Nette

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

Transkript:

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

Úvod Dynamický skriptovací jazyk pod JVM Navržen pro platformu Java, zcela interoperabilní (na úrovni bajtkódu) s běžnými programy v Javě, silně objektově orientovaný Do značné míry rozšířením jazyka Java Berme ho jako doplněk této platformy Syntaxe vychází z Javy, přidává nové možnosti 2

Úvod Java silně statický jazyk (C++ nebo C#) Konvenční jazyky z hlediska syntaxe přesné Lze definovat přesně všechny typy = lepší předvídatelnost kódu Na druhé straně může být právě tato konvenčnost tím, co vývojáře zpomaluje 3

Groovy Primárně navržen pro platformu Java Syntaxe vývojářům v Javě poměrně blízká Nové vlastnosti lze začít využívat i s nulovými zkušenostmi s tímto jazykem (při znalosti Javy) 4

Groovy Snadné psaní skriptů Dynamicky rozšiřuje třídy z JDK o nové metody Rozšiřuje syntaxi properties, closures, jmenné parametry, jednodušší práce se seznamy a mapami, traverzování stromem objektů, regulární výrazy, zpracování XML 5

Groovy Meta-programování (dynamické vyvolávání metod, definice metod nebo celých třídu za běhu) Koncept builderů pro XML, HTML, Swing, Tvorba DSL Vkládání Groovy výrazů do řetězců 6

GDK, dokumentace Groovy JDK API Specification http://groovy.codehaus.org/groovy-jdk/ This document describes the methods added to the JDK to make it more groovy. 7

Java a Groovy Java for (String it : new String[] {"Rod", "Carlos", "Chris"}) if (it.length() <= 4) System.out.println(it); Groovy ["Rod", "Tom", "Chris"].findAll{it.size() <= 4 }.each{println it} 8

Grails Prostředí pro rychlý vývoj Java EE aplikací Silně inspirované Ruby on Rails Nosným jazykem Groovy Koncepčně je aplikace v Grails založena na MVC 9

Motivace pro dynamické jazyky Dynamické metody (findbyid, findbyname v GORM atp.) Dynamicky přidané metody ke stávajícím třídám příklad z JavaScriptu s insertafter u DOMu Spouštění dynamicky vytvořeného kódu ( uživatelská makra ) 10

Podpora v IDE Obecně nelze čekat zázraky Pluginy do majoritních IDE jsou různých kvalit Eclipse http://docs.codehaus.org/display/groovy/install+groovy- Eclipse+Plugin http://docs.codehaus.org/display/groovy/create+your+first+gr oovy+project 11

Groovy script Koncovka *.groovy Příklad Hello world V Javě nutno vytvořit třídu V Groovy rovnou println "Hello world" Spuštění skriptu: groovy script.groovy Kompilace do.class: groovyc script.groovy Example1a, Example1b 12

Syntaxe Chybí středník Lze vynechat return metody vrací vyhodnocenou hodnotu na posledního řádku, není třeba deklarovat návratový typ Nepovinné datové typy (v zásadě instance objektů) Example2a, Example2b 13

Syntaxe Dynamické i statické typování Defaultní importy základních balíků java.lang, java.util, java.io, java.net Bezpečné dereferencování pomocí?. Ošetření null Pokud by mělo dojít k java.lang.nullpointerexception, vrací Example3a 14

Syntaxe Vše je objekt Např. i číslo (použity objektové wrappery) Při komunikaci s Javou zafunguje auto(un)boxing Lze přetěžovat operátory Tím lze přidat další syntaktický cukr 1+1 v groovy vede na volání 1.plus(1) Využitelné např. pro operace přidávání do pole, aritmetika s vektory atp. 15 Example4

Nekompatibility s Javou Omezení u vnitřních tříd Jiný význam operátoru == Je přetížen na.equals() Původní porovnání odkazů lze provést pomocí.is() Nová klíčová slova 16

JavaBean v Groovy GroovyBean Snaha redukovat množství kódu Žádné gettery, settery Vytvořeny automaticky Klasifikace proměnných pomocí nastavení viditelnosti, příp. deklarování jako final private = žádný getter, setter final pouze getter Example3a, Example3b 17

GStrings Vložení proměnné do řetězce Řetězec v úvozovkách hodnota=$promenna U řetězce v apostrofech se proměnné nevkládají Analogie s Perlem, PHP,, JSP EL Složitější výrazy se složenými závorkami Example5 18

Kolekce Zkrácená inicializace kolekcí List Map Zkrácený přístup k prvkům pole[1] mapa[ klic ] mapa.klic Example6 19

Closures - uzávěry Closure = blok kódu zapouzdřený do objektu (typu Closure) Může obdržet parametry a vracet hodnotu Blízká analogie k anonymním vnitřním třídám z Javy Jeho instance vznikne blokem složených závorek Example7 20

Closures uzávěry V uzávěru lze pracovat s lokálními proměnnými z místa jeho definice Lze ovlivit na čem (delegate) se mají volat metody volané uvnitř uzávěru Využito např. v tzv. Builderech (viz dále) Jejich význam oceníme při dobře navrženém API pro práci s nimi Groovy rozšiřuje mnohé třídy z JDK právě o uzitečné metody, které pracují s uzávěry new File("soubor.txt").eachLine { println it } 21

Zpracování XML Standardní prostředky SAX parser DOM parser Groovy prostředky DOMCategory XmlParser XmlSlurper umí procházet strom XML tím, že dynamicky předstírají existenci patřičných properties, př.: zamestnanci.zamestnanec[3].jmeno.text 22

Použití Groovy na UHK Projekt interaktivní učebnice fyziky pro střední školy (Pedagogická fakulta) Preference opensource a multiplatformního SW formát Scalable Vector Graphics (SVG) XML tvorba: editor InkScape běh: XUL aplikace (Mozilla Gecko) Dávkové zpracování převedení textu na křivky hromadné úpravy ve stránkách hromadné generování stránek (multimédia) 23

Komplexní příklad: Graf v SVG Přečtení CSV souboru data Přečtení SVG (XML) šablona Přidání elementů do SVG (sloupce) Zápis SVG Groovy JDK, XmlSlurper 24

Komplexní příklad: Graf v SVG 2 Úprava předchozího příkladu Místo CSV budeme číst XLS pomocí Apache POI + ExcelBuilder (elegantní čtení XLS) 25

Zkušenosti Vývoj v Groovy v mnoha ohledech jiný oproti Javě Kratší kód snazší orientace, snippets, může i zhoršit čitelnost Nelze zajistit kvalitní doplňování kódu v editoru (nutnost časté konzultace s dokumentací, resp. s různými návody) Většina chyb se projeví až při běhu (testování se stává téměř nutností) Během ladění je třeba rozumět vnitřním principům (pro začátečníka mnohdy nesrozumitelné vyjímky) 26

Závěr Příjemně čitelná syntaxe, velká flexibilita Díky vazbě Groovy na platformu Java má velké možnosti využití jejích výhod, již existujícího kódu Výhodou přístupnost javovským vývojářům Vychází syntakticky z Javy a lze začít používat nové užitečné vlastnosti postupně Nebývá příliš zdůrazněno, potenciální zájemce může po zhlédnutí ukázkových kódů v Groovy nabýt mylného dojmu, že je to zcela nový jazyk, jehož syntaxi se bude muset dlouho učit 27

Zdroje Root.cz http://www.root.cz/clanky/groovy-vprikladech-uvod-do-jazyka/ Java.cz http://www.java.cz/detail.do?articleid=8020 Feeling Groovy http://www.ibm.com/developerworks/java/library/jalj08034.html http://groovy.codehaus.org/processing+xml Dierk König: Groovy in Action 28

Děkujeme za pozornost Pavel Kříž, Filip Malý 29