Java EE hat im Frühjahr seinen Abschluss gemacht und sich offiziell eingeschrieben: lachend: Deshalb werde ich sowohl öffentlich als auch privat ein Frühlingsleben führen: klatschen:
Zurück zum Hauptthema: Ich denke, viele von Ihnen kennen die Beziehung zwischen Kotlin und Spring. Ab Spring 5.0 wurde die Kotlin-Unterstützung im Kern des Frameworks übernommen.
Introducing Kotlin support in Spring Framework 5.0
Kotlin Als Thema werde ich den Frühling in Kotlins Manieren ansprechen.
Verwenden Sie zunächst SPRING INITIALIZR, um eine Vorlage für das Spring-Projekt zu erstellen und Java / Kotlin zu vergleichen.
Übrigens, ** Kotlin 1.3.0 ** wurde neulich (30.10.2018) veröffentlicht: clap :: clap: Es gibt Updates wie ** Coroutines **, die offiziell werden, aber das ist eine andere Geschichte.
Übrigens war die Standard-Kotlin-Version ** 1.2.70 ** (Stand: 1.11.2018), als sie von SPRING INITIALIZR generiert wurde.
Spring Dependencies
Importieren Sie die von SPRING INITIALIZR generierte Vorlage in IntelliJ und verwenden Sie sie. Wie bereits erwähnt, wurde die Kotlin-Version von ** 1.2.70 ** auf ** 1.3.0 ** geändert.
SPRING INITIALIZR
SPRING INITIALIZR ist ein Online-Tool, das buchstäblich eine Vorlage für Ihr Spring-Projekt erstellt und den Einstieg erleichtert. Die Bedienung ist sehr einfach. Wählen Sie einfach die folgenden Elemente auf dem Bildschirm aus.
Klicken Sie für Java / Kotlin auf ** Projekt generieren **, um eine Spring-Projektvorlage zu generieren und herunterzuladen. Importieren Sie die Vorlage in die IDE und verwenden Sie sie.
Vergleichen wir das build.gradle für das unten beschriebene Java-Projekt mit dem build.gradle für das Kotlin-Projekt.
Natürlich können Sie sehen, dass der Beschreibungsinhalt und das Format beider grundsätzlich gleich sind. Es gibt zwei Unterschiede.
Das Kotlin-Projekt wendet das Kotlin-Plug-In anstelle des Java-Plug-Ins an.
apply plugin: 'kotlin'
apply plugin: 'kotlin-spring'
In ähnlicher Weise wird für abhängige Bibliotheken die Kotlin-Bibliothek hinzugefügt.
implementation('com.fasterxml.jackson.module:jackson-module-kotlin')
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
implementation("org.jetbrains.kotlin:kotlin-reflect")
Die Tatsache, dass die Standardbibliothek, die ich hinzufüge, * jdk * anstelle von * jre * ist, ist eine andere Geschichte. Geben Sie in jedem Fall ** jdk ** an.
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')
}
Der Vergleich der Hauptklasse ist in Java / Kotlin genau der gleiche. Der einzige Unterschied besteht darin, ob die Main-Methode im Java-Stil oder im Kotlin-Kotlin-Stil formatiert ist.
public static void main(String[] args) {
SpringApplication.run(SimpleApplication.class, args);
}
fun main(args: Array<String>) {
runApplication<SimpleApplication>(*args)
}
In Kotlin gibt es in Java keine Arrays. Daher wird eine Array-Darstellung unter Verwendung eines Array-Objekts durchgeführt.
Der Unterschied zwischen einem Java-Array und einem Kotlin-Array liegt nicht in der Art und Weise, wie sie definiert sind, sondern in der Art.
Beispielsweise kann Kotlin Array
Es gibt eine Beschreibung der folgenden Parameter, die in Java nicht angezeigt werden.
*args
Dies ist das Format, das beim Erweitern und Verwenden der Elemente eines Arrays verwendet wird.
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)
}
Dieses Mal habe ich nur die von SPRING INITIALIZR generierten Projekte verglichen. Ich denke jedoch, dass Kotlin sowohl Spring als auch Java verwenden kann. Ich denke, Sie können verstehen, dass fast der gleiche Inhalt geschrieben wurde.
Es ist verständlich, dass es schwierig ist, dies allein zu identifizieren, da es nur die Quelle unmittelbar nach der automatischen Generierung ist.
Also würde ich gerne in Zukunft tiefer in ** Frühling liebt Kotlin ** eintauchen.
Recommended Posts