Passer au contenu principal

Kotlin DSL

Ouvrir dans ChatGPT
25.12 Expérimental

webforJ fournit un Kotlin Langage de Spécification de Domaine, ou DSL, qui vous permet de construire des interfaces utilisateur avec une syntaxe concise et sûre pour le typage. Au lieu de code Java impératif, vous écrivez un code déclaratif qui se lit comme une description de la structure de votre interface utilisateur.

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

TextField name = new TextField();
name.setLabel("Nom");
name.setPlaceholder("Votre nom");
layout.add(name);

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

textField("Nom", placeholder = "Votre nom")
button("Soumettre", ButtonTheme.PRIMARY) {
onClick { handleSubmit() }
}
}

Le DSL tire parti des fonctions d'extension Kotlin, des lambdas avec receveurs et des paramètres par défaut pour créer une syntaxe de constructeur naturelle. Les composants s'imbriquent les uns dans les autres, la configuration se fait par blocs, et le compilateur détecte les erreurs structurelles avant l'exécution.

Configuration

Fonctionnalité expérimentale
Cette fonctionnalité est expérimentale et peut changer ou être supprimée dans une future version.

Aucune installation Kotlin séparée n'est requise. Maven gère la compilation via le plugin Maven Kotlin, donc tout projet qui se construit déjà avec Maven peut ajouter le support Kotlin uniquement avec la configuration des dépendances et des plugins.

Démarrage rapide

Pour mettre en place un projet webforJ utilisant Kotlin avec toutes les configurations nécessaires prêtes à l'emploi, consultez cette section sur l'utilisation du starter webforJ Kotlin.

Dépendances

Ajoutez le module DSL Kotlin de webforJ et la bibliothèque standard Kotlin à votre pom.xml :

<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>

Si vous prévoyez d'écrire des tests en Kotlin, ajoutez également la dépendance de test Kotlin. Elle s'intègre avec JUnit :

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

Plugin Maven Kotlin

Ajoutez le plugin Maven Kotlin pour compiler à la fois vos sources Kotlin et Java. La configuration sourceDirs ci-dessous permet aux fichiers Kotlin et Java de coexister dans le même projet :

<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>

Avec ces ajouts, mvn compile compile les sources Kotlin aux côtés de Java. Les fichiers Kotlin peuvent aller dans src/main/kotlin ou src/main/java, et le plugin gère les deux.

Interopérabilité Java

Kotlin compile en bytecode JVM, donc il fonctionne aux côtés du code Java existant. Vous pouvez utiliser des composites Kotlin construits avec DSL depuis des classes Java, imbriquer des composants Java standard à l'intérieur de blocs DSL avec add(), et mélanger des fichiers Kotlin et Java dans le même projet.

Projet starter Kotlin

Si vous préférez sauter la configuration manuelle, le webforJ Kotlin Starter fournit un projet prêt à l'emploi avec toutes les dépendances et la configuration des plugins déjà en place. Clonez-le et commencez à construire avec le DSL tout de suite.

Sujets

Les sujets suivants couvrent l'utilisation du DSL, ainsi que son extension à tous les composants ou composites personnalisés que vous créez.