Ugrás a fő tartalomra

Groovy előnyök

Több üzleti elemző/rendszerszervező által használt eszközben is megjelenik a szkriptelhetőség groovy nyelven (pl. ODI, SoapUi, ..).

A hatékony munkavégzés miatt elengedhetetlen megismerkedni vele.

Néhány elemző szoftver ingyenes verziója nem tartalmaz egy sor kényelmi használat funkciót, de a szkriptélhetőség lehetőségével és szakértelemmel a hatékonyság és használat konform érzete nagyon megnövelhető

Az ismerkedés kezdjük ott, hogy felfogható úgy mit egy speciális java nyelv amely egy csomó könnyítést egyszerűsítést tartalmaz ami miatt nagyon hatékony munka válik lehetővé a használatával.



Mik is ezek az előnyök?





Egyszerű telepítés:


Csak csomagold ki egy program könyvtárba.

Ennek a könyvtárnak az elérési útját állítsd be GROOVY_HOME környezeti változónak.

A PATH környezeti változót bővítsd ki a  %GROOVY_HOME%/bin bejegyzéssel.



 - Indítható a parancs értelmező:
c:\prg\groovy\bin\groovy.bat

- Vagy a groovy konzol:
c:\prg\groovy\bin\groovyConsole.bat



Egyszerű fordítás


groovyc Hello.groovy

--

groovyc *.groovy *.java



Egyszerű futtatás,



java -cp %GROOVY_HOME%/embeddable/groovy-all-2.0.0.jar;. kl_class "Kecskemeti Lajos"




Akár egy lépésbe futtatható

groovy kl_minta.groovy

--

javac kl_minta.java  // java-ban mindig fordítani kell

java kl_minta



Javanál rövidebb összevont kód


Book = new Book ( id: 1, title: "Lajos Groovy mintája")




Automatikus implicid includ-olás


java.util.*, java.lang.*, java.net.*, java.io.*, groovy.lang.*, and groovy.util.*.

,java.util.regex.*, java.math.BigDecimal, java.math.BigInteger





Az érvényesítés használata minden típusnál


def list = [1, 2, 'x'] // list of 3 elements

assert list.size() == 3





A built-in builder használata


def builder = new groovy.xml.MarkupBuilder()

builder.employee {

name 'Kecskeméti Lajos'

gender 'male'

}




A closure-k használata, nevesített változó újra használata


def name = "Dani"

def printClosure = { println "Hello, ${name}" }

printClosure()

name = "Tomi"

printClosure()




A fejlett metaprogramozás


String.metaClass.firstUpper = { -> return delegate[0].toUpperCase() + delegate[1..delegate.length() - 1] }

println "iiii".firstUpper()




Azonnali json formátum támogatás


import groovy.json.JsonSlurper

def slurper = new JsonSlurper()

def result = slurper.parseText('{"person":{"name":"Kecskeméti Lajos","age":40,"cars":["bmw","ford"]}}')

println result.person.name

println result.person.age

println result.person.cars.size()

println result.person.cars[0]

println result.person.cars[1]




A Lists és Maps használat támogatása


authors = [ 'Kecskeméti', 'Lajos', 'Dani', 'Tomi' ]

println authors

println authors[0]





 Minden változó objektum is egyben (nem kell boxing és unboxing)


println(2 + 2 )

println(2.plus(2))



 Zárójelezés és pontosvesszőzés elhagyható


println ("hello");

println "hello"





A szövegek interpolációjának támogatása


def lastName = "Lajos"

def fullname = "Kecskeméti ${lastName} " // string interpolation (also called Gstring)

println fullname




 Statikus és dinamikus típus kezelés


def var = 10             //dinamikus

var = "It's a String"

--

String s1 = " A String " // statikus

s2 = "Another String "





A statikus Byte kód generálás támogatása


import groovy.transform.CompileStatic

@CompileStatic

int doubleIt(int num) {

  2* num

}

assert doubleIt(2) == 4




A getter és setter használat támogatása


class Employee{

String name

}

Employee emp = new Employee()

emp.setName("John Doe" )

println emp.name





MAIN metódus elhagyható

package kl;

public class Todo {

String name

String note

}

// public static void main(String[] args) {  // -- elhagyható !!--

  def todos = [   new Todo(name:"1", note:"one"),   new Todo(name:"2", note:"two"),   new Todo(name:"3", note:"three")   ]

  todos.each {

     println "${it.name} ${it.note}"

   } //each

// } //main

//}


Néhány minta



----  Várakoztatás

Thread.sleep(1000) // várakozás

print "Hello!"

println 'Hello World!'

--

Map map = { 1 : "Bill", 2 : "Doug", 3 : "Bev" }

---// összes txt file melynek a tartalmában benne van a Hello szövegrész

println new File('.').files.findAll{ it.name.endsWith('.txt') && it.text.contains('Hello')}.collect{ it.name }



-- //könyvtárat listáz

//  C:\Users\kecskemetil\Documents\kl_p\prg\groovy-2.5.2\bin\minta

dh = new File('../minta')

dh.eachFileRecurse {

    println it

}

---  könyvtárat listáz teljes eléréi uttal

class FileExample {

   static void main(String[] args) {

      new File("../minta").eachFile() {

         file->println file.getAbsolutePath()

      }

   }

}



----- Kiíratások

package com.apress.bgg;

public class Todo {

String name

String note

public static void main(String[] args) {

  def todos = [ new Todo(name:"1", note:"one"), new Todo(name:"2", note:"two"), new Todo(name:"3", note:"three") ] // ArrayList jelőlésesére :  []

  todos.each {

   println "${it.name} ${it.note}"

  } //each

} //main

}






------A rövidítések feloldása:

Command Line Interface (CLI)



Groovy consol ablak két legfontosabb gombja 

  - a futtatás
  - és a képernyő törlés











Megjegyzések