„Groovy” változatai közötti eltérés

A Wikipédiából, a szabad enciklopédiából
[ellenőrzött változat][ellenőrzött változat]
Tartalom törölve Tartalom hozzáadva
a hivatkozás előtti szóköz törlése, egyéb apróság, ld.: WP:BÜ AWB
TurkászBot (vitalap | szerkesztései)
a →‎Irodalom: Protokollcsere (Turkásznivalók)
134. sor: 134. sor:
* {{ cite book | first = Dierk | last = König | coauthors = Andrew Glover, Paul King, Guillaume Laforge and Jon Skeet | url = http://www.manning.com/koenig/ | title = Groovy in Action | publisher = Manning | year = 2006 | isbn = 1-932394-84-2 }}
* {{ cite book | first = Dierk | last = König | coauthors = Andrew Glover, Paul King, Guillaume Laforge and Jon Skeet | url = http://www.manning.com/koenig/ | title = Groovy in Action | publisher = Manning | year = 2006 | isbn = 1-932394-84-2 }}
* {{ cite book | first = Kenneth | last = Barclay | coauthors = John Savage | title = Groovy Programming: An Introduction for Java Developers | url = http://www.elsevier.com/wps/find/bookdescription.cws_home/709814/description#description | isbn = 978-0-12-372507-3 }}
* {{ cite book | first = Kenneth | last = Barclay | coauthors = John Savage | title = Groovy Programming: An Introduction for Java Developers | url = http://www.elsevier.com/wps/find/bookdescription.cws_home/709814/description#description | isbn = 978-0-12-372507-3 }}
* {{ cite book | first = Scott | last = Davis | url = http://www.amazon.com/Groovy-Recipes-Greasing-Wheels-Java/dp/0978739299 | title = Groovy Recipes: Greasing the Wheels of Java | isbn = 978-0978739294 }}
* {{ cite book | first = Scott | last = Davis | url = https://www.amazon.com/Groovy-Recipes-Greasing-Wheels-Java/dp/0978739299 | title = Groovy Recipes: Greasing the Wheels of Java | isbn = 978-0978739294 }}
* {{ cite book | first = Venkat | last = Subramaniam | url = http://www.amazon.com/Programming-Groovy-Productivity-Developer-Programmers/dp/1934356093/ref=sr_1_1?ie=UTF8&s=books&qid=1243439987&sr=8-1 | title = Programming Groovy: Dynamic Productivity for the Java Developer | isbn = 978-1934356098 }}
* {{ cite book | first = Venkat | last = Subramaniam | url = https://www.amazon.com/Programming-Groovy-Productivity-Developer-Programmers/dp/1934356093/ref=sr_1_1?ie=UTF8&s=books&qid=1243439987&sr=8-1 | title = Programming Groovy: Dynamic Productivity for the Java Developer | isbn = 978-1934356098 }}
{{Refend}}
{{Refend}}



A lap 2016. március 29., 14:40-kori változata

Groovy

Paradigmaobjektumorientált
Jellemző kiterjesztés
  • groovy
  • gvy
  • gsh
  • gy
Megjelent2003
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ás2.2 (2013-11-19)
Típusosságerősen típusos
Hatással volt ráJava, Python, Ruby, Perl, Smalltalk, Objective-C
Befolyásolt nyelvekGSP - Grails Server Pages
Operációs rendszerplatformfüggetlen (JVM)
LicencApache 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 (kompilálódik) 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

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

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

Több IDE is támogatja a Groovy-t, nevezetesen

Jegyzetek

  1. A nyelv definíciója, a JSR 241 dokumentum. jcp.org. (Hozzáférés: 2010. április 3.)
  2. Kenneth Barclay, John Savage. Groovy Programming - An Introduction to Java Develpopers. Elsevier. ISBN 978-0-12-372507-3 
  3. Groovy - the birth of a new dynamic language for the Java platform, 2003. augusztus 29. (Hozzáférés: 2010. március 30.)
  4. Guillaume LaForge: What's New in Groovy 1.6, 2009. február 27. (Hozzáférés: 2010. március 30.)
  5. Scala as the long term replacement for java/javac?, 2009. július 6. (Hozzáférés: 2009. december 29.)
  6. Guillaume LaForge: Groovy 1.7 release notes - Page History, 2009. július 31. (Hozzáférés: 2010. március 30.)
  7. Q & A with Ed Povazan on Groovy, Dynamic Languages for Java, the State-of-the Eclipse Groovy Plugin and More (Part I)
  8. Groovy - Differences from Java
  9. König 2007, pg. 32
  10. König 2007, pp. 37-8
  11. König 2007, pp. 38-9
  12. König 2007, pp. 41-3
  13. 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. (Hozzáférés: 2010. március 29.)

Irodalom

További információk