SlideShare une entreprise Scribd logo
1  sur  21
© Niji | 2018
MA PREMIERE APP EN KOTLIN :
JE FAIS LE POINT !
BREIZHCAMP 2018
© Niji | 2018
Contexte
… car tout est histoire de contexte
 ESN
 Projets au forfait
 Web
 Android et iOS
 App B2C / B2B
 Apps largement diffusées
 Stack
 Java
 Rx
 Realm
 Anthony Faucogney
 Pas plus d’intérêt que ça pour
Kotlin (au début)
 Challenges
 java : DI, VM
 logiciel : clean- archi
© Niji | 2018
Kotlin c’est quoi ?
… car ce n’est pas si nouveau que ca
 Kotlin est un langage
 Orienté Objet
 Fonctionnel
 Statiquement typé
 Première apparition : 2011 (7 ans et oui)
 Développé en grande partie par JetBrains
 Qui permet de compiler pour la JVM (entre autre)
 Officialisé comme « Best In Class » pour Android pendant Google I/O 2017
 Dernière version : 1.2.31
 Supporté par l’IDE Android Studio (IntelliJ => JetBrains)
 Et...
© Niji | 2018
© Niji | 2018
Kotlin : coup de foudre ?
… ou juste coup d’un soir !
© Niji | 2018
Les fondamentaux ?
… car il faut bien commencer, mais ce n’est pas le but de la prez
Java
Kotlin
Kotlin + court
© Niji | 2018
Apprentissage
… pour un developpeur Android Java
 Plein de docs / tutos
 Même IDE
 Android Studio
 Convert Java File to Kotlin File
 Copy Java / Paste Kotlin
 IDE Help pour faire du re-factoring
 Lint et Sonar avec Defekt
 Kotlin Bytecode
• Decompile in Java
C’est un peu comme
du java en plus simple
L’IDE est ton
ami
Tu comprends
les subtilités de base
Tu comprends
les fonctionnalités
avancées
Merci
Android Studio
© Niji | 2018
Les trucs cools
… car il y en a plein
 Interopérable avec Java
 Les ? et « type safety »
 La librairie standard
 let, apply
 with, run
 takeIf, also, takeUnless…
 L’Api des listes
 map, filter, forEach, mapTo…
 Les objets
 Les extensions
 …
 Mix Java / Kotlin
 Fini les NPE
 Code Light
 0% sucre syntaxique ajouté
 On se croirait en Java 8
 Avec l’Api des Stream
 Le singleton pour tous
 Le Graal
© Niji | 2018
Les Data Class
… il n’y a pas photo, c’est pour vous mettre dans l’ambiance
© Niji | 2018
Des classes et des objets
… sans transition
© Niji | 2018
Avec des `it`, des `?`, et des `?:`
… parce que quelques caractères suffisent
© Niji | 2018
Le lateinit et by lazy {}
… car rien ne sert de courir si on n’y va pas !
© Niji | 2018
Des objets configurables
… c’est tellement plus simple en Kotlin
Toi aussi tu penses aux n façons de démarrer une activité…
© Niji | 2018
Des extensions
… pour ajouter plein de choses ad-hoc
© Niji | 2018
Et Rx dans tout ca ?
… pour ceux qui n’ont pas suivi : c’est l’état du lard sur Android
 Design Pattern
 …. http://reactivex.io/
 Travailler sur des Observables
 Sous la forme de chaines
 Avec pleins d’opérateurs
 Pour traiter les données
 Et de passer rapidement
 Du MainThread (UI)
 A un autre (WS, BDD…)
© Niji | 2018
Donc Rx dans tout ca ?
… car avant Kotlin, Android ne supportait officiellement que java 7
© Niji | 2018
Toujours sur Rx
… alors vous ne voulez toujours pas faire de Kotlin ?
© Niji | 2018
Des extensions aussi en Rx
… pour mieux parler à celui qui relit ton code
© Niji | 2018
Des extensions aussi en Rx
… pour mieux parler à celui qui relit ton code
© Niji | 2018
J’ai quitté Java pour Kotlin, et ca me va bien !
… C’est COOL !, en tout cas pour l’instant
 C’est plus productif : presque tous les
caractères servent à quelque chose
 C’est plus concis :
 relecture aisée
 maintenance plus rapide
 Le risque reste faible
 > 10 collègues Kotliniens sur Cesson
 Possibilités plus vastes et accessibles
 mieux encadrer les usages
 et aussi les pratiques
© Niji | 2018
Questions
?: Discussions
You
?.takeIf{ it is Developer}
?.let{
open(https://carrieres.niji.fr/fr/annonces )
}
?.also {Log.wtf(BREIZCAMP_TAG, ’’Merci’’}

Contenu connexe

Similaire à Breizhcamp 2018 - Ma premiere app en Kotlin : je fais le point !

20131024 qualité de code et sonar - mug lyon
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyonClement Bouillier
 
Demarrer ionic en 5 etape
Demarrer ionic en 5 etapeDemarrer ionic en 5 etape
Demarrer ionic en 5 etapeZaïd BOUDAMOUZ
 
Innover sans contrainte, intégrer sans rupture
Innover sans contrainte, intégrer sans ruptureInnover sans contrainte, intégrer sans rupture
Innover sans contrainte, intégrer sans ruptureGuillaume Laforge
 
Ingénieur étude et développement JAVA JEE.pdf
Ingénieur étude et développement JAVA JEE.pdfIngénieur étude et développement JAVA JEE.pdf
Ingénieur étude et développement JAVA JEE.pdfJEANCLAUDECAMARA
 
Titanium, write in java script, run native everywhere
Titanium, write in java script, run native everywhereTitanium, write in java script, run native everywhere
Titanium, write in java script, run native everywhereAyoub Zamouchi
 
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidementENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidementHoracio Gonzalez
 
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !Horacio Gonzalez
 
Parlons App Economie : du dev à l'usage
Parlons App Economie : du dev à l'usageParlons App Economie : du dev à l'usage
Parlons App Economie : du dev à l'usageLaFrenchMobile
 
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...sebastienmoreno
 
CWIN17 Morocco / Microsoft re-invent .net with the future in mind amine belha...
CWIN17 Morocco / Microsoft re-invent .net with the future in mind amine belha...CWIN17 Morocco / Microsoft re-invent .net with the future in mind amine belha...
CWIN17 Morocco / Microsoft re-invent .net with the future in mind amine belha...Capgemini
 
Etat de l'art Server-Side JavaScript - JS Geneve
Etat de l'art Server-Side JavaScript - JS GeneveEtat de l'art Server-Side JavaScript - JS Geneve
Etat de l'art Server-Side JavaScript - JS GeneveAlexandre Morgaut
 
FinistJUG - J’ai besoin d’une appli web rapidement
FinistJUG -   J’ai besoin d’une appli web rapidementFinistJUG -   J’ai besoin d’une appli web rapidement
FinistJUG - J’ai besoin d’une appli web rapidementHoracio Gonzalez
 
Keynote drupagora 2015 7
Keynote drupagora 2015 7Keynote drupagora 2015 7
Keynote drupagora 2015 7Core-Techs
 
Analyse et optimisation des performances des applications Windows Phone 7.5
Analyse et optimisation des performances des applications Windows Phone 7.5Analyse et optimisation des performances des applications Windows Phone 7.5
Analyse et optimisation des performances des applications Windows Phone 7.5Microsoft
 
.NET Microframework, les joies de l'électronique et du code pour tous
.NET Microframework, les joies de l'électronique et du code pour tous.NET Microframework, les joies de l'électronique et du code pour tous
.NET Microframework, les joies de l'électronique et du code pour tousMicrosoft
 
Petit DéJeuner Industrialisation 13 10 2011 Eurosites
Petit DéJeuner Industrialisation 13 10 2011 EurositesPetit DéJeuner Industrialisation 13 10 2011 Eurosites
Petit DéJeuner Industrialisation 13 10 2011 EurositesHervé Leclerc
 
Software Craftsmanship : en Pratique - AgileTour
Software Craftsmanship : en Pratique - AgileTourSoftware Craftsmanship : en Pratique - AgileTour
Software Craftsmanship : en Pratique - AgileTourJean-Laurent de Morlhon
 

Similaire à Breizhcamp 2018 - Ma premiere app en Kotlin : je fais le point ! (20)

20131024 qualité de code et sonar - mug lyon
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyon
 
Demarrer ionic en 5 etape
Demarrer ionic en 5 etapeDemarrer ionic en 5 etape
Demarrer ionic en 5 etape
 
Innover sans contrainte, intégrer sans rupture
Innover sans contrainte, intégrer sans ruptureInnover sans contrainte, intégrer sans rupture
Innover sans contrainte, intégrer sans rupture
 
Ingénieur étude et développement JAVA JEE.pdf
Ingénieur étude et développement JAVA JEE.pdfIngénieur étude et développement JAVA JEE.pdf
Ingénieur étude et développement JAVA JEE.pdf
 
Titanium, write in java script, run native everywhere
Titanium, write in java script, run native everywhereTitanium, write in java script, run native everywhere
Titanium, write in java script, run native everywhere
 
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidementENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
 
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
 
Parlons App Economie : du dev à l'usage
Parlons App Economie : du dev à l'usageParlons App Economie : du dev à l'usage
Parlons App Economie : du dev à l'usage
 
REX react native
REX react nativeREX react native
REX react native
 
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...
 
Agile et BI
Agile et BIAgile et BI
Agile et BI
 
CWIN17 Morocco / Microsoft re-invent .net with the future in mind amine belha...
CWIN17 Morocco / Microsoft re-invent .net with the future in mind amine belha...CWIN17 Morocco / Microsoft re-invent .net with the future in mind amine belha...
CWIN17 Morocco / Microsoft re-invent .net with the future in mind amine belha...
 
Etat de l'art Server-Side JavaScript - JS Geneve
Etat de l'art Server-Side JavaScript - JS GeneveEtat de l'art Server-Side JavaScript - JS Geneve
Etat de l'art Server-Side JavaScript - JS Geneve
 
FinistJUG - J’ai besoin d’une appli web rapidement
FinistJUG -   J’ai besoin d’une appli web rapidementFinistJUG -   J’ai besoin d’une appli web rapidement
FinistJUG - J’ai besoin d’une appli web rapidement
 
Keynote drupagora 2015 7
Keynote drupagora 2015 7Keynote drupagora 2015 7
Keynote drupagora 2015 7
 
Analyse et optimisation des performances des applications Windows Phone 7.5
Analyse et optimisation des performances des applications Windows Phone 7.5Analyse et optimisation des performances des applications Windows Phone 7.5
Analyse et optimisation des performances des applications Windows Phone 7.5
 
React xp
React xpReact xp
React xp
 
.NET Microframework, les joies de l'électronique et du code pour tous
.NET Microframework, les joies de l'électronique et du code pour tous.NET Microframework, les joies de l'électronique et du code pour tous
.NET Microframework, les joies de l'électronique et du code pour tous
 
Petit DéJeuner Industrialisation 13 10 2011 Eurosites
Petit DéJeuner Industrialisation 13 10 2011 EurositesPetit DéJeuner Industrialisation 13 10 2011 Eurosites
Petit DéJeuner Industrialisation 13 10 2011 Eurosites
 
Software Craftsmanship : en Pratique - AgileTour
Software Craftsmanship : en Pratique - AgileTourSoftware Craftsmanship : en Pratique - AgileTour
Software Craftsmanship : en Pratique - AgileTour
 

Breizhcamp 2018 - Ma premiere app en Kotlin : je fais le point !

  • 1. © Niji | 2018 MA PREMIERE APP EN KOTLIN : JE FAIS LE POINT ! BREIZHCAMP 2018
  • 2. © Niji | 2018 Contexte … car tout est histoire de contexte  ESN  Projets au forfait  Web  Android et iOS  App B2C / B2B  Apps largement diffusées  Stack  Java  Rx  Realm  Anthony Faucogney  Pas plus d’intérêt que ça pour Kotlin (au début)  Challenges  java : DI, VM  logiciel : clean- archi
  • 3. © Niji | 2018 Kotlin c’est quoi ? … car ce n’est pas si nouveau que ca  Kotlin est un langage  Orienté Objet  Fonctionnel  Statiquement typé  Première apparition : 2011 (7 ans et oui)  Développé en grande partie par JetBrains  Qui permet de compiler pour la JVM (entre autre)  Officialisé comme « Best In Class » pour Android pendant Google I/O 2017  Dernière version : 1.2.31  Supporté par l’IDE Android Studio (IntelliJ => JetBrains)  Et...
  • 4. © Niji | 2018
  • 5. © Niji | 2018 Kotlin : coup de foudre ? … ou juste coup d’un soir !
  • 6. © Niji | 2018 Les fondamentaux ? … car il faut bien commencer, mais ce n’est pas le but de la prez Java Kotlin Kotlin + court
  • 7. © Niji | 2018 Apprentissage … pour un developpeur Android Java  Plein de docs / tutos  Même IDE  Android Studio  Convert Java File to Kotlin File  Copy Java / Paste Kotlin  IDE Help pour faire du re-factoring  Lint et Sonar avec Defekt  Kotlin Bytecode • Decompile in Java C’est un peu comme du java en plus simple L’IDE est ton ami Tu comprends les subtilités de base Tu comprends les fonctionnalités avancées Merci Android Studio
  • 8. © Niji | 2018 Les trucs cools … car il y en a plein  Interopérable avec Java  Les ? et « type safety »  La librairie standard  let, apply  with, run  takeIf, also, takeUnless…  L’Api des listes  map, filter, forEach, mapTo…  Les objets  Les extensions  …  Mix Java / Kotlin  Fini les NPE  Code Light  0% sucre syntaxique ajouté  On se croirait en Java 8  Avec l’Api des Stream  Le singleton pour tous  Le Graal
  • 9. © Niji | 2018 Les Data Class … il n’y a pas photo, c’est pour vous mettre dans l’ambiance
  • 10. © Niji | 2018 Des classes et des objets … sans transition
  • 11. © Niji | 2018 Avec des `it`, des `?`, et des `?:` … parce que quelques caractères suffisent
  • 12. © Niji | 2018 Le lateinit et by lazy {} … car rien ne sert de courir si on n’y va pas !
  • 13. © Niji | 2018 Des objets configurables … c’est tellement plus simple en Kotlin Toi aussi tu penses aux n façons de démarrer une activité…
  • 14. © Niji | 2018 Des extensions … pour ajouter plein de choses ad-hoc
  • 15. © Niji | 2018 Et Rx dans tout ca ? … pour ceux qui n’ont pas suivi : c’est l’état du lard sur Android  Design Pattern  …. http://reactivex.io/  Travailler sur des Observables  Sous la forme de chaines  Avec pleins d’opérateurs  Pour traiter les données  Et de passer rapidement  Du MainThread (UI)  A un autre (WS, BDD…)
  • 16. © Niji | 2018 Donc Rx dans tout ca ? … car avant Kotlin, Android ne supportait officiellement que java 7
  • 17. © Niji | 2018 Toujours sur Rx … alors vous ne voulez toujours pas faire de Kotlin ?
  • 18. © Niji | 2018 Des extensions aussi en Rx … pour mieux parler à celui qui relit ton code
  • 19. © Niji | 2018 Des extensions aussi en Rx … pour mieux parler à celui qui relit ton code
  • 20. © Niji | 2018 J’ai quitté Java pour Kotlin, et ca me va bien ! … C’est COOL !, en tout cas pour l’instant  C’est plus productif : presque tous les caractères servent à quelque chose  C’est plus concis :  relecture aisée  maintenance plus rapide  Le risque reste faible  > 10 collègues Kotliniens sur Cesson  Possibilités plus vastes et accessibles  mieux encadrer les usages  et aussi les pratiques
  • 21. © Niji | 2018 Questions ?: Discussions You ?.takeIf{ it is Developer} ?.let{ open(https://carrieres.niji.fr/fr/annonces ) } ?.also {Log.wtf(BREIZCAMP_TAG, ’’Merci’’}