Groovy
| Groovy | |
| Paradigma | objektumorientált |
| Jellemző kiterjesztés |
|
| Megjelent | 2003 |
| Tervező | James Strachan |
| Fejlesztő | Guillaume Laforge és sokan mások, akik a JCP keretében részt vettek a JSR-241 szabvány megalkotásában |
| Utolsó kiadás | 2.2 (2013-11-19) |
| Típusosság | erősen típusos |
| Hatással volt rá | Java, Python, Ruby, Perl, Smalltalk, Objective-C |
| Befolyásolt nyelvek | GSP - Grails Server Pages |
| Operációs rendszer | platformfüggetlen (JVM) |
| Licenc | Apache Licenc v2.0 |
| Weboldal | |
A Groovy egy objektumorientált programozási nyelv a Java platformhoz. Hasonló tulajdonságokkal rendelkezik, mint a Python, a Ruby, a Perl és a Smalltalk.[1]
A Groovy szintaxisa Java-szerű, a blokkok határait kapcsos zárójelek jelzik. A Java-kód általában szintaktikailag helyes Groovy-ban is. Dinamikusan fordul Java bájtkóddá és együtt tud működni lefordított Java-kóddal és csomagolt Java programkönyvtárakkal is.[2]
Történet
[szerkesztés | forrásszöveg szerkesztése]James Strachan először 2003 augusztusában tett említést a blogján a Groovy fejlesztéséről.[3] Több verzió is kijött 2004 és 2006 között. Amikor elkezdődött a szabványosítás a JCP kereteiben, akkor megváltozott a verziószámozás és 2007. január 2-án (kedden) megszületett az „1.0” verzió. Ezt követően több bétát és release-jelöltet is kiadtak 1.1 verziószámmal, majd 2007. december 7-én befejezték az 1.1 verziót és rögtön át is nevezték 1.5-nek, mert már nagyon sok változást tartalmazott az 1.0-hoz képest.
2009 év elején publikálták az 1.6 verziót[4] , majd nyáron Strachan a következőt írta a blogjában
„Őszintén mondhatom, hogy ha 2003-ban valaki megmutatta volna nekem Martin Odersky, Lex Spoon és Bill Venners Programming in Scala című könyvét, akkor valószínűleg soha nem alkotom meg a Groovy-t.”[5]
Még ugyanazon a nyáron kijött az 1.7 verzió is.[6]
Jellemzők
[szerkesztés | forrásszöveg szerkesztése]Ránézésre a Groovy hasonlít a Javára. Nem az összes, de sok .java fájl egyszerűen átnevezhető .groovy fájllá és működni fog Groovy kódként. Vannak azonban kivételek, tehát nem mondható el, hogy a Groovy nyelv a Java nyelv kiterjesztése. Elmondható viszont, hogy a Groovy nyelv bír olyan tulajdonságokkal, amik a Javából hiányoznak.
A két nyelv hasonlósága miatt Java-programozók elég könnyen meg tudják tanulni a Groovy nyelvet, mert a Java szintaxisból kiindulva fokozatosan szokhatnak hozzá a Groovy specialitásaihoz.[7]
A Java nyelvből hiányzó, de a Groovy nyelvben meglévő tulajdonságok között szerepel a statikus és a dinamikus típusolás (a def kulcsszóval), a closure-ök, az operátor túlterhelés, a natív szintaxis a listáknál és az asszociatív tömböknél, a reguláris kifejezések natív támogatása, a polimorf iterációk, a stringekbe ágyazott kifejezések, a helper metódusok és a biztonságos navigációs operátor (?.), ami automatikusan ellenőrzi, hogy a változó nem null értékű-e (például variable?.method() vagy variable?.field).[8]
A Groovy megengedi egyes elemek elhagyását, amik a Javában kötelezőek, így a Groovy kód tömörebb tud lenni.[9] A Groovy szintaxisa gyakran tömörebb, mint a Javáé. Például egy iteráció a Standard Java 5 verziótól ilyen:
for (String it : stringArray)
if (it.contains("tehén"))
System.out.println(it);
Groovy-ban ugyanez így is kifejezhető:
stringArray.findAll{it.contains("tehén")}.each{println it}
A Groovy beépített DOM szintaxissal támogat több jelölőnyelvet, például az XML-t és a HTML-t. Ez a feature lehetővé teszi különböző heterogén adatok definiálását és manipulálását egységes és tömör szintaxissal.[forrás?]
A Java nyelvtől eltérően a Groovy forráskód futtatható interpretált (tehát nem kompilált) szkriptnyelvként, ha tartalmaz osztálydefiníción kívüli kódot vagy ha egy osztálydefiníció tartalmaz main metódust vagy implementálja a Runnable vagy a GroovyTestCase interface-ek egyikét.
Eltérően a Ruby nyelvtől, a Groovy szkriptek a Perl nyelvhez hasonlóan teljes mértékben parse-olódnak és lefordulnak a futtatás előtt. (Ezt a futtató környezet „rejtve” teszi és a lefordított változatot nem menti el a folyamat során.)[10]
A GroovyBeans a JavaBeans Groovy-féle változata. A Groovy implicit módon generálja getter és a setter metódusokat. Például a következő kódban implicit generálódnak a setColor(String color) és a getColor() metódusok; és az utolsó két sor, amely látszólag közvetlenül manipulálja az adatmezőt, tulajdonképpen a megfelelő metódusokat hívja meg.[11]
class AGroovyBean {
String color
}
def myGroovyBean = new AGroovyBean()
myGroovyBean.setColor('babarózsaszín')
assert myGroovyBean.getColor() == 'babarózsaszín'
myGroovyBean.color = 'türoszi bíbor'
assert myGroovyBean.color == 'türoszi bíbor'
A listák és az asszociatív tömbök kezelésére a Groovy-ban egyszerű és konzisztens szintaxis van. A Java szintaxishoz képest mindenképp.[12]
def movieList = ['Dersu Uzala', 'Ran', 'Seven Samurai'] // deklarál egy (tömbnek tűnő) listát
assert movieList[2] == 'Seven Samurai'
movieList[3] = 'Casablanca' // hozzáad egy elemet a listához
assert movieList.size() == 4
def monthMap = [ 'January' : 31, 'February' : 28, 'March' : 31 ] // deklarál egy asszociatív tömböt
assert monthMap['March'] == 31
monthMap['April'] = 30 // hozzáad egy kulcs-érték párt az asszociatív tömbhöz
assert monthMap.size() == 4
IDE támogatottság
[szerkesztés | forrásszöveg szerkesztése]Jegyzetek
[szerkesztés | forrásszöveg szerkesztése]- ↑ "A nyelv definíciója, a JSR 241 dokumentum". jcp.org. Hozzáférés: 2010. április 3.
- ↑ Kenneth Barclay, John Savage. Groovy Programming - An Introduction to Java Develpopers. Elsevier. ISBN 978-0-12-372507-3. Hozzáférés: 2010. április 3.
{{cite book}}: Unknown parameter|archívdátum=ignored (súgó); Unknown parameter|archívurl=ignored (súgó) - ↑ "Groovy - the birth of a new dynamic language for the Java platform". 2003. augusztus 29. 2007. április 5. dátummal az eredeti címről archiválva. Hozzáférés: 2010. március 30.
- ↑ Guillaume LaForge (2009. február 27.). "What's New in Groovy 1.6". Hozzáférés: 2010. március 30.
- ↑ "Scala as the long term replacement for java/javac?". 2009. július 6. Hozzáférés: 2009. december 29.
- ↑ Guillaume LaForge (2009. július 31.). "Groovy 1.7 release notes - Page History". 2012. szeptember 3. dátummal az eredeti címről archiválva. Hozzáférés: 2010. március 30.
- ↑ Q & A with Ed Povazan on Groovy, Dynamic Languages for Java, the State-of-the Eclipse Groovy Plugin and More (Part I)
- ↑ "Groovy - Differences from Java". 2009. március 17. dátummal az eredeti címről archiválva. Hozzáférés: 2009. március 17.
- ↑ König 2007, pg. 32
- ↑ König 2007, pp. 37-8
- ↑ König 2007, pp. 38-9
- ↑ König 2007, pp. 41-3
- ↑ https://web.archive.org/web/20100410044241/http://groovy.codehaus.org/TextMate
- ↑ update site: https://web.archive.org/web/20091126004845/http://dist.codehaus.org/groovy/distributions/update/
- ↑ "IntelliJ IDEA :: Smart Groovy IDE with Groovy-Java compiler for Groovy scripts, Groovy Swingbuilder, Groovy server pages with ER diagram for productive Groovy programming, plus Groovy on Grails, available via Groovy plugin". jetbrains.com. 2008. július 5. dátummal az eredeti címről archiválva. Hozzáférés: 2010. március 29.
Irodalom
[szerkesztés | forrásszöveg szerkesztése]- König, Dierk (2006). Groovy in Action. Manning. ISBN 1-932394-84-2.
{{cite book}}: Unknown parameter|coauthors=ignored (|author=suggested) (súgó) - Barclay, Kenneth. Groovy Programming: An Introduction for Java Developers. ISBN 978-0-12-372507-3. Hozzáférés: 2010. április 3.
{{cite book}}: Unknown parameter|archívdátum=ignored (súgó); Unknown parameter|archívurl=ignored (súgó); Unknown parameter|coauthors=ignored (|author=suggested) (súgó) - Davis, Scott. Groovy Recipes: Greasing the Wheels of Java. ISBN 978-0978739294.
- Subramaniam, Venkat. Programming Groovy: Dynamic Productivity for the Java Developer. ISBN 978-1934356098.
További információk
[szerkesztés | forrásszöveg szerkesztése]- A nyelv hivatalos weboldala
- Groovy for the Office
- Groovy Zone - DZone Groovy news aggregator
- About Groovy - About Groovy & news
- Groovy articles directory
- Interview with Guillaume Laforge about Groovy, from QCon London 2007
- Interview with Guillaume Laforge and Graeme Rocher about Groovy and Grails, from SpringOne New Orleans 2009