Payments to grow your world
Kotlin
pour le
développement
backend
Ch’ti Jug
8 avril 2024
- 1
Slide 2
Slide 2 text
Get in touch:
@yostane
benabbasyassine
Yassine Benabbas
DevRel – Worldline
yassine.benabbas@worldline.com
Membre du LAUG
Enseignant en programmation
- 2
- 6
What do you use Kotlin for? The State of Developer Ecosystem in 2023
https://www.jetbrains.com/lp/devecosystem-2023/kotlin/
📈+3%
Slide 7
Slide 7 text
- 7
Forces de Kotlin
Frontend, backend, data
science, …
Fullstack
JVM, iOS, Android,
JavaScript, WASM
Mutiplatformes Actif
Community, frameworks,…
kotlinfoundation.org
OSS: apache 2
Amusant et intéressant
Moderne
Slide 8
Slide 8 text
Une panoplie de frameworks
- 8
Qu’en est-il du backend ?
JVM
Pure Kotlin
Kotlin/JS -
WASM
…
…
…
Slide 9
Slide 9 text
Caractéristiques
du langage
- 9
Slide 10
Slide 10 text
- 10
Langage concis
Slide 11
Slide 11 text
- 11
Slide 12
Slide 12 text
- 12
Slide 13
Slide 13 text
- 13
Slide 14
Slide 14 text
Null safety
Est-il possible de détecter à la compilation ?
- 14
Slide 15
Slide 15 text
Détection à la compilation
Null safety avec Kotlin
• Intégré à Kotlin
• Erreur de compilation
- 15
Slide 16
Slide 16 text
Null safety en Java
• Fourni par l’IDE (et non côté Java)
• Avertissement et non une erreur
- 16
Slide 17
Slide 17 text
- 17
Fonction d’extension et DSL
Slide 18
Slide 18 text
Int.() signifie que la lambda est une extension de Int (donc this correspond à un Int dans la lambda)
La lambda qu’on passe est appelée une Function literal with receiver
- 18
Fonction d’extension et DSL
Slide 19
Slide 19 text
- 19
Gradle Kotlin DSL
Slide 20
Slide 20 text
- 20
Coroutines: programmation concurrente
Slide 21
Slide 21 text
- 21
Slide 22
Slide 22 text
• Kotlin et Java peuvent s’appeler entre-eux sein d’un même projet
• Avec IntelliJ: possibilité de copier/coller de code java dans un fichier Kotlin
- 22
Interopérabilité Kotlin-Java
Slide 23
Slide 23 text
youtrack.jetbrains.com/issue/KT-43871
- 23
Nouvelle fonctionnalité: collections littérales
Slide 24
Slide 24 text
Explicit backing field Array Literals
guards Infinite loop
github.com/Kotlin/KEEP
x.com/kotlin
Multi-field value classes
Context parameters
Kotlin statics and static extensions
HexFormat
Et plein d’autres propositions
Slide 25
Slide 25 text
• Typage statique et implicite
• Null safety à la compilation
• Interopérable avec Java
• Classe en une ligne
• Extensions: Enrichir des classes sans héritage
• DSL: Domain Specific Language
• Programmation fonctionnelle plus riche
• Compatible avec la JMV ainsi que d’autres cibles
• Différences entre Kotlin et Java
- 25
Résumé des caractéristiques
Slide 26
Slide 26 text
Exemples (sur du dev
backend)
- 26
Slide 27
Slide 27 text
En mode fonctionnel (fonction en une ligne, DSL, it, map natif)
- 27
JAX-RS avec Quarkus
Slide 28
Slide 28 text
Equivalent avec du code impératif
- 28
JAX-RS avec Quarkus
Slide 29
Slide 29 text
DSL de test + nommage des fonctions avec des phrases
- 29
DSL restassured
Slide 30
Slide 30 text
- 30
Spring mockMvc DSL
API standard DSL Kotlin
Slide 31
Slide 31 text
Libraire pour générer des SPA en Java et Kotlin
- 31
Vaadin + Karibu Kotlin DSL
Slide 32
Slide 32 text
Extension method, DSL, elvis operator, last lambda can be put outside of ()
- 32
Ktor route
Slide 33
Slide 33 text
Foncion infixe
- 33
http4k
Slide 34
Slide 34 text
En Kotlin
- 34
ExpressJS
Slide 35
Slide 35 text
https://kotlinlang.org/lp/server-side/case-studies
- 35
Etudes de cas
Slide 36
Slide 36 text
Conclusion
- 36
Slide 37
Slide 37 text
• Langage puissant
• Multiplateformes (Mobile, web, bureau, …)
• Interopérable avec Java
• Compatibilité avec les frameworks JVM
• Support officiel de Quarkus et Spring + fonctionnalités exclusives (DSL)
• Scripts Gradle en Kotlin
- 37
Pourquoi développer son backend en Kotlin