Kotlin DSL
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.
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);
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
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.
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.
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.
📄️ Using the DSL
La DSL Kotlin fournit des fonctions de construction pour les composants webforJ. Chaque fonction crée un composant, l'ajoute à un conteneur parent et exécute un bloc de configuration. Cette page couvre les motifs et conventions que vous utiliserez lors de la construction d'interfaces utilisateur avec la DSL.
📄️ Extending the DSL
Le Kotlin DSL est extensible, permettant l'ajout de fonctions DSL pour des composants personnalisés ou des bibliothèques tierces. Vous pouvez créer des composants composites qui utilisent le DSL en interne.