Java EE est diplômé et officiellement inscrit au printemps: en riant: C'est pourquoi je vais vivre une vie printanière à la fois en public et en privé: applaudissez:
Maintenant, pour revenir au sujet principal, je pense que beaucoup d'entre vous connaissent la relation entre Kotlin et Spring. À partir de Spring 5.0, le support Kotlin a été pris dans la partie principale du framework.
Introducing Kotlin support in Spring Framework 5.0
Kotlin En tant que sujet, je vais aborder le printemps à la manière de Kotlin.
Tout d'abord, utilisez SPRING INITIALIZR pour créer un modèle pour le projet Spring et comparer Java / Kotlin.
Au fait, ** Kotlin 1.3.0 ** vient de sortir l'autre jour (30/10/2018): clap :: clap: Il y a des mises à jour telles que ** Coroutines ** devenant officielles, mais c'est une autre histoire.
À propos, la version par défaut de Kotlin était ** 1.2.70 ** (à partir du 2018/11/1) lorsqu'elle était générée par SPRING INITIALIZR.
Spring Dependencies
Importez le modèle généré par SPRING INITIALIZR dans IntelliJ et utilisez-le. Comme mentionné précédemment, la version Kotlin est passée de ** 1.2.70 ** à ** 1.3.0 **.
SPRING INITIALIZR
SPRING INITIALIZR est un outil en ligne qui crée littéralement un modèle pour votre projet Spring et facilite la mise en route. L'opération est très simple, il suffit de sélectionner les éléments suivants sur l'écran.
--Type de projet: [Maven / Gradle]
Cliquez sur ** Générer un projet ** pour Java / Kotlin pour générer et télécharger un modèle de projet Spring. Importez le modèle dans l'EDI et utilisez-le.
Comparons le build.gradle pour le projet Java décrit ci-dessous avec le build.gradle pour le projet Kotlin.
Bien sûr, vous pouvez voir que le contenu de la description et le format des deux sont fondamentalement les mêmes. Il y a deux différences.
Le projet Kotlin applique le plug-in Kotlin au lieu du plug-in Java.
apply plugin: 'kotlin'
apply plugin: 'kotlin-spring'
De même, pour les bibliothèques dépendantes, la bibliothèque de Kotlin est ajoutée.
implementation('com.fasterxml.jackson.module:jackson-module-kotlin')
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
implementation("org.jetbrains.kotlin:kotlin-reflect")
Le fait que la bibliothèque standard que j'ajoute soit * jdk * au lieu de * jre * est une autre histoire. Dans tous les cas, spécifiez ** jdk **.
Java
buildscript {
ext {
springBootVersion = '2.1.0.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
group = 'io.pivotal.syanagihara'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
implementation('org.springframework.boot:spring-boot-starter-web')
testImplementation('org.springframework.boot:spring-boot-starter-test')
}
Kotlin
buildscript {
ext {
kotlinVersion = '1.3.0'
springBootVersion = '2.1.0.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlinVersion}")
classpath("org.jetbrains.kotlin:kotlin-allopen:${kotlinVersion}")
}
}
apply plugin: 'kotlin'
apply plugin: 'kotlin-spring'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
group = 'io.pivotal.syanagihara'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8
compileKotlin {
kotlinOptions {
freeCompilerArgs = ["-Xjsr305=strict"]
jvmTarget = "1.8"
}
}
compileTestKotlin {
kotlinOptions {
freeCompilerArgs = ["-Xjsr305=strict"]
jvmTarget = "1.8"
}
}
repositories {
mavenCentral()
}
dependencies {
implementation('org.springframework.boot:spring-boot-starter-web')
implementation('com.fasterxml.jackson.module:jackson-module-kotlin')
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
implementation("org.jetbrains.kotlin:kotlin-reflect")
testImplementation('org.springframework.boot:spring-boot-starter-test')
}
La comparaison de la classe Main est exactement la même en Java / Kotlin. La seule différence est de savoir si la méthode Main est formatée dans le style Java ou Kotlin Kotlin.
public static void main(String[] args) {
SpringApplication.run(SimpleApplication.class, args);
}
fun main(args: Array<String>) {
runApplication<SimpleApplication>(*args)
}
Dans Kotlin, il n'y a pas de tableaux en Java. Par conséquent, une représentation de tableau est effectuée à l'aide d'un objet Array.
La différence entre un tableau Java et un tableau Kotlin n'est pas tant la façon dont ils sont définis, mais la nature.
--Java Array: Covariant
Par exemple, Kotlin ne peut pas affecter Array
Il existe une description des paramètres suivants qui ne sont pas visibles en Java.
*args
Il s'agit du format utilisé lors du développement et de l'utilisation des éléments d'un tableau.
Java
package io.pivotal.syanagihara.simple;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SimpleApplication {
public static void main(String[] args) {
SpringApplication.run(SimpleApplication.class, args);
}
}
Kotlin
package io.pivotal.syanagihara.simple
import org.springframework.boot.runApplication
import org.springframework.boot.autoconfigure.SpringBootApplication
@SpringBootApplication
class SimpleApplication
fun main(args: Array<String>) {
runApplication<SimpleApplication>(*args)
}
Cette fois, je viens de comparer les projets générés par SPRING INITIALIZR. Cependant, je pense qu'il semble que Kotlin puisse utiliser Spring aussi bien que Java. Je pense que vous pouvez comprendre que presque le même contenu a été écrit.
Il est compréhensible qu'il soit difficile de l'identifier par cela seul car il ne s'agit que de la source immédiatement après la génération automatique.
Donc, je voudrais approfondir ** Spring aime Kotlin ** à l'avenir.
Recommended Posts