Dynamické programovací jazyky



Podobné dokumenty
Úvod do Groovy pro Java experty

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

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

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

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

VÝVOJ INTERNETOVÝCH APLIKACÍ - VIA

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

Gradle.

Úvod do programování v jazyce Java

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

Současné trendy vývoje aplikací pro platformu ios

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

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

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

Novinky ve Visual Studio Tomáš Kroupa

Tvorba WWW stránek. přehled technologií používaných na webu principy jednotlivých technologií a možnosti jejich vzájemného kombinování

Ant aneb Ferda Mravenec, práce všeho druhu

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

Dotazování nad stromem abstraktní syntaxe

Základy programovaní 3 (Java)

Nástroje pro průběžnou integraci a testování

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

Jaký programovací jazyk učit jako první a jak ho učit?

NSWI096 - INTERNET JavaScript

Skriptovací jazyky. Obsah

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

Funkcionální programování

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

Python XML a Web 1 PGS

Technologie Java. Jaroslav Žáček

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/ Vzdělávání v informačních a komunikačních technologií

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

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

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

PRG036 Technologie XML

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

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

Databáze EMS podacích lístků

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

Java/QE Akademie - Osnova

Úvod do programování v jazyce Java

MBI - technologická realizace modelu

JAVA Unit testing Java, zimní semestr

Architektura aplikace

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

Abstraktní datové typy: zásobník

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

Tvorba informačních systémů

Pokročilé programování na platformě Java. Úvod

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

Generické typy. Podrobněji: The Java Language Specification ( Third Edition ) , 18

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

Maven. Aplikační programování v Javě (BI-APJ) - 2 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

Část 1 Moderní JavaScript

XSLT extensible Stylesheet Language Transformation

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ů

Multiplatformní GUI toolkity

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML

Ruby on Rails: zapomeňte na Javu

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

Databázové systémy II. KIV/DB2 LS 2007/2008. Zadání semestrální práce

Radek Krej í. NETCONF a YANG. ... pohledem v vojá e. Internet a Technologie 13.2

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

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

RMI Remote Method Invocation

Alena Malovaná, MAL305

Vývoj Internetových Aplikací

První kapitola úvod do problematiky

Základní pojmy spojené s webovým publikováním ~ malý slovníček pojmů~ C3231 Základy WWW publikování Radka Svobodová, Stanislav Geidl

Úvod. Únor Fakulta informačních technologií VUT. Radek Kočí Seminář Java Úvod 1/ 23

Olga Rudikova 2. ročník APIN

Současný svět Projekt č. CZ.2.17/3.1.00/32038, podpořený Evropským sociálním fondem v rámci Operačního programu Praha adaptabilita

Python profesionálně: dynamické parametry, generátory, lambda funkce... with. Dynamické parametry

MATURITNÍ PRÁCE dokumentace

Metatřídy v Pythonu a jejich využití

Maturitní otázka webové stránky (technologie tvorby webu) Co znamená pojem Web? Web, www stránky, celým názvem World Wide Web,

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

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

typová konverze typová inference

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

Škola: Gymnázium, Brno, Slovanské náměstí 7 III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Název projektu: Inovace výuky na GSN

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

Dotazování nad XML daty a jazyk XPath

OSGi. Aplikační programování v Javě (BI-APJ) - 6 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

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

KIV/PIA 2013 Jan Tichava

Osnova. GIOP a IIOP IDL IOR POA. IDL Klient Server. 2 Historie. 3 Princip a základní pojmy. 4 Implementace. 5 Aplikace CORBA

Programování v Pythonu

Optimalizace vývojového procesu webových aplikací

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

UNIVERZITA PARDUBICE DOPRAVNÍ FAKULTA JANA PERNERA

Obchodní podmínky technické podpory programu ESRI Developer Network (EDN)

Stručný úvod pro programátory. Michal Kuchta

XML schémata XML teorie a praxe značkovacích jazyků (IZI238)

Dědění, polymorfismus

11. Přehled prog. jazyků

X36DSV 3. cvičení. XML (extensible Markup Language) JavaScript. AJAX (Asynchronous JavaScript and XML) X36DSV. 2007/10 ver.2.0 1

Webové programování je CHALENGE! Milan Čapoun, Samuel Šramko

1. Programování proti rozhraní

Transkript:

Dynamické programovací jazyky Václav Pech Senior Software Developer JetBrains, Inc.

Něco o mně Václav Pech Programátor Nadšenec do Groovy JetBrains Dodavatel nástrojů pro vývojáře IntelliJ IDEA, TeamCity, ReSharper a další 2

Něco o prezentaci Část 1: Dynamické jazyky Charakteristika, vlastnosti Část 2: Groovy Nové obzory pro Java vývojáře Část 3: Meta-programování v Groovy Skriptování, Buildery, DSLs Otázky a odpovědi 3

Dynamické jazyky Smalltalk Ruby Python Groovy JavaScript Erlang Eiffel... 4

Staticky a dynamicky typované jazyky Dynamické x Statické Dynamicky typované x Staticky typované 5

Rysy dynamických jazyků Modifikace objektů za běhu Funkce eval vykonání nového kódu Funkcionální programování Higher-order funkce Currying Closures Reflection Continuations přerušení výpočtu Macros 6

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, 7

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í 8

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, 9

Properties 10

Closures 11

Closures implicitní parametr 12

Iterace 13

GDK java.util.collection each(), find(), join(), min(), max() java.lang.object any(), every(), print(), invokemethod(), java.lang.number plus(), minus(), power(), upto(), times(), 14

Operator overloading 15

Stringy a GStringy 16

Multi-line Stringy a GStringy 17

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 18

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) 19

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ů 20

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ů 21

Hlavní zaměření Skriptování Přidávání a překlad kódu za běhu aplikace Buildery Konstrukce hierarchických datových struktur Silná podpora pro DSL Využívá schopnosti meta-programování 22

Skriptování Vyhodnocení Groovy kódu za běhu 23

Meta-programování Změna postupu při vyvolání metod invokemethod() methodmissing() propertymissing() Přidat metodu nebo property k meta-třídě Předefinovat invokemethod() na meta-třídě 24

Dynamické vyvolání metod GroovyObject invokemethod() getproperty() setproperty() MetaClass methods properties invokemethod() methodmissing() propertymissing() 25

Dynamické vyvolání metod v Groovy Meta-class Každá třída, včetně Java tříd Metoda se nejdřív hledá v meta-class invokemethod() Není zřejmé, jaké metody se na objektu budou volat buildery, parsery Lze také provádět aspekty kolem existujících metod Pomalé, protože interceptuje vždy Missing method interceptuje jen neexistující metody ze smalltalku Caching of missing methods vytvořit metodu v metodě methodmissing() Mix-ins statické, dynamické Kategorie 26

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 27

Literatura Groovy in Action The Definitive Guide to Grails 28

Shrnutí Dynamické jazyky Groovy Koncepty Testy Skriptování Meta-programování Kontakt: vaclav@jetbrains.com 29

Otázky 30