Groovy

Groovy
Logo
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().

Uzávěry

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

Třída

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

Uzávěr

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 uzávěru 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 uzávěr uložen, pak můžeme předávat napříč programem, jako jakýkoliv jiný atribut. Uzávěr se na první pohled podobá klasickému bloku. Blok je však prováděn hned jak na něj překladač natrefí. Uzávěr je potřeba explicitně zavolat.

Předcházející uzávěr 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í uzávěru 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

Read other articles:

Iranian academic (1890–1946) Ahmad Kasraviاحمد کسرویBornAhmad Hokmabadi Tabrizi(1890-09-29)29 September 1890Tabriz, Sublime State of PersiaDied11 March 1946(1946-03-11) (aged 55)Tehran, Imperial State of IranNationalityIranianKnown forAncient Languages, history, Politics, religion.Notable workThe Constitutional History of Iran; The Forgotten Kings; Shi'ism; Zabân-e Pâk; Azari or the Ancient Language of Azerbaijan (all in Persian) From article series about:Ahmad Kasravi ...

 

Alex Morgan Alex Morgan, Mei 2019Informasi pribadiNama lengkap Alexandra Morgan CarrascoTanggal lahir 2 Juli 1989 (umur 34)[1]Tempat lahir San Dimas, California, Amerika Serikat[2]Tinggi 560 kaki (170 m)[1]Posisi bermain StrikerInformasi klubKlub saat ini Orlando PrideNomor 13Karier junior– AYSO Region 31Karier senior*Tahun Tim Tampil (Gol)2008–2009 West Coast FC 2 (2)2010 California Storm 3 (5)2010 Pali Blues 3 (1)2011 Western New York Flash 13 (4)2012 ...

 

Everton Everton saat menerima gelar pencetak gol terbanyak Copa América 2019Informasi pribadiNama lengkap Everton Sousa SoaresTanggal lahir 22 Maret 1996 (umur 27)Tempat lahir Maracanaú, Ceará, BrasilTinggi 174 cm (5 ft 9 in)Posisi bermain Sayap/PenyerangInformasi klubKlub saat ini BenficaNomor 7Karier junior2009–2012 Fortaleza2012 → Grêmio (pinjaman)2013 GrêmioKarier senior*Tahun Tim Tampil (Gol)2014–2020 Grêmio 208 (51)2020– Benfica 32 (7)Tim nasional‡20...

Rock formation in the Havasu National Wildlife Refuge, Arizona For other uses, see The Needles (disambiguation). The Needles, at Topock Gorge from the northwest looking down the Colorado River, April 2006. The Needles are a distinctive group of rock pinnacles, mountain peaks adjacent to the Topock Gorge, and the Colorado River on the northwestern extreme of the Mojave Mountains within the Havasu National Wildlife Refuge in Mohave County, Arizona, United States.[1] They range from 1207...

 

Mosque in Mersin, Turkey Laal Pasha MosqueReligionAffiliationIslamProvinceMersin ProvinceRegionMediterranean RegionRiteSunni IslamStatusActiveLocationLocationMersin, TurkeyArchitectureTypeMosqueCompleted1444 Mausoleum Interior Laal Pasha Mosque is a Medieval mosque in Mut in Mersin Province, Turkey. (Names such as Lal Pasha, Lael Pasha and Lala Agha are also used.) History Laal Pasha was a high-ranking bureaucrat in the Turkmen state of Karamanids in Anatolia. In his youth he was a servant of...

 

The Best of Both WorldsSingel oleh Miley Cyrusdari album Hannah MontanaSisi-BIf We Were a MovieDirilis28 Maret 2006 (2006-03-28)Direkam2005GenrePop rockpop remajaDurasi2:54LabelWalt DisneyPenciptaMatthew GerrardRobbie NevilProduserMatthew GerrardKronologi singel Miley Cyrus The Best of Both Worlds (2006) Who Said (2006) The Best of Both Worlds adalah lagu pop-rock yang dibawakan oleh penyanyi dan aktris asal Amerika Serikat Miley Cyrus untuk serial televisi Disney Channel, Hannah Montana...

Синелобый амазон Научная классификация Домен:ЭукариотыЦарство:ЖивотныеПодцарство:ЭуметазоиБез ранга:Двусторонне-симметричныеБез ранга:ВторичноротыеТип:ХордовыеПодтип:ПозвоночныеИнфратип:ЧелюстноротыеНадкласс:ЧетвероногиеКлада:АмниотыКлада:ЗавропсидыКласс:Пт...

 

Questa voce sull'argomento cestisti statunitensi è solo un abbozzo. Contribuisci a migliorarla secondo le convenzioni di Wikipedia. Segui i suggerimenti del progetto di riferimento. Hamidou Diallo Nazionalità  Stati Uniti Altezza 196 cm Peso 90 kg Pallacanestro Ruolo Guardia / ala piccola Squadra  Capital C. Go-Go Carriera Giovanili 2013-2015John Browne High School2015-2017Putnam Science Academy2017-2018 Kentucky Wildcats Squadre di club 2018-2021 Oklahoma Thunder1...

 

Montenegrin political alliance Democratic Front Демократски фронтDemokratski frontLeaderCollective leadershipFoundersMiodrag LekićAndrija MandićNebojša MedojevićFounded24 July 2012 (2012-07-24)Dissolved14 May 2023 (2023-05-14)Succeeded byFor the Future of Montenegro (partly)HeadquartersPodgoricaIdeologySerbian nationalism[1]Social conservatismRight-wing populism[2]Initially (2012–2015):Catch-all allianceLiberal conservat...

この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方)出典検索?: コルク – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL(2017年4月) コルクを打ち抜いて作った瓶の栓 コルク(木栓、...

 

Article connexe : Liste des contes d'Andersen. La Bergère et le Ramoneur. La Bergère et le Ramoneur (en danois : Hyrdinden og skorstensfejeren) est un conte de Hans Christian Andersen publié en 1845. Résumé Deux figurines de porcelaine (une bergère et un ramoneur) sont éprises l'une de l'autre ; mais un vieux Chinois, lui aussi de porcelaine, affirme être le grand-père de la bergère et veut marier celle-ci à un satyre surnommé le « sergent major général com...

 

الشيخ  محمد جميل الشطي معلومات شخصية الميلاد 28 ديسمبر 1882   دمشق  الوفاة 1 أغسطس 1958 (75 سنة)   دمشق  مكان الدفن مقبرة الدحداح  مواطنة الدولة العثمانية (1882–1920) المملكة العربية السورية (1920–1920) دولة دمشق (1920–1925) الدولة السورية (1925–1930) الجمهورية السورية الأولى (1930–19...

Four-masted steel barque Not to be confused with Hougoumont (ship). Hougomont docked in an unidentified port circa 1900 (State Library of South Australia PRG 1373-15-80) History NameHougomont OperatorGustaf Erikson[1] BuilderScott Shipbuilding and Engineering Company, Greenock, Scotland[2] Completed1897 FateScuttled 8 January 1933 in Stenhouse Bay Statushistoric shipwreck[2] General characteristics TypeBarque[2] Tonnage2378[2] Length292 ft 3 i...

 

Representative of the voters to a parliament Labour Party members of the House of Representatives of the Netherlands ahead of the Prinsjesdag celebrations on 20 September 2022 Legislature Chambers Unicameralism Bicameralism Tricameralism Multicameralism Upper house (Senate) Lower house Parliament Parliamentary system Parliamentary group Speaker Parliamentary leader Member of parliament Whip Clerk International parliament Parliamentary procedure Committee Quorum Motion (no-confidence) Types Pa...

 

The history of the France national football team dates back to 1904. The national team, also referred to as Les Bleus, represents the nation of France in international football. It is fielded by the French Football Federation and competes as a member of UEFA. France was one of the four European teams that participated at the inaugural World Cup in 1930 and was one of eight national teams to have won the competition, which they did in 1998 when they hosted the cup. They defeated Brazil 3–0 ...

First-level administrative division of Russia Oblast in Urals, RussiaChelyabinsk OblastOblastЧелябинская область FlagCoat of armsAnthem: Anthem of Chelyabinsk OblastCoordinates: 55°10′N 61°24′E / 55.16°N 61.40°E / 55.16; 61.40CountryRussiaFederal districtUrals[1]Economic regionUrals[2]Administrative centerChelyabinskGovernment • BodyLegislative Assembly[3] • Governor[5]Aleksey Teksler[...

 

Programming paradigm based on control flowStructured programming is a programming paradigm aimed at improving the clarity, quality, and development time of a computer program by making extensive use of the structured control flow constructs of selection (if/then/else) and repetition (while and for), block structures, and subroutines. It emerged in the late 1950s with the appearance of the ALGOL 58 and ALGOL 60 programming languages,[1] with the latter including support for block struc...

 

Irish public service broadcaster This article is about the Irish public service broadcaster. For other uses, see RTE (disambiguation). Raidió Teilifís ÉireannLogo used since 1995 with color blue & green, 2014 with low-greenFormerlyRadio Éireann (1960–1966)Radio Telefís Éireann (1966–2009)RTÉ (2009–present)Company typeStatutory corporationIndustryBroadcastingFounded1 January 1926; 98 years ago (1926-01-01) (as 2RN)1 June 1960; 64 years ago (...

PlaceNew York City's 14th City Council districtGovernment • Councilmember  Pierina Sanchez (D—Kingsbridge)Population (2010)[1] • Total158,876Demographics • Hispanic72% • Black21% • Asian3% • White3% • Other2%Registration • Democratic76.4% • Republican4.7% • No party preference16.4%Registered voters (2021) 94,515[2] New York City's 14th City Counc...

 

This article does not cite any sources. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: 3rd Corps Army of the Republic of Bosnia and Herzegovina – news · newspapers · books · scholar · JSTOR (December 2012) (Learn how and when to remove this message) 3rd Corps3rd Corps PatchActive1 December 1992 – 1995Country Republic of Bosnia and HerzegovinaAllegiance...