SlideShare a Scribd company logo
1 of 78
Víctor Bolinches - @vicboma1
Desarrollo Multiplataforma
con Kotlin
2
Víctor Bolinches
Software Architect - Capgemini S.L.
vbolinch@capgemini.com
vicboma1 @vicboma1Victor Bolinches
Mi Perfil
Victor Bolinches
Introducción
Por qué Kotlin ?
Kotlin JVM
Kotlin Android
Kotlin JS
Kotlin Native
Conclusiones
Miscelánea
Referencias
Por qué Kotlin ?
Lenguaje
Oficial de Google
Cross-Platform
Compilaciones
IDE’s
Constructores de proyectos
Click to insert text
Por qué Kotlin ?
Seguro Versatil Interoperable Tool-friendlyLenguaje
estáticamente
tipado
(JVM 100%)
Conciso
Click to insert text
Lenguaje oficial de Google
Click to insert text
Lenguaje Cross-Platform
Click to insert text
Compilaciones
Kotlin/JVM Kotlin/Android Kotlin/Native
[ LLVM bitcode ]
Kotlin/JS
Click to insert text
IDE’s
Eclipse Android StudioIntelliJ Idea Android Studio CLionAppCode
Click to insert text
Constructores de Proyectos
CMakeApache Ant Maven Gradle
Click to insert text
ToolBox App
Kotlin JVM
Básicos
Null Safety,
When, Iteradores,
Functions, Classes,
Properties,
Closures,
Ext Functions,
Coroutine
Proyecto
Hola Mundo
Click to insert text
Básicos - Parte 1
Java
Kotlin
Click to insert text
Básicos - Parte 2
Java
Kotlin
Click to insert text
Iteradores
Java
Kotlin
Click to insert text
When Expression
Java
Kotlin
Click to insert text
Functions
Java
Kotlin
Click to insert text
Clases 1
Java
Kotlin
Click to insert text
Clases 1.1
Kotlin
Click to insert text
Clases 2
Java
Kotlin
Click to insert text
Propiedades
Kotlin
Click to insert text
Closures
Java
Kotlin
Click to insert text
Ext Function
Java
Kotlin
Click to insert text
Coroutine
Kotlin
Job
Continuation<T>
Click to insert text
Coroutine
Kotlin
Blocking
Non Blocking
Click to insert text
Projecto
Click to insert text
Hola Mundo
Kotlin Android
IDE
Configuración
Proyecto
Ejemplos
Click to insert text
IDE
Canary Android Studio
Click to insert text
Configuración
Click to insert text
Configuración - Platform
Click to insert text
Configuración - Tools
Click to insert text
Configuración - Update
Click to insert text
Projecto
Click to insert text
Projecto
Click to insert text
Projecto - Coroutine
Click to insert text
Projecto - Coroutine
Click to insert text
Ejemplos
• Repositorio global - GitHub
• Hello World w/Button *
• WebView
• Transition Activity
• Fragment Manager - Basic
• Fragment Manager w/ Ext Function
• Fragment Manager w/ Ext | High Order | Lambda Functions
• Finite-State machine - Basic
• Finite-State machine w/ color animation transition | Coroutines - Basic
Click to insert text
Hello World w/Button
AndroidManifest.xml
Click to insert text
Hello World w/Button
res/layout/activity_main.xml
Click to insert text
Hello World w/Button
MainActivity.kt
Click to insert text
Hello World w/Button
Kotlin JS
Gradle
Módulos JS
Librerías
DSL Html
Ejemplos
Click to insert text
Gradle
● Build.gradle
○ Kotlin Compiler
■ compileKotlin2Js.kotlinOptions.moduleKind = { “plain”|”amd”|”commonjs”|”udm” }
Click to insert text
Módulos JS
● Plain
● AMD (Asynchronous Module Definition)
○ require.js
● CommonJS
○ node.js/npm
■ require function
■ module.export object
● UMD (Unified Module Definitions)
○ Compatible con AMD & CommonJS
○ Modo Plain en caso de que no se use AMD & CommonJS en runtime
Click to insert text
Librerías
● kotlin.js
○ Single File
○ Compilada como un módulo UMD
○ NPM distribución
■ npm i kotlin
○ kotlin.browser
■ document
■ window
■ localStorage
■ sessionStorage
● kotlinx.html
○ Builder DSL
Click to insert text
Projecto
Click to insert text
Ejemplos
• Repositorio global - GitHub
• Hello World - Console
• Manipulando el DOM *
• Manipulando el window
• Formulario con Builder Html (DSL) *
• Formulario + BootStrap + Popper (DSL) *
Click to insert text
Manipulando el DOM
index.html
Click to insert text
Manipulando el DOM
main.kt
Click to insert text
Manipulando el DOM
Click to insert text
Formulario html
Click to insert text
DSL Hmtl
Click to insert text
Formulario Bootstrap
Header
Body
Footer
Kotlin NativeConfiguración
Proyecto
Ejemplo
Click to insert text
Configuración
Click to insert text
Configuración
Click to insert text
Proyecto
Click to insert text
Ejemplo
○ Repositorio global - GitHub
○ Hello World - Console Async *
■ Interoperabilidad
● Kotlin - Swift
● Thread (Posix)
Click to insert text
Ejemplo - Console Async
Click to insert text
Ejemplo
Click to insert text
Ejemplo
Click to insert text
Ejemplo
Click to insert text
Ejemplo - Login
Click to insert text
Ejemplo
Conclusion
Click to insert text
Conclusiones
• Interoperable con Java (100%)
• Reducción del Boilerplate code
• Permite añadir extensiones de código
• Orientado a objetos y procedimientos
• Sin punto y coma final en cada línea
• Posibilidad de boxing code
• Ayuda a expandir nuestras habilidades
• Soporte perfecto - JetBrains
• Fácil manejo para empezar - Android Develop | Intellij Idea
• Compatibilidad con todas las plataformas
Click to insert text
Conclusiones
Aumenta la semántica de tu código con
menos sintaxis
Click to insert text
Conclusiones
Unifica tu stack tecnológico
Click to insert text
Conclusiones
Lenguaje cross-platform
Miscelánea
Getting Started Kotlin
Kotlin Koans
Problems Kotlin
GameBoy Emulator Environment
Anko
Click to insert text
Getting Started Kotlin
Repository
Click to insert text
Kotlin Koans
Repository
Click to insert text
Problems Kotlin
Repository
Click to insert text
GameBoy Emulator
Environment
Repository
Referencias
Click to insert text
● https://github.com/vicboma1
● https://github.com/vicboma1/Kotlin-Koans
● https://github.com/vicboma1/GettingStartedKotlin
● https://github.com/vicboma1/Kotlin-Examples-Problems/
● https://github.com/vicboma1/GameBoyEmulatorEnvironment
● https://github.com/MindorksOpenSource/from-java-to-kotlin
● https://kotlin.es/
● https://www.upwork.com/hiring/for-clients/kotlin-might-replace-java/
● https://gradle.org/docs/
● https://developer.android.com/studio/
● https://github.com/futurice/android-best-practices
● https://kotlinlang.org/docs/reference/native-overview.html
● https://kotlinlang.org/docs/reference/js-overview.html
● https://github.com/Kotlin/anko
● https://github.com/JetBrains/kotlin-native
● https://github.com/JetBrains/kotlin-native/tree/master/samples
● https://bintray.com/kotlin/kotlinx.html/kotlinx.html/0.6.10#read
Referencias
With more than 190,000 people, Capgemini is present in over 40
countries and celebrates its 50th Anniversary year in 2017. A
global leader in consulting, technology and outsourcing services,
the Group reported 2016 global revenues of EUR 12.5 billion.
Together with its clients, Capgemini creates and delivers
business, technology and digital solutions that fit their needs,
enabling them to achieve innovation and competitiveness. A
deeply multicultural organization, Capgemini has developed its
own way of working, the Collaborative Business Experience™, and
draws on Rightshore®, its worldwide delivery model.
About Capgemini
Learn more about us at
www.capgemini.
com
This message contains information that may be privileged or
confidential and is the property of the Capgemini Group.
Copyright © 2017 Capgemini. All rights reserved.
Rightshore® is a trademark belonging to Capgemini.
This message is intended only for the person to whom it is addressed. If you are not the intended
recipient, you are not authorized to read, print, retain, copy, disseminate, distribute, or use this
message or any part thereof. If you receive this message in error, please notify the sender
immediately and delete all copies of this message.

More Related Content

What's hot

Is this Swift for Android? A short introduction to the Kotlin language
Is this Swift for Android? A short introduction to the Kotlin languageIs this Swift for Android? A short introduction to the Kotlin language
Is this Swift for Android? A short introduction to the Kotlin languageAntonis Lilis
 
Intro to Crystal Programming Language
Intro to Crystal Programming LanguageIntro to Crystal Programming Language
Intro to Crystal Programming LanguageAdler Hsieh
 
A brief intro to RubyMotion
A brief intro to RubyMotionA brief intro to RubyMotion
A brief intro to RubyMotionKamil Lelonek
 
Golang #5: To Go or not to Go
Golang #5: To Go or not to GoGolang #5: To Go or not to Go
Golang #5: To Go or not to GoOliver N
 
Why you should care about Go (Golang)
Why you should care about Go (Golang)Why you should care about Go (Golang)
Why you should care about Go (Golang)Aaron Schlesinger
 
Jfokus - Rocket Propelled Java
Jfokus - Rocket Propelled JavaJfokus - Rocket Propelled Java
Jfokus - Rocket Propelled JavaAndres Almiray
 
Php[tek] 2016 - BDD with Behat for Beginners
Php[tek] 2016 - BDD with Behat for BeginnersPhp[tek] 2016 - BDD with Behat for Beginners
Php[tek] 2016 - BDD with Behat for BeginnersAdam Englander
 
JAZOON'13 - Andres Almiray - Rocket Propelled Java
JAZOON'13 - Andres Almiray - Rocket Propelled JavaJAZOON'13 - Andres Almiray - Rocket Propelled Java
JAZOON'13 - Andres Almiray - Rocket Propelled Javajazoon13
 
The Go programming language - Intro by MyLittleAdventure
The Go programming language - Intro by MyLittleAdventureThe Go programming language - Intro by MyLittleAdventure
The Go programming language - Intro by MyLittleAdventuremylittleadventure
 
What's new with Kotlin - Google IO18' extended Covenant University.
What's new with Kotlin - Google IO18' extended Covenant University.What's new with Kotlin - Google IO18' extended Covenant University.
What's new with Kotlin - Google IO18' extended Covenant University.SimileoluwaAluko
 

What's hot (20)

Kotlin & Swift
Kotlin & SwiftKotlin & Swift
Kotlin & Swift
 
Is this Swift for Android? A short introduction to the Kotlin language
Is this Swift for Android? A short introduction to the Kotlin languageIs this Swift for Android? A short introduction to the Kotlin language
Is this Swift for Android? A short introduction to the Kotlin language
 
Kotlin tech talk
Kotlin tech talkKotlin tech talk
Kotlin tech talk
 
Kotlin introduction
Kotlin introductionKotlin introduction
Kotlin introduction
 
Intro to Crystal Programming Language
Intro to Crystal Programming LanguageIntro to Crystal Programming Language
Intro to Crystal Programming Language
 
A brief intro to RubyMotion
A brief intro to RubyMotionA brief intro to RubyMotion
A brief intro to RubyMotion
 
Go lang
Go langGo lang
Go lang
 
Why golang
Why golangWhy golang
Why golang
 
Golang #5: To Go or not to Go
Golang #5: To Go or not to GoGolang #5: To Go or not to Go
Golang #5: To Go or not to Go
 
Why you should care about Go (Golang)
Why you should care about Go (Golang)Why you should care about Go (Golang)
Why you should care about Go (Golang)
 
Jfokus - Rocket Propelled Java
Jfokus - Rocket Propelled JavaJfokus - Rocket Propelled Java
Jfokus - Rocket Propelled Java
 
Php[tek] 2016 - BDD with Behat for Beginners
Php[tek] 2016 - BDD with Behat for BeginnersPhp[tek] 2016 - BDD with Behat for Beginners
Php[tek] 2016 - BDD with Behat for Beginners
 
JAZOON'13 - Andres Almiray - Rocket Propelled Java
JAZOON'13 - Andres Almiray - Rocket Propelled JavaJAZOON'13 - Andres Almiray - Rocket Propelled Java
JAZOON'13 - Andres Almiray - Rocket Propelled Java
 
GoLang Introduction
GoLang IntroductionGoLang Introduction
GoLang Introduction
 
Slides kotlin yajug
Slides kotlin yajugSlides kotlin yajug
Slides kotlin yajug
 
The Go programming language - Intro by MyLittleAdventure
The Go programming language - Intro by MyLittleAdventureThe Go programming language - Intro by MyLittleAdventure
The Go programming language - Intro by MyLittleAdventure
 
BDD in PHP - Behat
BDD in PHP - BehatBDD in PHP - Behat
BDD in PHP - Behat
 
Crystal
CrystalCrystal
Crystal
 
What's new with Kotlin - Google IO18' extended Covenant University.
What's new with Kotlin - Google IO18' extended Covenant University.What's new with Kotlin - Google IO18' extended Covenant University.
What's new with Kotlin - Google IO18' extended Covenant University.
 
Intro to Kotlin
Intro to KotlinIntro to Kotlin
Intro to Kotlin
 

Similar to Desarrollo multiplataforma con kotlin | UPV 2018

Say Goodbye To Java: Getting Started With Kotlin For Android Development
Say Goodbye To Java: Getting Started With Kotlin For Android DevelopmentSay Goodbye To Java: Getting Started With Kotlin For Android Development
Say Goodbye To Java: Getting Started With Kotlin For Android DevelopmentAdam Magaña
 
Creating a reasonable project boilerplate
Creating a reasonable project boilerplateCreating a reasonable project boilerplate
Creating a reasonable project boilerplateStanislav Petrov
 
Kotlin for android development
Kotlin for android developmentKotlin for android development
Kotlin for android developmentJalpesh Vasa
 
Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019
Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019
Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019UA Mobile
 
Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019
Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019
Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019Eugene Kurko
 
Oh the compilers you'll build
Oh the compilers you'll buildOh the compilers you'll build
Oh the compilers you'll buildMark Stoodley
 
Kotlin The Whole Damn Family
Kotlin The Whole Damn FamilyKotlin The Whole Damn Family
Kotlin The Whole Damn FamilyGarth Gilmour
 
How to contribute textual tooling for apache camel in several id es
How to contribute textual tooling for apache camel in several id esHow to contribute textual tooling for apache camel in several id es
How to contribute textual tooling for apache camel in several id esAurélien Pupier
 
Ci of js and apex using jasmine, phantom js and drone io df14
Ci of js and apex using jasmine, phantom js and drone io   df14Ci of js and apex using jasmine, phantom js and drone io   df14
Ci of js and apex using jasmine, phantom js and drone io df14Kevin Poorman
 
Why to Choose Kotlin in 2023 to Build Mobile Apps Faster?
Why to Choose Kotlin in 2023 to Build Mobile Apps Faster?Why to Choose Kotlin in 2023 to Build Mobile Apps Faster?
Why to Choose Kotlin in 2023 to Build Mobile Apps Faster?9 series
 
orlando-codecamp-meet-copilot-24-Feb-2024_pub.pptx
orlando-codecamp-meet-copilot-24-Feb-2024_pub.pptxorlando-codecamp-meet-copilot-24-Feb-2024_pub.pptx
orlando-codecamp-meet-copilot-24-Feb-2024_pub.pptxBill Wilder
 
Cross platform development
Cross platform developmentCross platform development
Cross platform developmentEvolve
 
Anko - The Ultimate Ninja of Kotlin Libraries?
Anko - The Ultimate Ninja of Kotlin Libraries?Anko - The Ultimate Ninja of Kotlin Libraries?
Anko - The Ultimate Ninja of Kotlin Libraries?Kai Koenig
 
Kotlin native for iOS and Android
Kotlin native for iOS and AndroidKotlin native for iOS and Android
Kotlin native for iOS and AndroidShady Selim
 
Kotlin for Android
Kotlin for AndroidKotlin for Android
Kotlin for AndroidHan Yin
 
Odo improving the developer experience on OpenShift - hack &amp; sangria
Odo   improving the developer experience on OpenShift - hack &amp; sangriaOdo   improving the developer experience on OpenShift - hack &amp; sangria
Odo improving the developer experience on OpenShift - hack &amp; sangriaJorge Morales
 
What is Kotlin Multiplaform? Why & How?
What is Kotlin Multiplaform? Why & How? What is Kotlin Multiplaform? Why & How?
What is Kotlin Multiplaform? Why & How? Shady Selim
 
Desktop apps with node webkit
Desktop apps with node webkitDesktop apps with node webkit
Desktop apps with node webkitPaul Jensen
 

Similar to Desarrollo multiplataforma con kotlin | UPV 2018 (20)

Say Goodbye To Java: Getting Started With Kotlin For Android Development
Say Goodbye To Java: Getting Started With Kotlin For Android DevelopmentSay Goodbye To Java: Getting Started With Kotlin For Android Development
Say Goodbye To Java: Getting Started With Kotlin For Android Development
 
Creating a reasonable project boilerplate
Creating a reasonable project boilerplateCreating a reasonable project boilerplate
Creating a reasonable project boilerplate
 
Kotlin for android development
Kotlin for android developmentKotlin for android development
Kotlin for android development
 
Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019
Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019
Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019
 
Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019
Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019
Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019
 
Oh the compilers you'll build
Oh the compilers you'll buildOh the compilers you'll build
Oh the compilers you'll build
 
Kotlin The Whole Damn Family
Kotlin The Whole Damn FamilyKotlin The Whole Damn Family
Kotlin The Whole Damn Family
 
How to contribute textual tooling for apache camel in several id es
How to contribute textual tooling for apache camel in several id esHow to contribute textual tooling for apache camel in several id es
How to contribute textual tooling for apache camel in several id es
 
Ci of js and apex using jasmine, phantom js and drone io df14
Ci of js and apex using jasmine, phantom js and drone io   df14Ci of js and apex using jasmine, phantom js and drone io   df14
Ci of js and apex using jasmine, phantom js and drone io df14
 
Why to Choose Kotlin in 2023 to Build Mobile Apps Faster?
Why to Choose Kotlin in 2023 to Build Mobile Apps Faster?Why to Choose Kotlin in 2023 to Build Mobile Apps Faster?
Why to Choose Kotlin in 2023 to Build Mobile Apps Faster?
 
orlando-codecamp-meet-copilot-24-Feb-2024_pub.pptx
orlando-codecamp-meet-copilot-24-Feb-2024_pub.pptxorlando-codecamp-meet-copilot-24-Feb-2024_pub.pptx
orlando-codecamp-meet-copilot-24-Feb-2024_pub.pptx
 
Cross platform development
Cross platform developmentCross platform development
Cross platform development
 
Es build presentation
Es build presentationEs build presentation
Es build presentation
 
Titanium #MDS13
Titanium #MDS13Titanium #MDS13
Titanium #MDS13
 
Anko - The Ultimate Ninja of Kotlin Libraries?
Anko - The Ultimate Ninja of Kotlin Libraries?Anko - The Ultimate Ninja of Kotlin Libraries?
Anko - The Ultimate Ninja of Kotlin Libraries?
 
Kotlin native for iOS and Android
Kotlin native for iOS and AndroidKotlin native for iOS and Android
Kotlin native for iOS and Android
 
Kotlin for Android
Kotlin for AndroidKotlin for Android
Kotlin for Android
 
Odo improving the developer experience on OpenShift - hack &amp; sangria
Odo   improving the developer experience on OpenShift - hack &amp; sangriaOdo   improving the developer experience on OpenShift - hack &amp; sangria
Odo improving the developer experience on OpenShift - hack &amp; sangria
 
What is Kotlin Multiplaform? Why & How?
What is Kotlin Multiplaform? Why & How? What is Kotlin Multiplaform? Why & How?
What is Kotlin Multiplaform? Why & How?
 
Desktop apps with node webkit
Desktop apps with node webkitDesktop apps with node webkit
Desktop apps with node webkit
 

More from Víctor Bolinches

An Introduction to Kotlin for Android Development
An Introduction to Kotlin for Android DevelopmentAn Introduction to Kotlin for Android Development
An Introduction to Kotlin for Android DevelopmentVíctor Bolinches
 
Paradigma FP y OOP usando técnicas avanzadas de Programación | Programacion A...
Paradigma FP y OOP usando técnicas avanzadas de Programación | Programacion A...Paradigma FP y OOP usando técnicas avanzadas de Programación | Programacion A...
Paradigma FP y OOP usando técnicas avanzadas de Programación | Programacion A...Víctor Bolinches
 
Programación Funcional y Orientada a Objetos con Asincronismos
Programación Funcional y Orientada a Objetos con AsincronismosProgramación Funcional y Orientada a Objetos con Asincronismos
Programación Funcional y Orientada a Objetos con AsincronismosVíctor Bolinches
 
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAPARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAVíctor Bolinches
 
Técnicas avanzadas de programación Asíncrona - 2017
Técnicas avanzadas de programación Asíncrona - 2017Técnicas avanzadas de programación Asíncrona - 2017
Técnicas avanzadas de programación Asíncrona - 2017Víctor Bolinches
 

More from Víctor Bolinches (6)

An Introduction to Kotlin for Android Development
An Introduction to Kotlin for Android DevelopmentAn Introduction to Kotlin for Android Development
An Introduction to Kotlin for Android Development
 
Paradigma FP y OOP usando técnicas avanzadas de Programación | Programacion A...
Paradigma FP y OOP usando técnicas avanzadas de Programación | Programacion A...Paradigma FP y OOP usando técnicas avanzadas de Programación | Programacion A...
Paradigma FP y OOP usando técnicas avanzadas de Programación | Programacion A...
 
Kotlin v1.1.2
Kotlin v1.1.2 Kotlin v1.1.2
Kotlin v1.1.2
 
Programación Funcional y Orientada a Objetos con Asincronismos
Programación Funcional y Orientada a Objetos con AsincronismosProgramación Funcional y Orientada a Objetos con Asincronismos
Programación Funcional y Orientada a Objetos con Asincronismos
 
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAPARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
 
Técnicas avanzadas de programación Asíncrona - 2017
Técnicas avanzadas de programación Asíncrona - 2017Técnicas avanzadas de programación Asíncrona - 2017
Técnicas avanzadas de programación Asíncrona - 2017
 

Recently uploaded

Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceanilsa9823
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 

Recently uploaded (20)

Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 

Desarrollo multiplataforma con kotlin | UPV 2018

  • 1. Víctor Bolinches - @vicboma1 Desarrollo Multiplataforma con Kotlin
  • 2. 2 Víctor Bolinches Software Architect - Capgemini S.L. vbolinch@capgemini.com vicboma1 @vicboma1Victor Bolinches Mi Perfil Victor Bolinches
  • 3. Introducción Por qué Kotlin ? Kotlin JVM Kotlin Android Kotlin JS Kotlin Native Conclusiones Miscelánea Referencias
  • 4. Por qué Kotlin ? Lenguaje Oficial de Google Cross-Platform Compilaciones IDE’s Constructores de proyectos
  • 5. Click to insert text Por qué Kotlin ? Seguro Versatil Interoperable Tool-friendlyLenguaje estáticamente tipado (JVM 100%) Conciso
  • 6. Click to insert text Lenguaje oficial de Google
  • 7. Click to insert text Lenguaje Cross-Platform
  • 8. Click to insert text Compilaciones Kotlin/JVM Kotlin/Android Kotlin/Native [ LLVM bitcode ] Kotlin/JS
  • 9. Click to insert text IDE’s Eclipse Android StudioIntelliJ Idea Android Studio CLionAppCode
  • 10. Click to insert text Constructores de Proyectos CMakeApache Ant Maven Gradle
  • 11. Click to insert text ToolBox App
  • 12. Kotlin JVM Básicos Null Safety, When, Iteradores, Functions, Classes, Properties, Closures, Ext Functions, Coroutine Proyecto Hola Mundo
  • 13. Click to insert text Básicos - Parte 1 Java Kotlin
  • 14. Click to insert text Básicos - Parte 2 Java Kotlin
  • 15. Click to insert text Iteradores Java Kotlin
  • 16. Click to insert text When Expression Java Kotlin
  • 17. Click to insert text Functions Java Kotlin
  • 18. Click to insert text Clases 1 Java Kotlin
  • 19. Click to insert text Clases 1.1 Kotlin
  • 20. Click to insert text Clases 2 Java Kotlin
  • 21. Click to insert text Propiedades Kotlin
  • 22. Click to insert text Closures Java Kotlin
  • 23. Click to insert text Ext Function Java Kotlin
  • 24. Click to insert text Coroutine Kotlin Job Continuation<T>
  • 25. Click to insert text Coroutine Kotlin Blocking Non Blocking
  • 26. Click to insert text Projecto
  • 27. Click to insert text Hola Mundo
  • 29. Click to insert text IDE Canary Android Studio
  • 30. Click to insert text Configuración
  • 31. Click to insert text Configuración - Platform
  • 32. Click to insert text Configuración - Tools
  • 33. Click to insert text Configuración - Update
  • 34. Click to insert text Projecto
  • 35. Click to insert text Projecto
  • 36. Click to insert text Projecto - Coroutine
  • 37. Click to insert text Projecto - Coroutine
  • 38. Click to insert text Ejemplos • Repositorio global - GitHub • Hello World w/Button * • WebView • Transition Activity • Fragment Manager - Basic • Fragment Manager w/ Ext Function • Fragment Manager w/ Ext | High Order | Lambda Functions • Finite-State machine - Basic • Finite-State machine w/ color animation transition | Coroutines - Basic
  • 39. Click to insert text Hello World w/Button AndroidManifest.xml
  • 40. Click to insert text Hello World w/Button res/layout/activity_main.xml
  • 41. Click to insert text Hello World w/Button MainActivity.kt
  • 42. Click to insert text Hello World w/Button
  • 44. Click to insert text Gradle ● Build.gradle ○ Kotlin Compiler ■ compileKotlin2Js.kotlinOptions.moduleKind = { “plain”|”amd”|”commonjs”|”udm” }
  • 45. Click to insert text Módulos JS ● Plain ● AMD (Asynchronous Module Definition) ○ require.js ● CommonJS ○ node.js/npm ■ require function ■ module.export object ● UMD (Unified Module Definitions) ○ Compatible con AMD & CommonJS ○ Modo Plain en caso de que no se use AMD & CommonJS en runtime
  • 46. Click to insert text Librerías ● kotlin.js ○ Single File ○ Compilada como un módulo UMD ○ NPM distribución ■ npm i kotlin ○ kotlin.browser ■ document ■ window ■ localStorage ■ sessionStorage ● kotlinx.html ○ Builder DSL
  • 47. Click to insert text Projecto
  • 48. Click to insert text Ejemplos • Repositorio global - GitHub • Hello World - Console • Manipulando el DOM * • Manipulando el window • Formulario con Builder Html (DSL) * • Formulario + BootStrap + Popper (DSL) *
  • 49. Click to insert text Manipulando el DOM index.html
  • 50. Click to insert text Manipulando el DOM main.kt
  • 51. Click to insert text Manipulando el DOM
  • 52. Click to insert text Formulario html
  • 53. Click to insert text DSL Hmtl
  • 54. Click to insert text Formulario Bootstrap Header Body Footer
  • 56. Click to insert text Configuración
  • 57. Click to insert text Configuración
  • 58. Click to insert text Proyecto
  • 59. Click to insert text Ejemplo ○ Repositorio global - GitHub ○ Hello World - Console Async * ■ Interoperabilidad ● Kotlin - Swift ● Thread (Posix)
  • 60. Click to insert text Ejemplo - Console Async
  • 61. Click to insert text Ejemplo
  • 62. Click to insert text Ejemplo
  • 63. Click to insert text Ejemplo
  • 64. Click to insert text Ejemplo - Login
  • 65. Click to insert text Ejemplo
  • 67. Click to insert text Conclusiones • Interoperable con Java (100%) • Reducción del Boilerplate code • Permite añadir extensiones de código • Orientado a objetos y procedimientos • Sin punto y coma final en cada línea • Posibilidad de boxing code • Ayuda a expandir nuestras habilidades • Soporte perfecto - JetBrains • Fácil manejo para empezar - Android Develop | Intellij Idea • Compatibilidad con todas las plataformas
  • 68. Click to insert text Conclusiones Aumenta la semántica de tu código con menos sintaxis
  • 69. Click to insert text Conclusiones Unifica tu stack tecnológico
  • 70. Click to insert text Conclusiones Lenguaje cross-platform
  • 71. Miscelánea Getting Started Kotlin Kotlin Koans Problems Kotlin GameBoy Emulator Environment Anko
  • 72. Click to insert text Getting Started Kotlin Repository
  • 73. Click to insert text Kotlin Koans Repository
  • 74. Click to insert text Problems Kotlin Repository
  • 75. Click to insert text GameBoy Emulator Environment Repository
  • 77. Click to insert text ● https://github.com/vicboma1 ● https://github.com/vicboma1/Kotlin-Koans ● https://github.com/vicboma1/GettingStartedKotlin ● https://github.com/vicboma1/Kotlin-Examples-Problems/ ● https://github.com/vicboma1/GameBoyEmulatorEnvironment ● https://github.com/MindorksOpenSource/from-java-to-kotlin ● https://kotlin.es/ ● https://www.upwork.com/hiring/for-clients/kotlin-might-replace-java/ ● https://gradle.org/docs/ ● https://developer.android.com/studio/ ● https://github.com/futurice/android-best-practices ● https://kotlinlang.org/docs/reference/native-overview.html ● https://kotlinlang.org/docs/reference/js-overview.html ● https://github.com/Kotlin/anko ● https://github.com/JetBrains/kotlin-native ● https://github.com/JetBrains/kotlin-native/tree/master/samples ● https://bintray.com/kotlin/kotlinx.html/kotlinx.html/0.6.10#read Referencias
  • 78. With more than 190,000 people, Capgemini is present in over 40 countries and celebrates its 50th Anniversary year in 2017. A global leader in consulting, technology and outsourcing services, the Group reported 2016 global revenues of EUR 12.5 billion. Together with its clients, Capgemini creates and delivers business, technology and digital solutions that fit their needs, enabling them to achieve innovation and competitiveness. A deeply multicultural organization, Capgemini has developed its own way of working, the Collaborative Business Experience™, and draws on Rightshore®, its worldwide delivery model. About Capgemini Learn more about us at www.capgemini. com This message contains information that may be privileged or confidential and is the property of the Capgemini Group. Copyright © 2017 Capgemini. All rights reserved. Rightshore® is a trademark belonging to Capgemini. This message is intended only for the person to whom it is addressed. If you are not the intended recipient, you are not authorized to read, print, retain, copy, disseminate, distribute, or use this message or any part thereof. If you receive this message in error, please notify the sender immediately and delete all copies of this message.