Häftig

Häftig
Språkklass objektorienterat programmeringsspråk , imperativt programmeringsspråk , skriptspråk , funktionellt programmeringsspråk , multiparadigm programmeringsspråk , tolkat programmeringsspråk , JVM-språk , programvara med öppen källkod och fri programvara
Framträdde i 2003
Författare James Strachan [d]
Utvecklaren Java Community Process och Apache Software Foundation
Filtillägg _ .groovy
Släpp
Blivit påverkad Python , Java , Ruby , Perl och Smalltalk
Licens Apache License 2.0 och Apache License
Hemsida groovy-lang.org _ 
_
OS plattformsoberoende
 Mediafiler på Wikimedia Commons

Groovy  är ett objektorienterat programmeringsspråk designat för Java-plattformen som ett komplement till Java-språket med Python- , Ruby- och Smalltalk- funktioner .

Använder java-liknande syntax med dynamisk kompilering till JVM - bytecode och fungerar direkt med annan java-kod och bibliotek . Språket kan användas i alla javaprojekt eller som ett skriptspråk . Det används aktivt som ett Domänorienterat språk för att skriva manus när man arbetar inom ämnesområdet (från matematik till vetenskaplig databehandling), samt för att bygga och testa applikationer ( Gradle ).

Groovy har slutfört sin standardiseringsprocess i Java Community Process (JSR 241).

Huvuddragen i språket som skiljer det från Java är: både statisk och dynamisk typning ; inbyggd syntax för listor , associativa arrayer , arrayer och reguljära uttryck ; överbelastningsoperationer . Stängningar i Groovy föregick Java.

Ett antal populära webbramverk är byggda på Groovy , inklusive Grails och Ratpack , Griffon skrivbordsramverk och Spock testramverket .

Språket har hittat en tillämpning som ett skriptspråk för att utöka kapaciteten hos plattformsprogramvara. Framför allt låter rapportgeneratorn iReport , baserad på JasperReports Java - biblioteket , dig bädda in Groovy-uttryck i rapporter och skriva ytterligare logik på det. Jenkins kontinuerliga integrationssystem låter dig använda automatiseringsskript skapade i Groovy. SoapUI -webbtjänsttestapplikationen stöder att skriva testskript i Groovy [2] .

Groovy-programmering stöds i större IDE [3] , inklusive IntelliJ IDEA (som börjar med version 7 eller tidigare med JetGroovy Plugin), Eclipse (med Groovy Eclipse), Netbeans (inbäddad), VS-kod (via förlängning), Vim (via förlängning) .

Historik

Det första omnämnandet av språket var ett blogginlägg av James Strachan [ 4] daterat augusti 2003. Flera versioner släpptes senare mellan 2004 och 2006. Efter att JCP- standardiseringsprocessen började ändrades versionsnumreringen och versionen kallas "1.0". Version "1.0" släpptes den 2 januari 2007 . I december 2007 släpptes Groovy 1.1, denna version numrerades snart om till "1.5" på grund av betydande förändringar i språket.  

Strachan lämnade projektet ett år innan släppet av Groovy 1.0 2007, och i juli 2009 skrev Strachan på sin blogg att han kanske inte hade skapat Groovy om han hade läst Martin Odersky et al:s bok från 2003 om Scala-programmering (publicerad 2007) [ 5] .

JSR-241 språkutvecklingsprojekt och kommitté har letts av Guillaume Laforge sedan 2007 . G2One, som var engagerad i utvecklingen och kommersialiseringen av Grails språk och ramverk, förvärvades av SpringSource hösten 2008 , som ett resultat, genom en kedja av sammanslagningar och förvärv ( VMware , Pivotal , EMC ) tillgången överfördes 2017 till Dell Corporation . Från och med 2015 har språket varit ett projekt på toppnivå av Apache Foundation .

Under 2020 släpptes version 3.0.0 med ett antal betydande förbättringar.

Exempel

Ett klassiskt exempel på att skriva ut en rad med en hälsning:

// Skriv ut kommentarer ( "Hej världen!" )

Ett exempel på att skapa och använda en funktion med argument och ett returvärde:

def helloFunction ( name ) { println ( "Hej, ${name}" ) } helloFunction ( "Groovy!" ) // I följande funktion för att beräkna summan av två objekt // är det sista uttrycket returvärdet def sum ( a , b ) { a + b // returnerar resultatet av additionen } print ( summa ( 1 , 2 )) // Denna funktion tar endast numeriska typparametrar def subtraktion ( double a , double b ) { return a - b } skriv ut ( subtraktion ( 6 , 4 ))

Deklarera en klass, skapa en instans av den och anropa dess metoder vid programmets huvudingångspunkt (statisk metod main())

class Foo { def doSomething () { def data = [ "name" : "James" , "location" : "London" ] för ( e i data ) { println ( "entry ${e.key} är ${e. värde} " } } def closureExample ( collection ) { collection . varje { println ( "värde ${it}" ) } } static void main ( args ) { def values ​​​​= [ 1 , 2 , 3 , "abc" ] def foo = new Foo () foo . stängningExempel ( värden ) foo . gör något () } }

";" Semikolonet i slutet av raden är valfritt.

Vissa funktioner

Som i Java (sedan version 11) kan Groovy källkod exekveras som ett vanligt skript: för att göra detta måste den innehålla kod utanför klassdefinitionen, eller en klass med en huvudmetod, eller Runnable, eller GroovyTestCase:

#!/usr/bin/env groovy println "Jag kan köra det här skriptet nu!"

Strings in Groovy: Java Strings med enkla citattecken och GStrings med dubbla citattecken:

def javaStyleString = 'java String style' def GStringsStyleString = "${javaStyleString}" def j = '${javaStyleString}' def bigGroovyString = """ ${javaStyleString} ${GStringsStyleString} """ print String bigGroovyString

Att skicka parametrar till metoder, stängningar eller funktioner kan göras utan parentes:

stängning Funktion 1 , 2

Anteckningar

  1. Utgåva 4.0.5 - 2022.
  2. SOAP UI: Exempel på skript på Groovy .
  3. Lista över stödda IDE :er Arkiverad från originalet den 4 februari 2008. på den officiella Groovy-webbplatsen Arkiverad 2 mars 2014.
  4. James Strachan. Arkiverad från originalet 2007-04-05, Groovy är födelsen av ett nytt dynamiskt språk för Java-plattformen .
  5. Scala som den långsiktiga ersättningen för java/javac? (6 juli 2009). Hämtad 7 januari 2012. Arkiverad från originalet 10 februari 2012. "Jag kan ärligt säga att om någon hade visat mig programmering i Scala-boken av Martin Odersky, Lex Spoon & Bill Venners 2003, skulle jag förmodligen aldrig ha skapat Groovy."

Länkar