Groovy
| Groovy | |
|---|---|
| | |
| Klasa jezykowa | obiektowy język programowania , imperatywny język programowania , język skryptowy , funkcjonalny język programowania , wieloparadygmatyczny język programowania , interpretowany język programowania , język JVM , oprogramowanie open source i oprogramowanie bezpłatne |
| Pojawił się w | 2003 |
| Autor | James Strachan [d] |
| Deweloper | Java Community Process i Apache Software Foundation |
| Rozszerzenie pliku |
.groovy |
| Wydanie |
|
| Byłem pod wpływem | Python , Java , Ruby , Perl i Smalltalk |
| Licencja | Apache License 2.0 i Apache License |
| Stronie internetowej |
groovy-lang.org _ _ |
| OS | wieloplatformowy |
| Pliki multimedialne w Wikimedia Commons | |
Groovy to obiektowy język programowania zaprojektowany dla platformy Java jako uzupełnienie języka Java z funkcjami Python , Ruby i Smalltalk .
Używa składni podobnej do java z dynamiczną kompilacją do kodu bajtowego JVM i działa bezpośrednio z innym kodem i bibliotekami java . Język może być używany w dowolnym projekcie java lub jako język skryptowy . Jest aktywnie wykorzystywany jako język zorientowany na domenę do pisania skryptów podczas pracy w danym obszarze (od matematyki po naukowe przetwarzanie danych), a także do tworzenia i testowania aplikacji ( Gradle ).
Groovy zakończył proces standaryzacji w Java Community Process (JSR 241).
Główne cechy języka odróżniające go od Javy to: zarówno statyczne , jak i dynamiczne pisanie ; wbudowana składnia list , tablic asocjacyjnych , tablic i wyrażeń regularnych ; operacje przeciążające . Zamknięcia w Groovy poprzedzały Javę.
Na Groovy zbudowanych jest wiele popularnych frameworków internetowych , w tym Grails i Ratpack , framework aplikacji Griffon oraz framework testowy Spock .
Język znalazł zastosowanie jako język skryptowy do rozszerzania możliwości oprogramowania platformy. W szczególności generator raportów iReport , oparty na bibliotece JasperReports Java , umożliwia osadzanie wyrażeń Groovy w raportach i zapisywanie na nich dodatkowej logiki. System ciągłej integracji Jenkins umożliwia korzystanie ze skryptów automatyzacji stworzonych w Groovy. Aplikacja testująca usługi sieci Web SoapUI obsługuje pisanie skryptów testowych w Groovy [2] .
Programowanie Groovy jest obsługiwane w głównych IDE [3] , w tym IntelliJ IDEA (od wersji 7 lub wcześniejszej przy użyciu wtyczki JetGroovy), Eclipse (przy użyciu Groovy Eclipse), Netbeans (wbudowany), VS Code (poprzez rozszerzenie), Vim (poprzez rozszerzenie) .
Historia
Pierwszą wzmianką o języku był post na blogu Jamesa Strachana [ 4 ] z sierpnia 2003 roku. Kilka wersji zostało później wydanych w latach 2004-2006. Po rozpoczęciu procesu standaryzacji JCP numeracja wersji została zmieniona i wersja jest określana jako „1.0”. Wersja „1.0” została wydana 2 stycznia 2007 roku . W grudniu 2007, Groovy 1.1 został wydany, ta wersja została wkrótce zmieniona na "1.5" ze względu na znaczące zmiany w języku.
Strachan opuścił projekt na rok przed wydaniem Groovy 1.0 w 2007 roku, a w lipcu 2009 Strachan napisał na swoim blogu, że mógłby nie stworzyć Groovy, gdyby przeczytał książkę Martina Odersky'ego i innych z 2003 roku na temat programowania Scala (opublikowaną w 2007) [ 5] .
Projektowi i komitetowi rozwoju języka JSR-241 przewodniczy Guillaume Laforge od 2007 roku . Firma G2One, zajmująca się rozwojem i komercjalizacją języka i frameworka Grails, została przejęta przez SpringSource jesienią 2008 roku, w wyniku łańcucha fuzji i przejęć ( VMware , Pivotal , EMC ) aktywa została przeniesiona w 2017 roku do firmy Dell Corporation . Od 2015 roku język jest projektem najwyższego poziomu Fundacji Apache .
W 2020 roku została wydana wersja 3.0.0 z wieloma znaczącymi ulepszeniami.
Przykłady
Klasyczny przykład drukowania linii z pozdrowieniami:
//
Wydruk komentarza ( "Witaj świecie!" )
Przykład tworzenia i używania funkcji z argumentami i wartością zwracaną:
def helloFunction ( name ) {
println ( "Hello, ${name}" )
}
helloFunction ( "Groovy!" )
// W poniższej funkcji obliczającej sumę dwóch obiektów
// ostatnie wyrażenie jest wartością zwracaną
def sum ( a , b ) {
a + b // zwraca wynik dodawania
}
print ( sum ( 1 , 2 ) )
// Ta funkcja przyjmuje tylko parametry typu numerycznego
def odejmowanie ( double a , double b ) {
return a - b
}
drukuj ( odejmowanie ( 6 , 4 ))
Deklarowanie klasy, tworzenie jej instancji i wywoływanie jej metod w głównym punkcie wejścia programu (metoda statyczna main())
class Foo {
def doSomething () {
def data = [ "nazwa" : "James" , "lokalizacja" : "Londyn" ]
for ( e in data ) {
println ( "wpis ${e.key} to ${e. wartość} " }
}
def zamknięciePrzykład ( kolekcja ) {
kolekcja . każdy { println ( "wartość ${it}" ) }
}
static void main ( args ) {
wartości def = [ 1 , 2 , 3 , "abc" ] def foo = new Foo () foo . zamknięciePrzykład ( wartości ) foo . zrobićCoś () } }
";" Średnik na końcu wiersza jest opcjonalny.
Niektóre funkcje
Podobnie jak w Javie (od wersji 11), kod źródłowy Groovy może być wykonywany jak zwykły skrypt: w tym celu musi zawierać kod spoza definicji klasy lub klasę z główną metodą, Runnable lub GroovyTestCase:
#!/usr/bin/env groovy
println "Mogę teraz wykonać ten skrypt!"
Strings in Groovy: Java Strings z pojedynczymi cudzysłowami i GStrings z podwójnymi cudzysłowami:
def javaStyleString = 'styl java String'
def GStringsStyleString = "${javaStyleString}"
def j = '${javaStyleString}'
def bigGroovyString = """
${javaStyleString}
${GStringsStyleString}
"""
println bigGroovyString
Przekazywanie parametrów do metod, zamknięć lub funkcji może odbywać się bez nawiasów:
funkcja zamknięcia 1 , 2
Notatki
- ↑ Wydanie 4.0.5 - 2022.
- ↑ SOAP UI: Przykładowe skrypty na Groovy .
- ↑ Lista obsługiwanych środowisk IDE Zarchiwizowana od oryginału w dniu 4 lutego 2008 r. na oficjalnej stronie Groovy Zarchiwizowane 2 marca 2014 r.
- ↑ James Strachan. Zarchiwizowane od oryginału 05.04.2007, Groovy to narodziny nowego dynamicznego języka dla platformy Java .
- ↑ Scala jako długoterminowy zamiennik java/javac? (06.07.2009). Pobrano 7 stycznia 2012 r. Zarchiwizowane z oryginału 10 lutego 2012 r. „Mogę szczerze powiedzieć, że gdyby ktoś pokazał mi książkę Programming in Scala autorstwa Martina Odersky'ego, Lexa Spoona i Billa Vennersa w 2003 roku, prawdopodobnie nigdy bym nie stworzył Groovy'ego”
Linki
- Strona główna (angielski) . - strona główna projektu. Pobrano 5 czerwca 2006. Zarchiwizowane z oryginału 13 lutego 2012.
- JSR 241 : Groovy język programowania . JSR: Żądania specyfikacji Java . - strona główna projektu. Pobrano 5 czerwca 2006. Zarchiwizowane z oryginału 13 lutego 2012.
- https://en.wikibooks.org/wiki/Groovy - Samouczek dotyczący języka Groovy.
- Hickey, Scott Groovy w praktyce: redukcja kodu z Groovy (19 września 2006). Pobrano 26 listopada 2006. Zarchiwizowane z oryginału 13 lutego 2012.
- Andrew, Glover Groovy Development (1 listopada 2007). Data dostępu: 7 września 2008 r. Zarchiwizowane z oryginału 13 lutego 2012 r.
- Andrew, Glover Markup z Groovy Builders (12 października 2007). Data dostępu: 7 września 2008 r. Zarchiwizowane z oryginału 13 lutego 2012 r.
- Andrew, Glover programowanie funkcjonalne z zamknięciami i curryingiem (9 stycznia 2008). Data dostępu: 7 września 2008 r. Zarchiwizowane z oryginału 13 lutego 2012 r.
- Andrew, Glover Wrzuć trochę Groovy do swoich aplikacji Java (14 lutego 2008). Data dostępu: 7 września 2008 r. Zarchiwizowane z oryginału 13 lutego 2012 r.
- Andrew, Glover Przyspieszenie testów jednostkowych kodu Java za pomocą Groovy'ego (25 grudnia 2007 r.). Data dostępu: 7 września 2008 r. Zarchiwizowane z oryginału 13 lutego 2012 r.
- Andrew, Glover piszący skrypty mrówek z Groovym (21 stycznia 2008). Data dostępu: 7 września 2008 r. Zarchiwizowane z oryginału 13 lutego 2012 r.
- Andrew, Glover JDBC Programming with Groovy (12 grudnia 2007). Data dostępu: 7 września 2008 r. Zarchiwizowane z oryginału 13 lutego 2012 r.
- Andrew, Glover do przodu do serwera z Groovy (30 stycznia 2008). Data dostępu: 7 września 2008 r. Zarchiwizowane z oryginału 13 lutego 2012 r.
- Chad, Meadows Zagłębić się w hierarchiczny dziedziczony XML zinterpretowany zgodnie z regułami (30 sierpnia 2007). Data dostępu: 7 września 2008 r. Zarchiwizowane z oryginału 13 lutego 2012 r.
- Andrew, Glover MOP i mini-języki (6 lutego 2008). Data dostępu: 7 września 2008 r. Zarchiwizowane z oryginału 13 lutego 2012 r.
- Andrew, Podstępni operatorzy Glovera (4 września 2008). Data dostępu: 7 września 2008 r. Zarchiwizowane z oryginału 13 lutego 2012 r.
- Groovy dla biura . Data dostępu: 7 września 2008 r. Zarchiwizowane z oryginału 13 lutego 2012 r.
- Groovy Zone - DZone Groovy agregator wiadomości . Data dostępu: 7 września 2008 r. Zarchiwizowane z oryginału 13 lutego 2012 r.
- Wtyczka Groovy Language dla IntelliJ IDEA IDE
- Zmiany w wersji językowej 3.0