SlideShare a Scribd company logo
1 of 16
Download to read offline
Kotlin Multiplataforma
Respondendo as principais dúvidas sobre essa tecnologia
que promete permitir o compartilhamento da lógica de
negócios para seus aplicativos iOS, Android, Web e Desktop
Quem sou eu
💼 Empreendedor
💻 Engenheiro de Software
♿ Cadeirante
📖 Autor do livro A liderança técnica
leanpub.com/querserlidertecnico
Como e onde eu uso KMP
Principais dúvidas
● O que é e pra que serve KMP?
● Quais diferenças de KMP para Flutter e React Native?
● Como ficaria a estrutura do meu projeto?
● Quais partes do meu projeto eu devo migrar para KMP?
● Qual é a quantia média de código compartilhado e específico por plataforma?
● Como empacotar KMP como bibliotecas iOS e Android?
● Como fazer para integrar KMP com código específico de cada plataforma?
● Qual o impacto no tamanho dos binários finais de apps que possuem partes em KMP?
● Como testar? Preciso de testes para cada plataforma?
● Quais são os principais benefícios do uso de KMP?
● Swift interop pode vir a matar o KMP?
● [Outras perguntas feitas por vocês]
Principais dúvidas
O que é e pra que serve KMP?
O Kotlin Multiplatform é um framework que permite que você
use uma única base de código para a lógica de negócios de
aplicativos iOS e Android. Você só precisa escrever o código
específico da plataforma onde for necessário, por exemplo,
para implementar uma UI nativa ou ao trabalhar com APIs
específicas da plataforma.
Principais dúvidas
Quais diferenças de KMP para Flutter e React Native?
Interface do Usuário
O Flutter usa o canvas do SDK nativo de diferentes plataformas e desenha seu próprio
componente da IU nesse canvas usando o material design ou as especificações
Cupertino. O React Native usa componentes nativos mapeados para o código JS e, no
KMM, temos que escrever o código da IU nativo separadamente para Android e IOS.
Lógica de negócios
Em Flutter, React Native e lógica de negócios KMM é comum, mas escrita em
diferentes linguagens Dart, JS e Kotlin, respectivamente.
Arquitetura em camadas
KMM tem a arquitetura que separa a IU e a lógica de negócios por padrão.
Interoperabilidade
Kotlin pode interagir com Java e outras linguagens também. Mas no caso do Flutter,
temos que nos ater apenas ao Dart e o React Native, apenas ao JS.
Nativo fácil de usar
No KMM é muito fácil escrever código nativo em qualquer nível de codificação e em
qualquer camada da arquitetura.
Integração com projetos existentes
KMM tem o poder de se integrar a qualquer projeto existente, mas no Flutter ou React
Native, temos que continuar com sua própria infraestrutura.
Principais dúvidas
Como ficaria a estrutura do projeto?
https://github.com/Kotlin/kmm-basic-sample
Principais dúvidas
Quais partes do meu projeto devo migrar?
Principais dúvidas
Como empacotar KMP em bibliotecas iOS e Android?
O Kotlin Multiplatform permite empacotar sua lógica de
negócio como em outro projeto como uma biblioteca binária
para iOS como .framework e como um arquivo .jar para
android.
A importação nos projetos segue o padrão de qualquer outra
dependência, no android pode ser importada pelo Gradle e no
iOS pelo Cocoapods.
Principais dúvidas
Como fazer para integrar KMP com código específico de
cada plataforma?
https://kotlinlang.org/docs/mobile/connect-to-platf
orm-specific-apis.html#example-generate-a-uuid
Principais dúvidas
Qual o impacto no tamanho dos binários finais de apps
que possuem partes em KMP?
NENHUM
Principais dúvidas
Como testar? Preciso de testes para cada plataforma?
https://github.com/Kotlin/kmm-basic-sample
Principais dúvidas
Swift interop pode vir a matar o KMP?
NÃO
Principais dúvidas
Quais são os principais benefícios do uso de KMP?
Evitar replicação de código que poderia gerar bugs.
Economia significativa de tempo de desenvolvimento, teste e
validação.
Redução do número de desenvolvedores necessários para um
projeto.
Maior interação entre equipes Android e iOS tendo em vista
que ambas trabalharam na mesma lógica de negócio.
Principais dúvidas
O que mais vocês gostariam de saber sobre KMP?
Obrigado
leanpub.com/querserlidertecnico

More Related Content

What's hot

Flutter talkshow
Flutter talkshowFlutter talkshow
Flutter talkshowNhan Cao
 
Intro to Flutter
Intro to FlutterIntro to Flutter
Intro to FlutterShady Selim
 
Game development using Flutter
Game development using FlutterGame development using Flutter
Game development using FlutterShady Selim
 
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
 
Mobile development with Flutter
Mobile development with FlutterMobile development with Flutter
Mobile development with FlutterAwok
 
The magic of flutter
The magic of flutterThe magic of flutter
The magic of flutterShady Selim
 
How To Be A Better Developer
How To Be A Better DeveloperHow To Be A Better Developer
How To Be A Better DeveloperAhmed Abu Eldahab
 
Developing Cross platform apps in flutter (Android, iOS, Web)
Developing Cross platform apps in flutter (Android, iOS, Web)Developing Cross platform apps in flutter (Android, iOS, Web)
Developing Cross platform apps in flutter (Android, iOS, Web)Priyanka Tyagi
 
Flutter state management from zero to hero
Flutter state management from zero to heroFlutter state management from zero to hero
Flutter state management from zero to heroAhmed Abu Eldahab
 
What is flutter and why should i care?
What is flutter and why should i care?What is flutter and why should i care?
What is flutter and why should i care?Sergi Martínez
 
Building beautiful apps using google flutter
Building beautiful apps using google flutterBuilding beautiful apps using google flutter
Building beautiful apps using google flutterAhmed Abu Eldahab
 
Les ZAPeroTech #4 : découverte de Flutter
Les ZAPeroTech #4 : découverte de FlutterLes ZAPeroTech #4 : découverte de Flutter
Les ZAPeroTech #4 : découverte de FlutterDocDoku
 
Introduction on Mobile development
Introduction on Mobile developmentIntroduction on Mobile development
Introduction on Mobile developmentShady Selim
 
Mobile DevOps pipeline using Google Flutter
Mobile DevOps pipeline using Google FlutterMobile DevOps pipeline using Google Flutter
Mobile DevOps pipeline using Google FlutterAhmed Abu Eldahab
 
Mobile App Development Tools of 2018
Mobile App Development Tools of 2018Mobile App Development Tools of 2018
Mobile App Development Tools of 2018Ahmed Abu Eldahab
 
Flutter overview - advantages & disadvantages for business
Flutter overview - advantages & disadvantages for businessFlutter overview - advantages & disadvantages for business
Flutter overview - advantages & disadvantages for businessBartosz Kosarzycki
 

What's hot (20)

Flutter talkshow
Flutter talkshowFlutter talkshow
Flutter talkshow
 
Intro to Flutter
Intro to FlutterIntro to Flutter
Intro to Flutter
 
Game development using Flutter
Game development using FlutterGame development using Flutter
Game development using Flutter
 
What is Kotlin Multiplaform? Why & How?
What is Kotlin Multiplaform? Why & How? What is Kotlin Multiplaform? Why & How?
What is Kotlin Multiplaform? Why & How?
 
Mobile development with Flutter
Mobile development with FlutterMobile development with Flutter
Mobile development with Flutter
 
The magic of flutter
The magic of flutterThe magic of flutter
The magic of flutter
 
How To Be A Better Developer
How To Be A Better DeveloperHow To Be A Better Developer
How To Be A Better Developer
 
Developing Cross platform apps in flutter (Android, iOS, Web)
Developing Cross platform apps in flutter (Android, iOS, Web)Developing Cross platform apps in flutter (Android, iOS, Web)
Developing Cross platform apps in flutter (Android, iOS, Web)
 
Flutter state management from zero to hero
Flutter state management from zero to heroFlutter state management from zero to hero
Flutter state management from zero to hero
 
What is flutter and why should i care?
What is flutter and why should i care?What is flutter and why should i care?
What is flutter and why should i care?
 
Flutter introduction
Flutter introductionFlutter introduction
Flutter introduction
 
Flutter101
Flutter101Flutter101
Flutter101
 
Building beautiful apps using google flutter
Building beautiful apps using google flutterBuilding beautiful apps using google flutter
Building beautiful apps using google flutter
 
Les ZAPeroTech #4 : découverte de Flutter
Les ZAPeroTech #4 : découverte de FlutterLes ZAPeroTech #4 : découverte de Flutter
Les ZAPeroTech #4 : découverte de Flutter
 
Introduction on Mobile development
Introduction on Mobile developmentIntroduction on Mobile development
Introduction on Mobile development
 
Mobile DevOps pipeline using Google Flutter
Mobile DevOps pipeline using Google FlutterMobile DevOps pipeline using Google Flutter
Mobile DevOps pipeline using Google Flutter
 
Mobile App Development Tools of 2018
Mobile App Development Tools of 2018Mobile App Development Tools of 2018
Mobile App Development Tools of 2018
 
Flutter overview - advantages & disadvantages for business
Flutter overview - advantages & disadvantages for businessFlutter overview - advantages & disadvantages for business
Flutter overview - advantages & disadvantages for business
 
Flutter vs React Native
Flutter vs React NativeFlutter vs React Native
Flutter vs React Native
 
Kotlin Multiplatform
Kotlin MultiplatformKotlin Multiplatform
Kotlin Multiplatform
 

Similar to Kotlin multiplataforma

Kotlin vs flutter which is better for doing business
Kotlin vs flutter  which is better for doing business Kotlin vs flutter  which is better for doing business
Kotlin vs flutter which is better for doing business Concetto Labs
 
Kotlin native for iOS and Android
Kotlin native for iOS and AndroidKotlin native for iOS and Android
Kotlin native for iOS and AndroidShady Selim
 
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
 
Kotlin - A Beginner’s Guide__________________
Kotlin - A Beginner’s Guide__________________Kotlin - A Beginner’s Guide__________________
Kotlin - A Beginner’s Guide__________________Mars Devs
 
Mobile Programming - 2 Jetpack Compose
Mobile Programming - 2 Jetpack ComposeMobile Programming - 2 Jetpack Compose
Mobile Programming - 2 Jetpack ComposeAndiNurkholis1
 
Telerik Kendo UI vs. AngularJS
Telerik Kendo UI vs. AngularJSTelerik Kendo UI vs. AngularJS
Telerik Kendo UI vs. AngularJSRainer Stropek
 
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
 
Kotlin vs Flutter: The Battle of Platforms
Kotlin vs Flutter: The Battle of PlatformsKotlin vs Flutter: The Battle of Platforms
Kotlin vs Flutter: The Battle of PlatformsIT Outsourcing China
 
.Net framework vs .net core a complete comparison
.Net framework vs .net core  a complete comparison.Net framework vs .net core  a complete comparison
.Net framework vs .net core a complete comparisonKaty Slemon
 
仕様決定、部品化、ディレクションがなぜ重要か
仕様決定、部品化、ディレクションがなぜ重要か仕様決定、部品化、ディレクションがなぜ重要か
仕様決定、部品化、ディレクションがなぜ重要かKohei Otsuka
 
Kotlin for android development
Kotlin for android developmentKotlin for android development
Kotlin for android developmentJalpesh Vasa
 
Low-Code vs. Programming – It Isn’t an Either/Or Decision
Low-Code vs. Programming – It Isn’t an Either/Or DecisionLow-Code vs. Programming – It Isn’t an Either/Or Decision
Low-Code vs. Programming – It Isn’t an Either/Or DecisionAppian
 
Comparisons react native vs. flutter vs. ionic vs. xamarin vs. native script
Comparisons  react native vs. flutter vs. ionic vs. xamarin vs. native scriptComparisons  react native vs. flutter vs. ionic vs. xamarin vs. native script
Comparisons react native vs. flutter vs. ionic vs. xamarin vs. native scriptMoonTechnolabsPvtLtd
 
Advantages of golang development services & 10 most used go frameworks
Advantages of golang development services & 10 most used go frameworksAdvantages of golang development services & 10 most used go frameworks
Advantages of golang development services & 10 most used go frameworksKaty Slemon
 
Felgo vs. Flutter vs. React Native: An in-Depth Comparison
Felgo vs. Flutter vs. React Native: An in-Depth ComparisonFelgo vs. Flutter vs. React Native: An in-Depth Comparison
Felgo vs. Flutter vs. React Native: An in-Depth ComparisonKaty Slemon
 

Similar to Kotlin multiplataforma (20)

Kotlin vs flutter which is better for doing business
Kotlin vs flutter  which is better for doing business Kotlin vs flutter  which is better for doing business
Kotlin vs flutter which is better for doing business
 
Kotlin native for iOS and Android
Kotlin native for iOS and AndroidKotlin native for iOS and Android
Kotlin native for iOS and Android
 
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?
 
Kotlin - A Beginner’s Guide__________________
Kotlin - A Beginner’s Guide__________________Kotlin - A Beginner’s Guide__________________
Kotlin - A Beginner’s Guide__________________
 
Mobile Programming - 2 Jetpack Compose
Mobile Programming - 2 Jetpack ComposeMobile Programming - 2 Jetpack Compose
Mobile Programming - 2 Jetpack Compose
 
Telerik Kendo UI vs. AngularJS
Telerik Kendo UI vs. AngularJSTelerik Kendo UI vs. AngularJS
Telerik Kendo UI vs. AngularJS
 
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
 
Kotlin vs Flutter: The Battle of Platforms
Kotlin vs Flutter: The Battle of PlatformsKotlin vs Flutter: The Battle of Platforms
Kotlin vs Flutter: The Battle of Platforms
 
.Net framework vs .net core a complete comparison
.Net framework vs .net core  a complete comparison.Net framework vs .net core  a complete comparison
.Net framework vs .net core a complete comparison
 
ASP.NET Core 101
ASP.NET Core 101ASP.NET Core 101
ASP.NET Core 101
 
仕様決定、部品化、ディレクションがなぜ重要か
仕様決定、部品化、ディレクションがなぜ重要か仕様決定、部品化、ディレクションがなぜ重要か
仕様決定、部品化、ディレクションがなぜ重要か
 
Kotlin for android development
Kotlin for android developmentKotlin for android development
Kotlin for android development
 
Introduction to .net
Introduction to .netIntroduction to .net
Introduction to .net
 
Low-Code vs. Programming – It Isn’t an Either/Or Decision
Low-Code vs. Programming – It Isn’t an Either/Or DecisionLow-Code vs. Programming – It Isn’t an Either/Or Decision
Low-Code vs. Programming – It Isn’t an Either/Or Decision
 
Comparisons react native vs. flutter vs. ionic vs. xamarin vs. native script
Comparisons  react native vs. flutter vs. ionic vs. xamarin vs. native scriptComparisons  react native vs. flutter vs. ionic vs. xamarin vs. native script
Comparisons react native vs. flutter vs. ionic vs. xamarin vs. native script
 
How does flutter cuts app development cost?
How does flutter cuts app development cost?How does flutter cuts app development cost?
How does flutter cuts app development cost?
 
Flutter Leap of Faith
Flutter Leap of FaithFlutter Leap of Faith
Flutter Leap of Faith
 
Advantages of golang development services & 10 most used go frameworks
Advantages of golang development services & 10 most used go frameworksAdvantages of golang development services & 10 most used go frameworks
Advantages of golang development services & 10 most used go frameworks
 
Felgo vs. Flutter vs. React Native: An in-Depth Comparison
Felgo vs. Flutter vs. React Native: An in-Depth ComparisonFelgo vs. Flutter vs. React Native: An in-Depth Comparison
Felgo vs. Flutter vs. React Native: An in-Depth Comparison
 

More from Geison Goes

Functional Swift
Functional SwiftFunctional Swift
Functional SwiftGeison Goes
 
Restful design principles
Restful design principlesRestful design principles
Restful design principlesGeison Goes
 
Cucumber - use it to describe user stories and acceptance criterias
Cucumber - use it to describe user stories and acceptance criteriasCucumber - use it to describe user stories and acceptance criterias
Cucumber - use it to describe user stories and acceptance criteriasGeison Goes
 
Gil - the responsible to unable paralellism
Gil - the responsible to unable paralellismGil - the responsible to unable paralellism
Gil - the responsible to unable paralellismGeison Goes
 
An introduction to the ruby ecosystem
An introduction to the ruby ecosystemAn introduction to the ruby ecosystem
An introduction to the ruby ecosystemGeison Goes
 
Python functional programming
Python functional programmingPython functional programming
Python functional programmingGeison Goes
 
Ruby Functional Programming
Ruby Functional ProgrammingRuby Functional Programming
Ruby Functional ProgrammingGeison Goes
 

More from Geison Goes (10)

Functional Swift
Functional SwiftFunctional Swift
Functional Swift
 
Functional Go
Functional GoFunctional Go
Functional Go
 
Functional go
Functional goFunctional go
Functional go
 
Restful design principles
Restful design principlesRestful design principles
Restful design principles
 
Cucumber - use it to describe user stories and acceptance criterias
Cucumber - use it to describe user stories and acceptance criteriasCucumber - use it to describe user stories and acceptance criterias
Cucumber - use it to describe user stories and acceptance criterias
 
Gil - the responsible to unable paralellism
Gil - the responsible to unable paralellismGil - the responsible to unable paralellism
Gil - the responsible to unable paralellism
 
An introduction to the ruby ecosystem
An introduction to the ruby ecosystemAn introduction to the ruby ecosystem
An introduction to the ruby ecosystem
 
Python functional programming
Python functional programmingPython functional programming
Python functional programming
 
Python Flavors
Python FlavorsPython Flavors
Python Flavors
 
Ruby Functional Programming
Ruby Functional ProgrammingRuby Functional Programming
Ruby Functional Programming
 

Recently uploaded

英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....kzayra69
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfPower Karaoke
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 

Recently uploaded (20)

英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdf
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 

Kotlin multiplataforma

  • 1. Kotlin Multiplataforma Respondendo as principais dúvidas sobre essa tecnologia que promete permitir o compartilhamento da lógica de negócios para seus aplicativos iOS, Android, Web e Desktop
  • 2. Quem sou eu 💼 Empreendedor 💻 Engenheiro de Software ♿ Cadeirante 📖 Autor do livro A liderança técnica leanpub.com/querserlidertecnico
  • 3. Como e onde eu uso KMP
  • 4. Principais dúvidas ● O que é e pra que serve KMP? ● Quais diferenças de KMP para Flutter e React Native? ● Como ficaria a estrutura do meu projeto? ● Quais partes do meu projeto eu devo migrar para KMP? ● Qual é a quantia média de código compartilhado e específico por plataforma? ● Como empacotar KMP como bibliotecas iOS e Android? ● Como fazer para integrar KMP com código específico de cada plataforma? ● Qual o impacto no tamanho dos binários finais de apps que possuem partes em KMP? ● Como testar? Preciso de testes para cada plataforma? ● Quais são os principais benefícios do uso de KMP? ● Swift interop pode vir a matar o KMP? ● [Outras perguntas feitas por vocês]
  • 5. Principais dúvidas O que é e pra que serve KMP? O Kotlin Multiplatform é um framework que permite que você use uma única base de código para a lógica de negócios de aplicativos iOS e Android. Você só precisa escrever o código específico da plataforma onde for necessário, por exemplo, para implementar uma UI nativa ou ao trabalhar com APIs específicas da plataforma.
  • 6. Principais dúvidas Quais diferenças de KMP para Flutter e React Native? Interface do Usuário O Flutter usa o canvas do SDK nativo de diferentes plataformas e desenha seu próprio componente da IU nesse canvas usando o material design ou as especificações Cupertino. O React Native usa componentes nativos mapeados para o código JS e, no KMM, temos que escrever o código da IU nativo separadamente para Android e IOS. Lógica de negócios Em Flutter, React Native e lógica de negócios KMM é comum, mas escrita em diferentes linguagens Dart, JS e Kotlin, respectivamente. Arquitetura em camadas KMM tem a arquitetura que separa a IU e a lógica de negócios por padrão. Interoperabilidade Kotlin pode interagir com Java e outras linguagens também. Mas no caso do Flutter, temos que nos ater apenas ao Dart e o React Native, apenas ao JS. Nativo fácil de usar No KMM é muito fácil escrever código nativo em qualquer nível de codificação e em qualquer camada da arquitetura. Integração com projetos existentes KMM tem o poder de se integrar a qualquer projeto existente, mas no Flutter ou React Native, temos que continuar com sua própria infraestrutura.
  • 7. Principais dúvidas Como ficaria a estrutura do projeto? https://github.com/Kotlin/kmm-basic-sample
  • 8. Principais dúvidas Quais partes do meu projeto devo migrar?
  • 9. Principais dúvidas Como empacotar KMP em bibliotecas iOS e Android? O Kotlin Multiplatform permite empacotar sua lógica de negócio como em outro projeto como uma biblioteca binária para iOS como .framework e como um arquivo .jar para android. A importação nos projetos segue o padrão de qualquer outra dependência, no android pode ser importada pelo Gradle e no iOS pelo Cocoapods.
  • 10. Principais dúvidas Como fazer para integrar KMP com código específico de cada plataforma? https://kotlinlang.org/docs/mobile/connect-to-platf orm-specific-apis.html#example-generate-a-uuid
  • 11. Principais dúvidas Qual o impacto no tamanho dos binários finais de apps que possuem partes em KMP? NENHUM
  • 12. Principais dúvidas Como testar? Preciso de testes para cada plataforma? https://github.com/Kotlin/kmm-basic-sample
  • 13. Principais dúvidas Swift interop pode vir a matar o KMP? NÃO
  • 14. Principais dúvidas Quais são os principais benefícios do uso de KMP? Evitar replicação de código que poderia gerar bugs. Economia significativa de tempo de desenvolvimento, teste e validação. Redução do número de desenvolvedores necessários para um projeto. Maior interação entre equipes Android e iOS tendo em vista que ambas trabalharam na mesma lógica de negócio.
  • 15. Principais dúvidas O que mais vocês gostariam de saber sobre KMP?