Premiers pas avec Groovy pour les ingénieurs Java gênants

table des matières


Qu'est-ce que Groovy

** Langage de script à typage dynamique qui s'exécute sur JVM **


Caractéristiques de Groovy

Pourquoi cibler les "ingénieurs Java" "gênants" ...

C'est parce que Groovy présente les avantages suivants.

** 1. Moins de code que Java ** 2. L'API Java est également disponible 3. Écosystème riche (Grails pour le framework d'application Web, Spock pour le framework de test, etc.)


Volume de code Groovy Avantages-Moins par rapport à Java

--Déclaration de variable / déclaration de méthode

La déclaration de variable est possible avec def (le type peut être spécifié) Lorsqu'elle est déclarée avec def, le type de la variable est ʻObject type public` n'est pas requis lors de la déclaration d'une méthode publique (car la portée de la méthode est publique par défaut)

Java


String helloWorld = "Hello World.";

public static void main(String[] args) {
    // do something
}

Groovy


def helloWorld = "Hello World."

//public peut être omis
static void main(String[] args) {
    // do something
}

//Le type de retour peut être def
static def main(String[] args) {
    //do something
}

//Le type de retour peut être omis
static main(String[] args) {
    //do something
}

//Le type d'argument peut également être omis
static main(args) {
    //do something
}

--Chaîne de caractères

Vous pouvez incorporer des variables dans des chaînes sous la forme de $ variables

Java


String name = "Michael";
System.out.println("Hello " + name + "!");

//Résultat de sortie
// Hello Michael!

Groovy


def name = "Michael"
println "Hello $name!"

//Résultat de sortie
// Hello Michael!

L'initialisation de la liste est «[]» L'initialisation de la carte est «[:]»

Java


List<String> list = new ArrayList<>();
Map<String, String> map = new HashMap<>();

Groovy


def list = []
def map = [:] //Le type sera LinkedhashMap

Plus près est pratique ʻItest une variable implicite qui représente l'argument passé à la fermeture (dans l'exemple ci-dessous, chaque élément de la listenombres`)

Java


List<Integer> numbers = List.of(1, 2, 3, 4, 5);
List<Integer> odds = numbers.stream().filter(number -> number % 2 != 0).collect(Collectors.toList());
System.out.println(odds);

//Résultat de sortie
// [1, 3, 5]

Groovy


def numbers = [1, 2, 3, 4, 5] 
def odds = numbers.findAll { it % 2 != 0 } 
//Cette façon d'écrire est également OK
// def odds = numbers.findAll { number -> number % 2 != 0 }
println odds

//Résultat de sortie
// [1, 3, 5]

Vous pouvez obtenir la bibliothèque à partir d'un référentiel externe (tel que le référentiel Maven) en utilisant un outil de gestion de configuration appelé Grape avec @ Grab La classe groovy.sql.Sql est pratique

table de personne

person_id first_name last_name
1 Michael Jordan
2 Michael Jackson

Java


// mysql-connector-Téléchargez java et ajoutez au chemin de classe

Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/sampledb", "root", "root");
// first_Dernier des enregistrements dont le nom est Michael_Obtenir le nom
PreparedStatement pstmt = conn.prepareStatement("SELECT last_name FROM person WHERE first_name = ?");
pstmt.setString(1, "Michael");
ResultSet rs = pstmt.executeQuery();
//Dernier record acquis_Nom de sortie vers la console
while(rs.next()) {
    System.out.println(rs.getString("last_name"));
}

//Résultat de sortie
// "Jordan"
// "Jackson"

Groovy


//Mysql depuis un référentiel externe utilisant Grape-connector-Obtenez java
@GrabConfig(systemClassLoader=true)
@Grab("mysql:mysql-connector-java:5.1.49")

def sql = Sql.newInstance("jdbc:mysql://localhost:3306/sampledb", "root", "root", "com.mysql.jdbc.Driver")
// first_Dernier des enregistrements dont le nom est Michael_Obtenir le nom
def rows = sql.rows("SELECT last_name FROM person WHERE first_name = ?", ["Michael"])
//Dernier record acquis_Nom de sortie vers la console
rows.each {
    println it.last_name
}

//Résultat de sortie
// "Jordan"
// "Jackson"

Inconvénients de Groovy

Puisqu'il s'agit d'un langage typé dynamiquement, il ne déclare pas de type, et les variables et les arguments de fermeture déclarés avec def sont vérifiés de type à l'exécution, donc les erreurs causées par les types ne sont pas signalées avant l'exécution.

Certaines syntaxes telles que les instructions try-with-resource et les expressions lambda ne sont pas prises en charge dans le système 2. Celles-ci sont également prises en charge dans la série version 3, mais depuis sa sortie en février de cette année, il est possible que même la dernière version utilise la série 2.5 pour les frameworks et les bibliothèques qui utilisent Groovy.


en conclusion

Groovy nécessite moins de code que Java et devrait améliorer l'efficacité du développement. De plus, les coûts d'apprentissage sont faibles pour les ingénieurs Java et il ne faudra pas longtemps pour apprendre. (Je l'ai aussi appris en 3 mois environ.) Si vous trouvez votre code Java redondant ou souhaitez le développer plus efficacement, pourquoi ne pas essayer Groovy?


Recommended Posts

Premiers pas avec Groovy pour les ingénieurs Java gênants
[Java] Introduction à Java
Introduction à Java
Introduction à Java pour la première fois # 2
[Mensuel 2017/04] Introduction à groovy !! ~ Comparaison de grammaire / spécification Java ~
Introduction à la commande java
[Introduction à Java] Bases de l'arithmétique Java (pour les débutants)
Introduction à Java pour les débutants Connaissance de base du langage Java ①
Ce dont les ingénieurs Java ont besoin pour se préparer à la version Java 11
[Java] Introduction à l'expression lambda
[Java] Introduction à l'API Stream
[Introduction aux jeux Janken (comme)] Java
Une introduction aux types fonctionnels pour les programmeurs orientés objet dans Elm
Aide-mémoire C # pour les techniciens Java
[Introduction à Java] À propos des expressions lambda
[Introduction à Java] À propos de l'API Stream
Introduction à la programmation fonctionnelle (Java, Javascript)
Introduction initiale à Mac (ingénieur Java)
Introduction à la programmation pour les étudiants du Collège: Introduction
Premiers pas avec Ruby pour les ingénieurs Java
Introduction à la programmation pour les étudiants du collégial: variables
À propos de la procédure pour que Java fonctionne
Introduction aux algorithmes avec java-Search (recherche prioritaire en profondeur)
[Introduction à Java] Comment écrire un programme Java
Sortie du livre "Introduction à Java"
Apprendre pour la première fois java [Introduction]
[Java] Introduction
[Introduction à Java] À propos des déclarations et des types de variables
Introduction à kotlin pour les développeurs iOS ④-type
Mémo pour la migration de Java vers Kotlin
[Introduction à Java] À propos du traitement itératif (while, do-while, for, extension for, break, continue)
Introduction aux algorithmes avec java --Search (recherche de priorité de largeur)
[Introduction à la structure de données Java] Créez votre propre ArrayDeque rapide pour le type primitif
[Pour les débutants] Introduction à Java Connaissance de base du langage Java ③ Tableau, structure de sélection, structure itérative
Pour mon fils qui a commencé à étudier Java avec "Introduction à Java" dans une main
Un moyen pour les développeurs Java / Scala de faire progresser leur carrière en tant qu'ingénieurs de données.
[Java] Comment tester s'il est nul dans JUnit
[Introduction à Java] À propos de la conversion de type (distribution, promotion)
Introduction aux algorithmes avec java --Search (bit full search)
Apprentissage rapide de Java "Introduction?" Partie 1 Création d'un environnement
Je souhaite envoyer un e-mail en Java.
Comment utiliser un tableau pour les clés HashMap
Ingénieur en route vers Java Partie 1 Introduction et construction de l'environnement
[Java] Créons un Minecraft Mod 1.14.4 [Introduction]
Introduction à kotlin pour les développeurs iOS ⑤-XML pratique
[Java] Créons un Minecraft Mod 1.16.1 [Introduction]
[Java] (pour MacOS) Méthode de définition du chemin de classe
Introduction à Spring Boot + In-Memory Data Grid
Introduction à kotlin pour les développeurs iOS ③-À propos de gradle
Pour les ingénieurs Java qui démarrent Kotlin à partir de maintenant
Comment résoudre les problèmes d'expression en Java
Introduction à kotlin pour les développeurs iOS ①-Construction de l'environnement
Introduction à kotlin pour les développeurs iOS ②-Création de projet
Utilisons Java New FileIO! (Introduction, pour les débutants)
Points à connaître avec Java Equals
[Java] Comment rendre plusieurs boucles for uniques
Premiers pas avec Java
Introduction à Ruby 2
Pour l'apprentissage JAVA (2018-03-16-01)