Kotlin par l'exemple
Speakers
đź—ş Roadmap
Présentation,
Installation
Exercice
...
Wifi
🤩
Vous avez déjà une connexion internet correcte.
🤬
Sinon utilisez le wifi
Monkey
/
bananaTree
.
Pré-requis - IDE
-
Installation de l'IDE
Android Studio 3.0, Download IntelliJ IDEA -
Configuration éventuelle du plugin Kotlin
Tools | Kotlin | Configure Kotlin Plugin Updates
Pré-requis - Exercices
git clone http://github.com/MonkeyPatchIo/KotlinByExample
-
git checkout {branch}
avec la branche dansexo-mobile
,exo-server
,exo-web
./gradlew clean assemble test
(les tests doivent être en erreurs)- (Optionel) Récupérer la présentation : http://bit.ly/kotlin-lab
Caractéristiques de Kotlin
- Dévoilé en 2011 par JetBrains
- v1.0 en 2016, v1.1 et v1.2 en 2017
- Expressif et pragmatique
- Sûr: statiquement typé, null-safety
- Inspiré par Java, Scala, C#, Groovy, ...
- Abordable, si on vient de Java
- Cross-platform
Cible
JVM et Android
JavaScript
Native avec LLVM
Water Pouring Problem
Tonneau magique
Verres
8 / 8
0 / 6
1 / 4
Remplir
Fill
1 / 4
➡️
4 / 4
Verser
Pour
6 / 8
into
2 / 6
➡️
2 / 8
,
6 / 6
Vider
Empty
3 / 4
➡️
0 / 4
Démo
Pour démarrer
Hello World
fun main(args: Array<String>) {
println("Hello BreizhCamp !")
}
- Utilisez Alt + Shift + (Cmd|Ctrl) + K pour convertir une classe Java en Kotlin
- Ou copiez du code Java dans un fichier Kotlin
Glass
data class Glass(val capacity: Int, val current: Int = 0) {
init {
require(capacity > 0) {
"Capacity: $capacity should be > 0"
}
require(current in 0..capacity) {
"Current: $current should be into [0, $capacity]"
}
}
}
typealias State = List<Glass>
- En écrivant du Kotlin vous aurez plein de
fun
! - Le
typealias
nécessite Kotlin 1.1.
Moves
sealed class Move
data class Empty(val index: Int) : Move()
data class Fill(val index: Int) : Move()
data class Pour(val from: Int, val to: Int) : Move() {
init {
require(from != to)
}
}
- Avec les
sealed
et lesdata class
on peut faire des Abstract Data Class - Le
sealed
nécessite Kotlin 1.1.
Excercices
Choisir son exercice
Serveur avec SpringBoot 2 Implémentation du solveur côté serveur
Android Définition et affichage de la solution sous Android
Navigateur avec KotlinJS Définition et affichage de la solution dans un navigateur
Freestyle Implémenter sans guide
Serveur avec SpringBoot 2
exo-server
Pré-requis
- Java 8
- Un IDE qui marche bien avec Kotlin comme IntelliJ IDEA CE
Exercices
- Exercice 1: les bases
- Exercice 2: un peu plus loin
- Exercice 3: (SpringBoot) injection, routes, reactor, ...
Android
exo-mobile
Pré-requis
- Java 8
- Android Studio 3
- Android SDK 27
Exercices
- Exercice 1: les bases
- Exercice 2: un peu plus loin
- Exercice 3: android
Freestyle
Pré-requis
- Java 6+
- Un IDE qui marche bien avec Kotlin comme IntelliJ IDEA CE
Exercice
- Résoudre le problème du transvasement en Kotlin