Groovy

Groovy
Logo
Paradigmaobjektově orientovaný, imperativní, skriptovací, funkcionální
Vznik2003
AutorJames Strachan
VývojářGuillaume LaForge,
Jochen Theodorou,
Paul King,
Cedric Champeau
Poslední verze2.4.14 (24. února 2018)
Poslední nestabilní verze3.0.0 Alpha 1 (25. listopadu 2017)
Typová kontroladynamická, statická, silná, „duck-typing
Ovlivněn jazykyJava, Python, Ruby, Perl, Smalltalk, Objective-C
Ovlivnil jazykyKotlin
OSJakýkoliv podporující JVM nebo interpret JavaScriptu
LicenceApache License v2.0
Webgroovy-lang.org

Groovy (anglická výslovnost [ˈgruːvi]) je objektově orientovaný programovací jazyk pro platformu Java. Jde o alternativu k programovacímu jazyku Java. Lze na něj pohlížet jako na skriptovací jazyk pro javovskou platformu. Inspiraci čerpal z jazyků Python, Ruby, Perl a Smalltalk. Využívá výhody objektového programování, ale zároveň poskytuje zjednodušenou „skriptovací“ syntaxi, která umí „zabalit a rozbalit“ často opakované části kódu. Jedním z jeho cílů je redukovat „povinný“ kód a zjednodušit tak tvorbu webových, databázových či desktopových aplikací. Kompilace je prováděna přímo do bajtkódu, takže jej můžeme použít všude tam, kde funguje Java.

Nastavení prostředí

Pro vývoj v jazyce Groovy je potřeba stáhnout binární distribuci např. z domovské stránky. A mít nainstalováno vývojové prostředí Java. Pak už jen stačí nastavit některé proměnné prostředí:

  • přidat GROOVY_HOME proměnnou na adresář, ve kterém je uložena distribuce
  • do PATH proměnné přidat cestu do adresáře GROOVY_HOME/bin
  • a nastavit JAVA_HOME proměnnou na adresář, ve kterém je vaše JDK.

Následně je možné spustit groovy shell příkazem groovysh nebo GUI konzolu příkazem groovyConsole.

Některé vlastnosti jazyka Groovy

Jednoduchým příkladem může být vypsání věty „Vítej světe!“ na konzolu. V Javě je potřeba kromě samotného příkazu definovat třídu a hlavní metodu:

class VítejSvěte {
    public static void main(String[] args) {
        System.out.println ("Vítej světe!");
    }
}

Stejného výsledku je v jazyce Groovy možno dosáhnout například následujícím jednoduchým způsobem:

println "Vítej světe!"

Takže Groovy doplní všechen ostatní kód (definici třídy a hlavní metody, detaily syntaxe jako jsou závorky) potřebný pro překlad v Javě. Jednotlivé příkazy není zapotřebí zakončovat středníkem.

Dalším zjednodušením je oblast datových typů. Datový typ se implicitně nadefinuje dle vložené hodnoty. A co víc, v případě použití pole, seznamu atd. je možné libovolně vkládat různé datové typy jako je to v následujícím příkladě:

seznamČísel = [1776, -1, 33.3333, "pět", 928734928763]

Nebo můžeme vytvořit jednoduchou mapu následovně:

výška = ["Martin":190, "Helena":155, "Věra":"Neuvedla"]

Groovy častokrát umožňuje více variant správné syntaxe, jako v následujícím příkladě:

println "Martinova výška je: " + výška.Martin
println "Martinova výška je: " + výška["Martin"]
println "Martinova výška je: ${výška.Martin}"

V posledním řádku je proměnná volána zevnitř složených závorek díky znakům ${}, které upozorňují, že uvnitř se nachází Groovy výraz. Dále můžeme vložit jednoduchý cyklus na procházení výše uvedené mapy včetně podmínky pro vypsání obsahu:

výška.each {
    if (it.value == "Neuvedla") {
        println it.key + " neuvedl/a svou výšku."
    } else {
        if (it.value < 170) {
            println it.key + " měří méně než 170 cm."
        } else {
            println it.key + " měří nejméně 170 cm."
        }
    }
}

Klíčové slovo it představuje automatickou proměnnou, do které se ukládá aktuální hodnota nebo objekt. V tomto případě je to aktuální záznam v mapě. V příkladu je vidět i použití booleanovských operátorů, které jsou podobné jako v Javě a zahrnují následující možnosti:

==
!=
>
>=
<
<=

Na rozdíl od Javy však v Groovy operátor == znamená logickou rovnost pro všechny typy atributů. V Javě se např. pro porovnání obsahu dvou atributů obsahujících řetězec musí použít metoda equals().

Closures

Dalším zjednodušujícím prvkem Groovy je tzv. „closure“ [ˈkləužə(r)]. V následujícím příkladu je vidět, jak můžeme celou třídu nahradit jednoduchým closure:

Třída

public class DruháMocnina {
    public static int umocni(int číslo) {
        return číslo * číslo;
    }
}

Closure

def c = { číslo -> číslo * číslo }

V prvním případě musíme pro vypsání mocniny čísla zavolat statickou metodu třídy DruháMocnina. U closure je metoda uložena v atributu c a pro vypsání mocniny např. čísla 99 nám stačí následující příkaz:

println c(99)

Atribut, ve kterém je closure uložena pak můžeme předávat napříč programu, jako kterýkoliv jiný atribut. Closure se na první pohled podobá klasickému bloku. Blok je však prováděn hned jak na něj překladač natrefí. Closure je potřeba explicitně zavolat.

Předcházející closure můžeme definovat ještě jednodušeji s využitím klíčového slova it.

def c = { it * it }

Proměnná „it“ v sobě automaticky ukládá parametr, který je při volání closure zadán.

Práce se soubory

Relativně jednoduchá je i práce se soubory. Následujícím scriptem vypíšeme na konzolu obsah textového souboru test.txt, přičemž každý řádek bude začínat řetězcem Řádek souboru:

soubor = new File("C:\\test.txt")
tiskniŘádekSouboru = { println "Řádek souboru: " + it }
soubor.eachLine(tiskniŘádekSouboru)

V definici cesty k souboru je stejně jako v Javě použito dvou lomítek, jelikož se jedná o escape sekvenci.

GUI

V Groovy je možné využít všechny třídy z Javovské knihovny AWT či Swing. Avšak Groovy poskytuje i svůj vlastní „SwingBuilder“, který umí vytvářet plnohodnotný GUI deklarativním způsobem. Využívá přitom tzv. Builders, které se postarají o vytváření komplexních objektů, jako například vytváření instancí potomků či volání Swingových metod. Následující příklad vytvoří malé aplikační okno s tlačítkem, které po každém stisknutí vypíše součet všech stisknutí od začátku aplikace.

import groovy.swing.SwingBuilder
import java.awt.BorderLayout as BL

počet = 0
new SwingBuilder().edt {
    frame(title:'Okno', size:[300,300], show: true) {
        borderLayout()
        textlabel = label(text:"Click the button!", constraints: BL.NORTH)
        button(text:'Click Me',
                actionPerformed: { počet++; textlabel.text = "Kliknuto ${počet} krát."; println "kliknuto" },
                constraints:BL.SOUTH)
    }
}

Grails framework

Jedním z frameworků postavených na Groovy jazyce je Grails framework. Ten umožňuje rychlejší vytváření náročných webových aplikací. V současnosti je tento framework přímo podporován například i ve vývojovém prostředí NetBeans (od verze 6.8), které se o většinu základní konfigurace postará, a tak si můžete snadno vyzkoušet ukázkové příklady, které v sobě zahrnuje, nebo které jsou k dispozici na domovské stránce Grails. Samotný vývoj pomocí tohoto frameworku je postaven na principu „Convention over Configuration“. To znamená, že vývojář je co nejvíce odlehčen od zdlouhavého rozhodování a konfigurování, přičemž se však musí uspokojit s přednastavenou implementací.

Grails se vyznačuje tzv. architektonickým přístupem model-view-controller (MVC). Výsledkem je přehledně strukturovaná aplikace, která si, i v případě velké robustnosti, zachovává relativně snadnou obsluhu a modifikovatelnost.

Reference

Externí odkazy

Pahýl
Tento článek je příliš stručný nebo postrádá důležité informace.
Pomozte Wikipedii tím, že jej vhodně rozšíříte. Nevkládejte však bez oprávnění cizí texty.

Zdroj datcs.wikipedia.org
Originálcs.wikipedia.org/wiki/Groovy
Zobrazit sloupec 

Kalkulačka - Výpočet

Výpočet čisté mzdy

Důchodová kalkulačka

Přídavky na dítě

Příspěvek na bydlení

Rodičovský příspěvek

Životní minimum

Hypoteční kalkulačka

Povinné ručení

Banky a Bankomaty

Úrokové sazby, Hypotéky

Směnárny - Euro, Dolar

Práce - Volná místa

Úřad práce, Mzda, Platy

Dávky a příspěvky

Nemocenská, Porodné

Podpora v nezaměstnanosti

Důchody

Investice

Burza - ČEZ

Dluhopisy, Podílové fondy

Ekonomika - HDP, Mzdy

Kryptoměny - Bitcoin, Ethereum

Drahé kovy

Zlato, Investiční zlato, Stříbro

Ropa - PHM, Benzín, Nafta, Nafta v Evropě

Podnikání

Města a obce, PSČ

Katastr nemovitostí

Katastrální úřady

Ochranné známky

Občanský zákoník

Zákoník práce

Stavební zákon

Daně, formuláře

Další odkazy

Auto - Cena, Spolehlivost

Registr vozidel - Technický průkaz, eTechničák

Finanční katalog

Volby, Mapa webu

English version

Czech currency

Prague stock exchange


Ochrana dat, Cookies

 

Copyright © 2000 - 2024

Kurzy.cz, spol. s r.o., AliaWeb, spol. s r.o.