Zum Hauptinhalt springen

Kotlin DSL

In ChatGPT öffnen
25.12 Experimentell

webforJ bietet eine Kotlin domänenspezifische Sprache, oder DSL, mit der Sie UIs mit prägnanter, typsicher Syntax erstellen können. Anstelle von imperativem Java-Code schreiben Sie deklarativen Code, der wie eine Beschreibung Ihrer UI-Struktur gelesen wird.

Java
FlexLayout layout = new FlexLayout();
layout.setDirection(FlexDirection.COLUMN);
layout.setSpacing("10px");

TextField name = new TextField();
name.setLabel("Name");
name.setPlaceholder("Ihr Name");
layout.add(name);

Button submit = new Button("Einreichen", ButtonTheme.PRIMARY);
submit.onClick(e -> handleSubmit());
layout.add(submit);
Kotlin DSL
flexLayout {
direction = FlexDirection.COLUMN
styles["gap"] = "10px"

textField("Name", placeholder = "Ihr Name")
button("Einreichen", ButtonTheme.PRIMARY) {
onClick { handleSubmit() }
}
}

Die DSL nutzt Kotlin-Erweiterungsfunktionen, Lambdas mit Receivern und Standardparameter, um eine natürliche Builder-Syntax zu erstellen. Komponenten verschachteln sich, Konfiguration geschieht in Blöcken, und der Compiler erfasst strukturelle Fehler vor der Laufzeit.

Einrichtung

Experimentelles Feature
Dieses Feature ist experimentell und kann sich in einer zukünftigen Version ändern oder entfernt werden.

Es ist keine separate Kotlin-Installation erforderlich. Maven kümmert sich über das Kotlin-Maven-Plugin um die Kompilierung, sodass jedes Projekt, das bereits mit Maven gebaut wird, Kotlin-Unterstützung allein durch Konfiguration der Abhängigkeiten und Plugins hinzufügen kann.

Schneller Start

Um ein webforJ-Projekt mit Kotlin schnell in Betrieb zu nehmen, das alle benötigten Konfigurationen sofort bereitstellt, siehe diesen Abschnitt zur Verwendung des webforJ Kotlin-Starter.

Abhängigkeiten

Fügen Sie das webforJ Kotlin DSL-Modul und die Kotlin-Standardbibliothek zu Ihrer pom.xml hinzu:

<dependency>
<groupId>com.webforj.kotlin</groupId>
<artifactId>webforj-kotlin</artifactId>
<version>${webforj.version}</version>
</dependency>

<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib-jdk8</artifactId>
<version>${kotlin.version}</version>
</dependency>

Wenn Sie vorhaben, Tests in Kotlin zu schreiben, fügen Sie auch die Kotlin-Testabhängigkeit hinzu. Sie integriert sich mit JUnit:

<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-test</artifactId>
<version>${kotlin.version}</version>
<scope>test</scope>
</dependency>

Kotlin Maven-Plugin

Fügen Sie das Kotlin Maven-Plugin hinzu, um sowohl Ihre Kotlin- als auch Java-Quellen zu kompilieren. Die Konfiguration sourceDirs unten ermöglicht es, dass Kotlin- und Java-Dateien im selben Projekt coexistieren:

<plugin>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-plugin</artifactId>
<version>${kotlin.version}</version>
<executions>
<execution>
<id>compile</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<sourceDirs>
<sourceDir>src/main/java</sourceDir>
<sourceDir>target/generated-sources/annotations</sourceDir>
<sourceDir>src/main/kotlin</sourceDir>
</sourceDirs>
</configuration>
</execution>
<execution>
<id>test-compile</id>
<phase>test-compile</phase>
<goals>
<goal>test-compile</goal>
</goals>
<configuration>
<sourceDirs>
<sourceDir>src/test/java</sourceDir>
<sourceDir>target/generated-test-sources/test-annotations</sourceDir>
<sourceDir>src/test/kotlin</sourceDir>
</sourceDirs>
</configuration>
</execution>
</executions>
<configuration>
<jvmTarget>${maven.compiler.target}</jvmTarget>
</configuration>
</plugin>

Mit diesen Ergänzungen kompiliert mvn compile Kotlin-Quellen zusammen mit Java. Kotlin-Dateien können in src/main/kotlin oder src/main/java abgelegt werden, und das Plugin kümmert sich um beides.

Java-Interoperabilität

Kotlin wird in JVM-Bytecode kompiliert, sodass es neben vorhandenem Java-Code funktioniert. Sie können DSL-erstellte Kotlin-Komponenten aus Java-Klassen verwenden, Standard-Java-Komponenten innerhalb der DSL-Blöcke mit add() einfügen und Kotlin- und Java-Dateien im selben Projekt mischen.

Kotlin-Starterprojekt

Wenn Sie die manuelle Einrichtung überspringen möchten, bietet das webforJ Kotlin Starter Repository ein einsatzbereites Projekt mit allen Abhängigkeiten und Plugin-Konfigurationen bereits eingerichtet. Klonen Sie es und beginnen Sie sofort mit dem Bau mit der DSL.

Themen

Die folgenden Themen behandeln die Verwendung der DSL sowie die Erweiterung um benutzerdefinierte Komponenten oder Zusammenstellungen, die Sie erstellen.