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

    Vyšlo Pharo 12.0, programovací jazyk a vývojové prostředí s řadou pokročilých vlastností. Krom tradiční nadílky oprav přináší nový systém správy ladících bodů, nový způsob definice tříd, prostor pro objekty, které nemusí procházet GC a mnoho dalšího.

    Pavel Křivánek | Komentářů: 0
    dnes 04:55 | Zajímavý software

    Microsoft zveřejnil na GitHubu zdrojové kódy MS-DOSu 4.0 pod licencí MIT. Ve stejném repozitáři se nacházejí i před lety zveřejněné zdrojové k kódy MS-DOSu 1.25 a 2.0.

    Ladislav Hagara | Komentářů: 21
    včera 17:33 | Nová verze

    Canonical vydal (email, blog, YouTube) Ubuntu 24.04 LTS Noble Numbat. Přehled novinek v poznámkách k vydání a také příspěvcích na blogu: novinky v desktopu a novinky v bezpečnosti. Vydány byly také oficiální deriváty Edubuntu, Kubuntu, Lubuntu, Ubuntu Budgie, Ubuntu Cinnamon, Ubuntu Kylin, Ubuntu MATE, Ubuntu Studio, Ubuntu Unity a Xubuntu. Jedná se o 10. LTS verzi.

    Ladislav Hagara | Komentářů: 13
    včera 14:22 | Komunita

    Na YouTube je k dispozici videozáznam z včerejšího Czech Open Source Policy Forum 2024.

    Ladislav Hagara | Komentářů: 2
    včera 13:22 | Nová verze

    Fossil (Wikipedie) byl vydán ve verzi 2.24. Jedná se o distribuovaný systém správy verzí propojený se správou chyb, wiki stránek a blogů s integrovaným webovým rozhraním. Vše běží z jednoho jediného spustitelného souboru a uloženo je v SQLite databázi.

    Ladislav Hagara | Komentářů: 0
    včera 12:44 | Nová verze

    Byla vydána nová stabilní verze 6.7 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 124. Přehled novinek i s náhledy v příspěvku na blogu. Vypíchnout lze Spořič paměti (Memory Saver) automaticky hibernující karty, které nebyly nějakou dobu používány nebo vylepšené Odběry (Feed Reader).

    Ladislav Hagara | Komentářů: 0
    včera 04:55 | Nová verze

    OpenJS Foundation, oficiální projekt konsorcia Linux Foundation, oznámila vydání verze 22 otevřeného multiplatformního prostředí pro vývoj a běh síťových aplikací napsaných v JavaScriptu Node.js (Wikipedie). V říjnu se verze 22 stane novou aktivní LTS verzí. Podpora je plánována do dubna 2027.

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

    Byla vydána verze 8.2 open source virtualizační platformy Proxmox VE (Proxmox Virtual Environment, Wikipedie) založené na Debianu. Přehled novinek v poznámkách k vydání a v informačním videu. Zdůrazněn je průvodce migrací hostů z VMware ESXi do Proxmoxu.

    Ladislav Hagara | Komentářů: 0
    včera 04:11 | Nová verze

    R (Wikipedie), programovací jazyk a prostředí určené pro statistickou analýzu dat a jejich grafické zobrazení, bylo vydáno ve verzi 4.4.0. Její kódové jméno je Puppy Cup.

    Ladislav Hagara | Komentářů: 0
    24.4. 22:44 | IT novinky

    IBM kupuje společnost HashiCorp (Terraform, Packer, Vault, Boundary, Consul, Nomad, Waypoint, Vagrant, …) za 6,4 miliardy dolarů, tj. 35 dolarů za akcii.

    Ladislav Hagara | Komentářů: 14
    KDE Plasma 6
     (73%)
     (9%)
     (2%)
     (16%)
    Celkem 789 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník

    Groovy I.

    4.4.2010 01:45 | Přečteno: 2297× | 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.