abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 03:11 | Nová verze

    Poštovní klient Thunderbird byl vydán v nové verzi 145.0. Podporuje DNS přes HTTPS nebo Microsoft Exchange skrze Exchange Web Services. Ukončena byla podpora 32bitového Thunderbirdu pro Linux.

    Ladislav Hagara | Komentářů: 0
    dnes 02:33 | IT novinky

    U příležitosti státního svátku 17. listopadu probíhá na Steamu i GOG.com již šestý ročník Czech & Slovak Games Week aneb týdenní oslava a také slevová akce českých a slovenských počítačových her.

    Ladislav Hagara | Komentářů: 0
    včera 19:33 | Nová verze

    Byla vydána nová verze 9.19 z Debianu vycházející linuxové distribuce DietPi pro (nejenom) jednodeskové počítače. Přehled novinek v poznámkách k vydání. Vypíchnout lze například nový balíček BirdNET-Go, tj. AI řešení pro nepřetržité monitorování a identifikaci ptáků.

    Ladislav Hagara | Komentářů: 0
    včera 02:22 | Nová verze

    Byla vydána nová verze 3.38 frameworku Flutter (Wikipedie) pro vývoj mobilních, webových i desktopových aplikací a nová verze 3.10 souvisejícího programovacího jazyka Dart (Wikipedie).

    Ladislav Hagara | Komentářů: 0
    včera 01:33 | Nová verze

    Organizace Apache Software Foundation (ASF) vydala verzi 28 integrovaného vývojového prostředí a vývojové platformy napsané v Javě NetBeans (Wikipedie). Přehled novinek na GitHubu. Instalovat lze také ze Snapcraftu a Flathubu.

    Ladislav Hagara | Komentářů: 0
    15.11. 16:11 | Nová verze

    Byl vydán Debian 13.2, tj. druhá opravná verze Debianu 13 s kódovým názvem Trixie. Řešeny jsou především bezpečnostní problémy, ale také několik vážných chyb. Instalační média Debianu 13 lze samozřejmě nadále k instalaci používat. Po instalaci stačí systém aktualizovat.

    Ladislav Hagara | Komentářů: 0
    15.11. 12:11 | IT novinky

    Google představil platformu Code Wiki pro rychlejší porozumění existujícímu kódu. Code Wiki pomocí AI Gemini udržuje průběžně aktualizovanou strukturovanou wiki pro softwarové repozitáře. Zatím jenom pro veřejné. V plánu je rozšíření Gemini CLI také pro soukromé a interní repozitáře.

    Ladislav Hagara | Komentářů: 5
    14.11. 14:22 | Bezpečnostní upozornění

    V přihlašovací obrazovce LightDM KDE (lightdm-kde-greeter) byla nalezena a již opravena eskalace práv (CVE-2025-62876). Detaily v příspěvku na blogu SUSE Security.

    Ladislav Hagara | Komentářů: 5
    14.11. 13:22 | Nová verze

    Byla vydána nová verze 7.2 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Tor Browser byl povýšen na verzi 15.0.1. Další novinky v příslušném seznamu.

    Ladislav Hagara | Komentářů: 0
    14.11. 10:33 | IT novinky

    Česká národní banka (ČNB) nakoupila digitální aktiva založená na blockchainu za milion dolarů (20,9 milionu korun). Na vytvořeném testovacím portfoliu, jehož součástí jsou bitcoin, stablecoiny navázané na dolar a tokenizované depozitum, chce získat praktickou zkušenost s držením digitálních aktiv. Portfolio nebude součástí devizových rezerv, uvedla dnes ČNB v tiskové zprávě.

    Ladislav Hagara | Komentářů: 50
    Jaké řešení používáte k vývoji / práci?
     (35%)
     (46%)
     (18%)
     (18%)
     (23%)
     (15%)
     (23%)
     (16%)
     (16%)
    Celkem 358 hlasů
     Komentářů: 16, poslední 12.11. 18:21
    Rozcestník

    Groovy I.

    4.4.2010 01:45 | Přečteno: 2379× | Výběrový blog | poslední úprava: 4.4.2010 21:18

    Lehký úvod do Groovy, díl první - úvod do úvodu.

    Intro: Doba je zlá. I práce v JZD u krav už není moc jistá. I řekl jsem si jednoho dne, že je třeba se naučiti se i něčemu jinému než jen kydat hnůj. V jedné zdejší diskuzi jsem se onehdá dočetl, že dneska programuje každý dement. Vytušil jsem příležitost a mé nejasné pocity, že bych se měl pokusit více využít svůj nevalný intelekt, začaly dostávat znatelnější kontury: rozhodl jsem se, že se stanu programátorem. Elitářské kecy o tom, že programátorem se člověk nestává, nýbrž se jím rodí, jsem hodil za hlavu a pln odhodlání zasedl ke kompjútru. Rozechvěn nad nově nabytými poznatky jsem se rozhodl, že se o ně s vámí zde budu dělit, alepoň co mé síly a čas dovolí. Nebojte, nebudu vás unavovat, jak již jistě mnozí z vás vytušili z toho, že jsem zasedl ke kompjúru, nudnými definicemi, bezduchými lemmaty a větami a vyumělkovanými důkazy z diskrétní matematiky, nelineárního programování a podobných, od reality a praxe odtržených, věd. Programováním pochopitelně myslím to, co se tím v dnešní době běžně míní: zapisování kódu. Ač jsem si pod zapisováním kódu představoval činnost kterou zvládne opravdu každý (gramotný) dement, brzy narazila kosa na kámen a zjistil jsem, že to není až tak jednoduché jak to vypadá a jak mnozí tvrdí. Nevycouval jsem z boje, ale pro začátek si zvolil dosažitelnější cíl: zkusím se stát pro začátek alepoň programátorem prasičem. Zde musím přiznat, že mě na tuto myšlenku částečně přivedl Ladicek a jeho blog na téma Tajemství kvalitního prasení. No, vylévání srdíčka již ale bylo dost. Jelikož se domnívám, že aby byl člověk kvalitní progamátor-prase, musí prasit nejen na straně databáze, ale i kódu v samotném, začal jsem studovat Groovy... (Pozn. 1: Ano, vím, že prasit jde v kažném jazyce, ale v Groovy to IMHO jde o něco snadněji. Pozn. 2: Ano, PHP jsem zkoušel, ale to je zatím asi nad moje chápání).

    Groovy je objektově orinetovaný skriptovací jazyk pro platformu Java. Hlavním cílem Groovy je zjednodušit vývoj a zvýšit efektivitu, aniž by programátora připravil o výhody které nabízí Java. Na rozdíl od např. Jythonu nebo JRuby Groovy není implementace daného skriptovacího jazyka v Javě, ale je míněn jako rozšíření Javy (ve skutečnosti není úplně pravda, že Groovy je rozšířením Javy, viz níže). Nicméně těmito skriptovacími jazyky se do značné míry inspiroval. Jak praví [2]: "Groovy is how Java should looks like at the end of the day" :-) Byl iniciován i proces (JCP) začlenění Groovy do Java platformy, příslušné JSR (JSR-241) je však neaktivní. Což ale neznamená, že se zastavil i vývoj samotného Groovy. Nejnovější stable release (1.7.1) vyšel vcelku nedávno - 19.2.2010.

    Groovy je jazyk silně typovaný, podporující duck-typing, tj. typování je dynamické. Jazyk obsahuje closures, umožňuje přetěžování operátorů, vkládát do řetězců výrazy, které se vyhodnotí, automaticky generuje gettery a settery a další zajímavé věci. Kód lze skompilovat do javovského bytekódu, takže kód napsaný v Groovy lze jednoduše integrovat do kódu napsaného v Javě (a pochopitelně to platí i naopak). Vyvíjen je pod Apache licencí.

    Máme několik možností, jak spustit kód napsaný v Groovy: první je skript uložený v souboru, opatřený #!/usr/bin/evn groovy. Po spuštění se kód skompiluje (on-the-fly) a spustí. Toto je asi nejběžnější použití pro menší jednoúčelové skripty. Pomocí groovyc můžeme kód skopilovat do javovského bytekódu. Toto typicky využijeme pro rozsáhlejší projekty nebo části, které budeme chtít integrovat do nějaké větší aplikace napsané v Javě. Skompilovaný nebo i neskompilovany kód lze spustit z příkazové řádky pomocí groovy. Další možností je Groovy konzole, a to buď jako jednoduché GUI, kde lze psát a spouštět Groovy kód (groovyConsole) nebo klasická konsole (groovysh). Zde je ale třeba si dát pozor na několik odlišností jak je Groovy kód vykonáván ve srovnání s kompilovaným kódem (v dalším budu předpokládat, že je kód kompilován a na případné odlišnosti od Groovy konzole nebudu upožorňovat). Pro otestování krátkého kousku kódu můžete případně v teminálu použít groovy -e "váš kus kódu". Patně poslední možností jak spustit Groovy kód je sputit jej jako servlet.

    V tomto úvodu se zaměřím na základní odlišnosti od Javy (zajímavější věci jako např. metaprogramování snad někdy příště). Groovy má stejnou syntaxi jako Java, až na několik vyjímek - např. nepodporuje vnitřní třídy (proto nelze říct, že Groovy je rozšířením Javy) - toto není od verze 1.7 pravda, díky za upozornění Ladickovi. Toto je IMHO asi největší odlišnost od Javy. Jinak javovský kód pravděpodobně skompilujete bez problémů i v Groovy. Jak již bylo předesláno, Groovy je sice silně typovaný jazyk, ale typování je dynamické (duck typing), takže typ proměnné se určuje až za běhu. Proměnnou je tedy možné definovat stejně jako v Javě, např. String text, ale i pomocí klíčového slova def, např. def text, kdy nespecifikujeme typ proměnné. Typ takto definované proměnné se může za běhu měnit. Když např. spustíme

    def text = 'text'
    println text.class
    text = 1
    println text.class
    
    dostaneme
    class java.lang.String
    class java.lang.Integer
    

    Jedna z věcí, jak se Groovy snaží urychli vývoj aplikací je automatické generování gettrů a settrů, které lze volat ve zkráceném tvaru class.xyz, místo class.getXyz(), např.:

    class Person{
        String name
    }
    
    p = new Person()
    p.name = "Petr"
    println p.name
    println p.getName()
    
    Jak vidno, class.getXyz() ale funguje také. Toto ale platí jen v prípadě že neuvedete modifikátor atributu. Pokud uvedeme private String name, gettry a settry se nebudou generovat (to samé v případě dalsích modifikátorů jako public). V souvisloti s automatickým generováním gettrů a settrů je vhodné zmínit další vlastnost Groovy (jen tak ve stručnosti, podrobněji příště) - Groovy ignoruje private modifikátory a dává vám přístup k atributům třídy jako by byly public. A to pochopitelne nejen u kódu napsaného v Groovy, ale i u toho napsaného v Javě (což nás ale nemusí tak moc pohoršovat, protože private jde obejít i Javě samotné).

    Pro usnadnění psaní Groovy dále nabízí možnost vynechat hromadu věcí, např.:

    Dále můžeme využít věcí jako vyhodnocování výrazů přímo v řetězcích: int i = 10; println "i je ${i}", nahrazení konstrukce if(p != null){p.name} konstrukcí p?.name, snadnější vytváření listů a map: def list = ["a","b","c"]; def map = [a:1,b:2,c:3], iterování jejich položkami: list.each{println it} a mnohé další.

    Toto byl ryhchlý úvod do Groovy. Příště se (asi) pokusím shrnou některé praktické věci typu jak nastavit class path, kombinovat kód napsaný v Jave a Groovy, provést build pomocí mavenu a pod.

    Literatura:
    [1] D. Konig et al., Groovy in action, Manning Publications (2007)
    [2] S. Dawis, Groovy Recipes, The Pragmatic Programmers (2008)

           

    Hodnocení: 80 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    4.4.2010 03:58 retroslava | skóre: 9 | blog: TryCatch | Žižkoff
    Rozbalit Rozbalit vše Re: Groovy I.
    V textu na začátku máš asi překlep - GIU.

    Jinak koukám že je to dost podobný Ruby, hlavně ten seznam na konci.
    Pozor! Jsem naprostý idiot. Co jsem napsal včera dnes už dávno neplatí. Zavazuji se, že budu diskutovat nezávazně.
    4.4.2010 08:38 dementni.lojzik | skóre: 19 | blog: ze zivota na vsi
    Rozbalit Rozbalit vše Re: Groovy I.
    opraveno, diky (i kdyz tech preklepu tam bude jeste asi jak maku)
    4.4.2010 11:16 Václav HFechs Švirga | skóre: 26 | blog: HF | Kopřivnice
    Rozbalit Rozbalit vše Re: Groovy I.
    Jojo, též jsem si všiml :). Ale zas ruby prý běží pod javou též (jruby), takže bych spíš sáhl po něm, kdybych něco na jave zkoušel (jakože jsem se k ní bohužel jestě nedostal :()
    Baník pyčo!
    otasomil avatar 4.4.2010 08:25 otasomil | skóre: 39 | blog: puppylinux
    Rozbalit Rozbalit vše Re: Groovy I.

    S humorem bych napsal:

    Jste si jist, zda si pomuzete prechodem od krav k programovani ?

    Vzdyd naprosta vetsina programatorskych pocinu vznikla z dobre vule a konicku bez naroku na kus chleba (pardon, na hrnek mlika).

    Windows nejsou nejrozsirenejsi platformou proto, ze Microsoft je bajecny, dokonaly, nejlepsi ..... myslete si co chcete, ale proto, ze tisice nadsencu zaclo vytvaret aplikace pro ne a ty se jako free ci svobodne programy rozsirily do celeho sveta prostrednictvim internetu.

    Bez nadsencu (casto chudi lide) by windows byl pouhy bastl takrikajic k nicemu.

    Bez nadsencu bychom dnes v roce 2010 byly tak na urovni win 3.11.

    To stejne se tyka i OSS komunity - ta by bez nadsencu vubec nevznikla.

     

    Nevim jakym programatorskym pocinem si chcete pomoci od onech krav.

    K čemu hudba, která nevede k extázi... Stop MDMA !!! I spam umí být roztomilý
    4.4.2010 08:46 dementni.lojzik | skóre: 19 | blog: ze zivota na vsi
    Rozbalit Rozbalit vše Re: Groovy I.
    Jste si jist, zda si pomuzete prechodem od krav k programovani ?
    jisty si pochopitelne nejsu. Od nas z vesnice to jeste nikdo nezkusil, tak moc nevim, do ceho jdu... uvidime:-) Nicmene, delal jsi nekdy u krav a za minimalni mzdu? Me prijde, ze si moc pohorsit uz nejde.
    Vzdyd naprosta vetsina programatorskych pocinu vznikla z dobre vule a konicku bez naroku na kus chleba
    Mym cilem neni vytvorit nejaky zasadni pocin na poli programovani, kterym bych zanechal nesmazatelnou stopu v dejinach:-) Jen se chci stat jednim z mnoha programatoru prasicu, jakych jsou, jestli jsem dobre pochopil zdejsi obsacne diskuze na toto tema, vsu hromady. a jeslti mi to dobre pujde, tak se stat normalnim prumernym programatorem... nic vic, nic min.
    otasomil avatar 4.4.2010 10:56 otasomil | skóre: 39 | blog: puppylinux
    Rozbalit Rozbalit vše Re: Groovy I.

    Mozna je dobra kombinace dopoledne delat u krav a odpoledne programovat. Ze zacatku studijne a pozdeji melouchama.

    V praci si u krav odpocnete hlave a doma programovanim telu.

    K čemu hudba, která nevede k extázi... Stop MDMA !!! I spam umí být roztomilý
    4.4.2010 10:03 xavier | skóre: 10 | blog: borkovo
    Rozbalit Rozbalit vše Re: Groovy I.

    Do groovy jsem se taky pustil, protože po dlouhé době, jsem byl nucen dělat něco ve swingu. Hledal jsem něco v čem nemusím psát tolik zbytečného kódu a jako jasná volba vyšel swingbuilder z groovy. Oproti javě stačí napsat, tak třetinu kódu. Obecně už nikdy nebudu zkoušet psát GUI v něčem jiném než ve skriptovacím jazyce(ještě možná by šly formuláře v XML).

    K tomu prasení v groovy existuje dost konstrukcí, které dokážou solidně sprasit kód:

    podmíněná dereference foo?.bar() (proběhne pouze pokud není null), ternární operátor s vynechanou částí a ?: b (pokud platí a vrací a)

    a oblíbený s kolekcemi
    c = [1, 2, 3]; 
    c.remove(0) // smaže první prvek - remove(int index)
    c.remove(2) // smaže prvek s hodnotou 2 - remove(Object value)
    
    Pro ty kdo by se chtěli o groovy dozvědět víc, tady je video z přednášky CZJUG.
    Jakub Lucký avatar 4.4.2010 15:07 Jakub Lucký | skóre: 40 | Praha
    Rozbalit Rozbalit vše Re: Groovy I.
    Ano, PHP jsem zkoušel, ale to je zatím asi nad moje chápání).
    To je jen dobře... O nic jste nepřišel...
    If you understand, things are just as they are; if you do not understand, things are just as they are.
    4.4.2010 15:30 retroslava | skóre: 9 | blog: TryCatch | Žižkoff
    Rozbalit Rozbalit vše Re: Groovy I.
    +1
    Pozor! Jsem naprostý idiot. Co jsem napsal včera dnes už dávno neplatí. Zavazuji se, že budu diskutovat nezávazně.
    4.4.2010 18:15 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Groovy I.
    Gratuluju k výborné volbě, programátor-prasič na platformě Java si dnes konečně může bez výčitek svědomí podat ruku s průměrnou prostitutkou, a to nejen platově! Já to dobře vím, jsa sám takovým javistou :-)

    K vnitřním třídám – od verze 1.7 podporovány jsou, čímž se ta největší odlišnost Javy od Groovy stírá. V tuhle chvíli vím jen o jediné věci, která může zapříčinit, že platný javovský kód není platným kódem v Groovy:
    Xxx xxx = new XxxBuilder()
        .withFoo(foo)
        .withBar(bar)
        .build();
    To je samozřejmě dáno možností vynechávat středníky a algoritmem pro parsování – tečky je holt potřeba uvádět na koncích řádků.

    V diskusi zaznělo slovo JRuby. Já mám na to takový názor: pokud máte programátory v Javě a potřebujete skriptovací jazyk, volte Groovy. Pokud máte programátory v Ruby a potřebujete rozumný výkon, volte JRuby :-)
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    4.4.2010 18:23 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Groovy I.
    Ještě jednu věc bych dodal, protože už jsem se párkrát setkal s omylem (ale z přítomného textu si nejsem jistý, jestli je to i tenhle případ): není pravda, že Groovy lze kompilovat do javovského bajtkódu. Je naopak pravda, že Groovy se vždy kompiluje do javovského bajtkódu, který je posléze zaveden standardním mechanismem classloaderů (na classpath musí být běhová knihovna Groovy) a vykonán.

    A ještě bych upozornil na Groovy++, staticky to typované Groovy – i když bohužel ještě není úplně open-source :-(
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    11.4.2010 23:44 Lukáš Zapletal | skóre: 42 | blog: lzapův svět | Olomouc
    Rozbalit Rozbalit vše Re: Groovy I.
    Ano. Jen škoda, že je zatím Groovy tak pomalý.

    Já sám vkládám největší naděje do jazyka Scala. Syntaxe je ale dost jiná, to může projekt zabít.
    4.4.2010 21:20 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
    Rozbalit Rozbalit vše Re: Groovy I.
    ma praseni v groovy nejake vyraznejsi vyhody nez praseni treba v Jythonu?
    Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
    4.4.2010 21:26 dementni.lojzik | skóre: 19 | blog: ze zivota na vsi
    Rozbalit Rozbalit vše Re: Groovy I.
    doufam, ze tato otazka byla zamerne smerovana na Ladicka, ktery tomu na rozdil ode me asi i rozumi. Sam nejsu (zatim:-) tuto otazku zodpovedet, muj laicky podhled je, ze vyraznejsi vyhody zde nejsou
    4.4.2010 21:28 dementni.lojzik | skóre: 19 | blog: ze zivota na vsi
    Rozbalit Rozbalit vše Re: Groovy I.
    tuto otazku zodpovedet
    tuto otazku schopen zodpovedet
    4.4.2010 21:40 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Groovy I.
    Jednu jo – Groovy je navržené speciálně jako skriptovací jazyk pro Javu, takže k tomu můžeš pustit javistu a on začne okamžitě bušit funkční kód jak je zvyklej. Má všechny javovské konstrukce včetně třeba generiků nebo anotací, přidává užitečné metody k běžným javovským třídám, existuje (prý funkční, nezkoušel jsem) způsob, jak překládat zdrojáky v Groovy a v Javě zároveň (ve skutečnosti na tři průchody, ale to je detail).

    Na druhou stranu tahle vlastnost může být i nevýhodou – kdesi jsem četl hezké porovnání Groovy a Ruby, ve kterém autor ukazoval, že Ruby jako zcela samostatně navržený jazyk může řešit některé problémy výrazně efektivněji, ale teď to nemůžu dohledat a už si z toho nic nepamatuju. Používám Groovy jako skriptovací jazyk pro naší javovskou aplikaci, a samostatné skripty píšu v Ruby :-)
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    4.4.2010 21:21 dementni.lojzik | skóre: 19 | blog: ze zivota na vsi
    Rozbalit Rozbalit vše Re: Groovy I.
    Gratuluju k výborné volbě, programátor-prasič na platformě Java si dnes konečně může bez výčitek svědomí podat ruku s průměrnou prostitutkou
    nuze dobra, nejsu si ted jisty, jestli je to dobre nebo spatne, kazdopadne mam v zaloze jeste myslenku, ze si udelam rekvalifikaci na kuchare (jeste teda premyslim o elektrikari)
    K vnitřním třídám – od verze 1.7 podporovány jsou
    aha, diky za korekturu, pouzivam starsi verzi a na zmeny v 1.7 jsem byl liny se podivat. V zapisku jsem to opravil.

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.