Рубрики
Без рубрики

Groovy Java 10 причин использовать Groovy в 2019 году

Прошел год с тех пор, как я нырнул в Groovy. Вот почему мне это нравится. Помеченный как groovy, java, скриптинг, программирование.

Почему Заводной?

Прошло около года с тех пор, как я присоединился к команде DevOps моей компании и одним из основных инструментов, которые мы используем, является Дженкинс , который отлично уживается с Заводной . В основном я использую Groovy для организации конвейеров и автоматизации некоторых скучных задач.

Groovy – это мощный язык для платформы Java, он плавно интегрируется с любой программой Java. Это также отличный язык сценариев с его мощным и простым в освоении синтаксисом.

[Groovy] нацелен на повышение производительности разработчиков благодаря лаконичному, знакомому и легкому в освоении синтаксис . Он плавно интегрируется с любой программой Java и немедленно предоставляет вашему приложению мощные функции, включая возможности написания сценариев, Язык, зависящий от домена создание, время выполнения и время компиляции метапрограммирование и функциональное программирование.

Итак, вот 10 функций, которые я узнал за последний год и которые заставили меня полюбить Groovy:

1. Простота

Будучи сотрудником команды разработчиков Java, изучение Groovy было для меня легким делом. Он построен поверх стандартных библиотек Java, предоставляя дополнительные функции. Большинство из них значительно упрощают программирование.

1.1 Объявление Списков/Карт

Groovy – это необязательный типизированный язык, вы можете использовать default ключевое слово для объявления переменных. Например, объявление списков или карт так же просто, как:

def myList = []
def myMap = [:]

1.2 Перебор списков/карт

И перебирать их невероятно легко и удобно с помощью Закрытие :

myList.each {element -> 
    println element
}

myMap.each {entry -> 
    println "User: $entry.user | Email: $entry.email"
}

2. Интерполяция строк

[Строка] Интерполяция – это акт замены заполнителя в строке его значением при вычислении строки.

В Groovy заполнители окружены символом ${} или префиксом $ для выражений с точками.

В предыдущем фрагменте мы можем видеть пример интерполяции строк. Но вот еще один пример:

try{
    throw new Exception()
}catch(Exception e){
    println "Error during operation. Cause: ${e}"
}

3. Кастинг

Groovy делает приведение очень простым и читаемым с помощью оператора as . Чтобы использовать этот операнд, класс castle должен реализовать метод as Type() . Это уже происходит для стандартных классов, таких как списки, перечислители и т.д.

Например:

enum Employee {
    MIKE,
    HANNA
}

String name = "JOHN"

try{
    name as Employee
}catch(Exception e){
    println "Could not find employee ${name}. Cause: ${e}"
}

4. Json для классов

Я много работаю с веб-сервисами с ответами Json, поэтому мне неизбежно приходилось сопоставлять ответы с классами Groovy. Это происходит из коробки с Groovy, и это чрезвычайно просто, просто передайте Json через конструктор класса.

String response = '{name:"John", position: "Developer", age: 32}'

// Json response to map
def employeeMap = new JsonSlurper().parseText(response)
// Consider an Employee class with the attributes name, position and age
Employee employee = new Employee(employeeMap)

Это оно. Мы только что создали объект employee из строки Json.

Обратный путь так же прост:

def json = JsonOutput.toJson(employee)
// json == '{name:"John", position: "Developer", age: 32}'

5. Утверждения

Groovy имеет тот же оператор assert , что и Java, но намного более мощный – отсюда и его название – |/Power Assertions .

Разница заключается в том, что его вывод в случае, если утверждения преобразуются в false . Например:

def contacts = ['John', 'Anna']

assert contacts.isEmpty()

//Output:
//ERROR org.codehaus.groovy.runtime.powerassert.PowerAssetionError:
//assert contacts.isEmpty()
//       |        |
//       |        false
//       [John, Anna]

Это позволяет вам очень легко понять, что привело к сбою утверждения.

6. Определение переменных

Groovy необязательно имеет тип, это означает, что вы можете определить переменную с ее типом или просто использовать ключевое слово защита . Это также применимо при объявлении списка или карт, их типы являются необязательными. Например:

String name
int age
def address
List friends = ['John', 'Anna']
Map family = ['Mother':'Mary', 'Father':'Joseph']

def getFamilyMember("Mother"){ ... }

Для тех из вас, кто знает Javascript, это похоже на ключевое слово вар .

Это дает вам невероятную гибкость, однако будьте осторожны при его использовании. Это может затруднить вашей команде или кому-то еще, использующему ваш код, чтение его и понимание того, что ожидается в качестве входных или выходных данных.

7. Хеширование

Если вы когда-либо использовали Java, вы, вероятно, знаете, насколько сложно хэшировать строку – если только вы не используете стороннюю библиотеку.

Groovy 2.5 предоставляет нам несколько полезных методов для класса String . Вычисление хэшей так же просто, как вызов метода для строки. Groovy делает это простым:

def password = "thisIsMyPassword"

def md5 = password.md5()
def sha256 = password.sha256()
//For other algorithms use digest() method
def sha1 = password.digest('SHA-1')
...

8. Операторы

Groovy поддерживает наиболее распространенные операторы, встречающиеся в других языках. Но этого недостаточно, есть еще несколько интересных операторов, которые предоставляет Groovy. Вот несколько:

Оператор Элвиса

Это сокращенная версия троичного оператора. Это очень полезно, например, когда условие может быть равно нулю.

// Instead of this
def user = person.name ? person.name : 'Guest'
// Use this
def user = person.name ?: 'Guest'

Оператор безопасной навигации

Другим оператором, который можно использовать для проверки того, имеет ли переменная значение null, является оператор безопасной навигации.

def user = person?.name
// user == null

Используйте этот оператор, когда вы хотите избежать NullPointerException s. В случае, если объект, к которому вы обращаетесь, равен null, этот оператор вернет null вместо того, чтобы бросать Исключение NullPointerException .

Оператор распространения

Оператор распространения ( . * ) используется для выполнения действия со всеми элементами коллекции вместо использования цикла или замыкания, как мы видели ранее. Например:

def numbers = [1,2,3,4,5,6]
*numbers // == [1,2,3,4,5,6]

def people = [
    new Person(name: 'John', age: '25'),
    new Person(name: 'Anna', age: '21')
]

def friends = people*.name // friends = ['John', 'Anna']

9. Черты

Черты – это структурная конструкция языка, которая позволяет:

  • состав моделей поведения

  • реализация интерфейсов во время выполнения

  • переопределение поведения

  • совместимость со статической проверкой/компиляцией типов

Мне нравится думать о чертах как об интерфейсах, где вы действительно можете реализовывать методы. Это очень полезно, когда у вас очень сложное и структурированное приложение, и вы хотите сохранить все в чистоте.

Это определенно то, чего мне не хватало в начале Java.

Вот пример:

trait Sociable {
    void greet() { println "Hello!" }
}

class Person implements Sociable {}

Person p = new Person()
p.greet() // Hello!

10. Регулярные выражения

Groovy изначально поддерживает регулярные выражения, и это довольно просто. Он имеет 3 оператора для регулярных выражений:

  • ~ это оператор шаблона , это простой способ создать экземпляр java.util.regex. Шаблон :
def pattern = ~"^abc{2}\d"
// pattern instanceof Pattern == true
  • =~ это оператор поиска , который будет искать шаблон в строке и возвращает Спички :
def pattern = ~"abc{2}\d"
def found = "abcc5" =~ pattern
// found instanceof Matcher == true
  • и, наконец, оператор match/ | ==~ , который возвращает true если строка строго соответствует регулярному выражению:
def found = "abcc5" ==~ pattern
// found == true

Groovy ощущается как глоток свежего воздуха, если вы годами программировали на Java или других языках ООП.

Это делает вещи намного проще, проще и намного менее многословными. Плюс дополнительные функции, такие как создание сценариев и языковые возможности, зависящие от домена, выводят Groovy на новый уровень и придают ему новый свежий вид, которого не хватает для старых языков.

Я надеюсь, что вы нашли эту статью интересной и дайте мне знать в комментариях ниже, есть ли у вас какой-либо опыт работы с Groovy и как вы его используете.:)

Оригинал: “https://dev.to/jcoelho/10-reasons-to-use-groovy-in-2019-431f”