** Langage de script à typage dynamique qui s'exécute sur JVM **
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.)
--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 liste
nombres`)
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"
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.
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