Slide 1

Slide 1 text

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

Slide 3

Slide 3 text

Introduction - 3 Concis. Multi-plateformes. Amusant.

Slide 4

Slide 4 text

- 4 Source: https://github.blog/2023-11-08-the-state-of-open-source-and-ai

Slide 5

Slide 5 text

- 5

Slide 6

Slide 6 text

- 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

Slide 38

Slide 38 text

Contact: Yassine Benabbas Merci de votre attention Questions ? Formation Kotlin (Préparée avec Gharbi Ibrahim) https://worldline.github.io/learning-kotlin/ https://worldline.github.io/learning-kotlin-mutiplatform @yostane - in/benabbasyassine - 38