Slide 1

Slide 1 text

KOTLIN для быстрой разработки в iOS и ANDROID Николай Иготти JetBrains Software Engineering Conference Russia 2018
 October 12-13
 Moscow

Slide 2

Slide 2 text

О чем пойдет речь

Slide 3

Slide 3 text

О чем пойдет речь • Что такое Kotlin и Kotlin/Native

Slide 4

Slide 4 text

О чем пойдет речь • Что такое Kotlin и Kotlin/Native • Возможности Kotlin/Native

Slide 5

Slide 5 text

О чем пойдет речь • Что такое Kotlin и Kotlin/Native • Возможности Kotlin/Native • Примеры взаимодействия с C, Objective-C и Swift

Slide 6

Slide 6 text

О чем пойдет речь • Что такое Kotlin и Kotlin/Native • Возможности Kotlin/Native • Примеры взаимодействия с C, Objective-C и Swift • Технология Kotlin/Multiplatform

Slide 7

Slide 7 text

О чем пойдет речь • Что такое Kotlin и Kotlin/Native • Возможности Kotlin/Native • Примеры взаимодействия с C, Objective-C и Swift • Технология Kotlin/Multiplatform • Gradle и MPP

Slide 8

Slide 8 text

О чем пойдет речь • Что такое Kotlin и Kotlin/Native • Возможности Kotlin/Native • Примеры взаимодействия с C, Objective-C и Swift • Технология Kotlin/Multiplatform • Gradle и MPP • Мультиплатформенные библиотеки

Slide 9

Slide 9 text

О чем пойдет речь • Что такое Kotlin и Kotlin/Native • Возможности Kotlin/Native • Примеры взаимодействия с C, Objective-C и Swift • Технология Kotlin/Multiplatform • Gradle и MPP • Мультиплатформенные библиотеки • Доступность решения

Slide 10

Slide 10 text

ОБЩИЕ МОМЕНТЫ: KOTLIN

Slide 11

Slide 11 text

KOTLIN В ANDROID KTX

Slide 12

Slide 12 text

KOTLIN/NATIVE

Slide 13

Slide 13 text

KOTLIN/NATIVE • Компилятор Kotlin в машинный код (.so, .dll, .dylib, .exe)

Slide 14

Slide 14 text

KOTLIN/NATIVE • Компилятор Kotlin в машинный код (.so, .dll, .dylib, .exe) • Использует LLVM 6.0.1

Slide 15

Slide 15 text

KOTLIN/NATIVE • Компилятор Kotlin в машинный код (.so, .dll, .dylib, .exe) • Использует LLVM 6.0.1 • Получаемые исполняемые артефакты полностью самодостаточны (никаких ВМ, служебных библиотек и т.п.)

Slide 16

Slide 16 text

KOTLIN/NATIVE • Компилятор Kotlin в машинный код (.so, .dll, .dylib, .exe) • Использует LLVM 6.0.1 • Получаемые исполняемые артефакты полностью самодостаточны (никаких ВМ, служебных библиотек и т.п.) • Работает на macOS, Windows, Linux

Slide 17

Slide 17 text

KOTLIN/NATIVE • Компилятор Kotlin в машинный код (.so, .dll, .dylib, .exe) • Использует LLVM 6.0.1 • Получаемые исполняемые артефакты полностью самодостаточны (никаких ВМ, служебных библиотек и т.п.) • Работает на macOS, Windows, Linux • Порождает исполняемый код для iOS, macOS, Linux (x86-64, ARM, MIPS), Android (sic!), Windows и WebAssembly

Slide 18

Slide 18 text

KOTLIN/NATIVE • Компилятор Kotlin в машинный код (.so, .dll, .dylib, .exe) • Использует LLVM 6.0.1 • Получаемые исполняемые артефакты полностью самодостаточны (никаких ВМ, служебных библиотек и т.п.) • Работает на macOS, Windows, Linux • Порождает исполняемый код для iOS, macOS, Linux (x86-64, ARM, MIPS), Android (sic!), Windows и WebAssembly • Из коробки доступны все системные библиотеки на С/Objective-C

Slide 19

Slide 19 text

KOTLIN/NATIVE • Компилятор Kotlin в машинный код (.so, .dll, .dylib, .exe) • Использует LLVM 6.0.1 • Получаемые исполняемые артефакты полностью самодостаточны (никаких ВМ, служебных библиотек и т.п.) • Работает на macOS, Windows, Linux • Порождает исполняемый код для iOS, macOS, Linux (x86-64, ARM, MIPS), Android (sic!), Windows и WebAssembly • Из коробки доступны все системные библиотеки на С/Objective-C • Новые нативные библиотеки на на С/Objective-C добавлять очень просто

Slide 20

Slide 20 text

Kotlin/Native для iOS

Slide 21

Slide 21 text

Kotlin/Native для iOS • Автоматическое управление памятью (как и другие платформы)

Slide 22

Slide 22 text

Kotlin/Native для iOS • Автоматическое управление памятью (как и другие платформы) • Прозрачное взаимодействие в обе стороны с Objective-C/Swift, с автоматическим управлением памятью

Slide 23

Slide 23 text

Kotlin/Native для iOS • Автоматическое управление памятью (как и другие платформы) • Прозрачное взаимодействие в обе стороны с Objective-C/Swift, с автоматическим управлением памятью • Базовые типы и коллекции автоматически отображаются 1:1

Slide 24

Slide 24 text

Kotlin/Native для iOS • Автоматическое управление памятью (как и другие платформы) • Прозрачное взаимодействие в обе стороны с Objective-C/Swift, с автоматическим управлением памятью • Базовые типы и коллекции автоматически отображаются 1:1 • Порождаются полноценные бинарные приложения или стандартные фреймворки с интерфейсом Objective-C

Slide 25

Slide 25 text

Kotlin/Native для iOS • Автоматическое управление памятью (как и другие платформы) • Прозрачное взаимодействие в обе стороны с Objective-C/Swift, с автоматическим управлением памятью • Базовые типы и коллекции автоматически отображаются 1:1 • Порождаются полноценные бинарные приложения или стандартные фреймворки с интерфейсом Objective-C • Поддержаны все основные архитектуры iOS, включая armv7

Slide 26

Slide 26 text

Kotlin/Native для iOS • Автоматическое управление памятью (как и другие платформы) • Прозрачное взаимодействие в обе стороны с Objective-C/Swift, с автоматическим управлением памятью • Базовые типы и коллекции автоматически отображаются 1:1 • Порождаются полноценные бинарные приложения или стандартные фреймворки с интерфейсом Objective-C • Поддержаны все основные архитектуры iOS, включая armv7 • Байндинги для всех основных SDK от Apple включены в поставку

Slide 27

Slide 27 text

Kotlin/Native для iOS • Автоматическое управление памятью (как и другие платформы) • Прозрачное взаимодействие в обе стороны с Objective-C/Swift, с автоматическим управлением памятью • Базовые типы и коллекции автоматически отображаются 1:1 • Порождаются полноценные бинарные приложения или стандартные фреймворки с интерфейсом Objective-C • Поддержаны все основные архитектуры iOS, включая armv7 • Байндинги для всех основных SDK от Apple включены в поставку • Возможна отладка из XCode (полная отладочная информация в формате DWARF)

Slide 28

Slide 28 text

Примеры (1)

Slide 29

Slide 29 text

Примеры (2)

Slide 30

Slide 30 text

Примеры (3)

Slide 31

Slide 31 text

Мультиплатформенная разработка в Kotlin 1.3

Slide 32

Slide 32 text

Мультиплатформенная разработка в Kotlin 1.3 • Поддержка JVM (сервер, Android) / JS (браузер, Node.js) / Native (iOS, Windows, Linux, macOS) в одном проекте

Slide 33

Slide 33 text

Мультиплатформенная разработка в Kotlin 1.3 • Поддержка JVM (сервер, Android) / JS (браузер, Node.js) / Native (iOS, Windows, Linux, macOS) в одном проекте • Расширения языка expect/actual

Slide 34

Slide 34 text

Мультиплатформенная разработка в Kotlin 1.3 • Поддержка JVM (сервер, Android) / JS (браузер, Node.js) / Native (iOS, Windows, Linux, macOS) в одном проекте • Расширения языка expect/actual • Мультиплатформенная стандартная библиотека

Slide 35

Slide 35 text

Мультиплатформенная разработка в Kotlin 1.3 • Поддержка JVM (сервер, Android) / JS (браузер, Node.js) / Native (iOS, Windows, Linux, macOS) в одном проекте • Расширения языка expect/actual • Мультиплатформенная стандартная библиотека • Стандартизованный Gradle DSL для JVM/JS/Native

Slide 36

Slide 36 text

Мультиплатформенная разработка в Kotlin 1.3 • Поддержка JVM (сервер, Android) / JS (браузер, Node.js) / Native (iOS, Windows, Linux, macOS) в одном проекте • Расширения языка expect/actual • Мультиплатформенная стандартная библиотека • Стандартизованный Gradle DSL для JVM/JS/Native • Набор стандартных MPP библиотек от JetBrains:

Slide 37

Slide 37 text

Мультиплатформенная разработка в Kotlin 1.3 • Поддержка JVM (сервер, Android) / JS (браузер, Node.js) / Native (iOS, Windows, Linux, macOS) в одном проекте • Расширения языка expect/actual • Мультиплатформенная стандартная библиотека • Стандартизованный Gradle DSL для JVM/JS/Native • Набор стандартных MPP библиотек от JetBrains: • kotlinx.coroutines — утилиты для асинхронного программирования

Slide 38

Slide 38 text

Мультиплатформенная разработка в Kotlin 1.3 • Поддержка JVM (сервер, Android) / JS (браузер, Node.js) / Native (iOS, Windows, Linux, macOS) в одном проекте • Расширения языка expect/actual • Мультиплатформенная стандартная библиотека • Стандартизованный Gradle DSL для JVM/JS/Native • Набор стандартных MPP библиотек от JetBrains: • kotlinx.coroutines — утилиты для асинхронного программирования • kotlinx.serialization — сериализация/десериализация в JSON и proto

Slide 39

Slide 39 text

Мультиплатформенная разработка в Kotlin 1.3 • Поддержка JVM (сервер, Android) / JS (браузер, Node.js) / Native (iOS, Windows, Linux, macOS) в одном проекте • Расширения языка expect/actual • Мультиплатформенная стандартная библиотека • Стандартизованный Gradle DSL для JVM/JS/Native • Набор стандартных MPP библиотек от JetBrains: • kotlinx.coroutines — утилиты для асинхронного программирования • kotlinx.serialization — сериализация/десериализация в JSON и proto • ktor — HTTP клиент и фреймворк

Slide 40

Slide 40 text

Мультиплатформенная разработка в Kotlin 1.3 • Поддержка JVM (сервер, Android) / JS (браузер, Node.js) / Native (iOS, Windows, Linux, macOS) в одном проекте • Расширения языка expect/actual • Мультиплатформенная стандартная библиотека • Стандартизованный Gradle DSL для JVM/JS/Native • Набор стандартных MPP библиотек от JetBrains: • kotlinx.coroutines — утилиты для асинхронного программирования • kotlinx.serialization — сериализация/десериализация в JSON и proto • ktor — HTTP клиент и фреймворк • Сторонние MPP библиотеки, например sessionize от Kevin Galligan

Slide 41

Slide 41 text

Расширения языка для MPP

Slide 42

Slide 42 text

Стандартизованный Gradle DSL

Slide 43

Slide 43 text

Библиотеки для MPP от JetBrains • kotlinx.coroutines • kotlinx.seralization + • HTTP client из ktor

Slide 44

Slide 44 text

Библиотеки для MPP от JetBrains • kotlinx.coroutines • kotlinx.seralization + • HTTP client из ktor

Slide 45

Slide 45 text

Библиотеки для MPP от JetBrains • kotlinx.coroutines • kotlinx.seralization + • HTTP client из ktor

Slide 46

Slide 46 text

Создание практических мобильных решений

Slide 47

Slide 47 text

Создание практических мобильных решений • Поддержка MPP, включая Native, в Kotlin 1.3 прямо сейчас (осень 2018)

Slide 48

Slide 48 text

Создание практических мобильных решений • Поддержка MPP, включая Native, в Kotlin 1.3 прямо сейчас (осень 2018) • Значительную часть кода проекта можно написать на Kotlin

Slide 49

Slide 49 text

Создание практических мобильных решений • Поддержка MPP, включая Native, в Kotlin 1.3 прямо сейчас (осень 2018) • Значительную часть кода проекта можно написать на Kotlin • Не надо ограничивать себя узким уровнем портирования - весь API платформы доступен

Slide 50

Slide 50 text

Создание практических мобильных решений • Поддержка MPP, включая Native, в Kotlin 1.3 прямо сейчас (осень 2018) • Значительную часть кода проекта можно написать на Kotlin • Не надо ограничивать себя узким уровнем портирования - весь API платформы доступен • Инструменты от JetBrains (IDEA, включая Community Edition) и Android Studio способны работать с MPP кодом (включая навигацию expect/actual)

Slide 51

Slide 51 text

Создание практических мобильных решений • Поддержка MPP, включая Native, в Kotlin 1.3 прямо сейчас (осень 2018) • Значительную часть кода проекта можно написать на Kotlin • Не надо ограничивать себя узким уровнем портирования - весь API платформы доступен • Инструменты от JetBrains (IDEA, включая Community Edition) и Android Studio способны работать с MPP кодом (включая навигацию expect/actual) • Gradle знает о MPP проектах, может их собирать и публиковать

Slide 52

Slide 52 text

Создание практических мобильных решений • Поддержка MPP, включая Native, в Kotlin 1.3 прямо сейчас (осень 2018) • Значительную часть кода проекта можно написать на Kotlin • Не надо ограничивать себя узким уровнем портирования - весь API платформы доступен • Инструменты от JetBrains (IDEA, включая Community Edition) и Android Studio способны работать с MPP кодом (включая навигацию expect/actual) • Gradle знает о MPP проектах, может их собирать и публиковать • Доступен основной набор MPP библиотек от JetBrains

Slide 53

Slide 53 text

Создание практических мобильных решений • Поддержка MPP, включая Native, в Kotlin 1.3 прямо сейчас (осень 2018) • Значительную часть кода проекта можно написать на Kotlin • Не надо ограничивать себя узким уровнем портирования - весь API платформы доступен • Инструменты от JetBrains (IDEA, включая Community Edition) и Android Studio способны работать с MPP кодом (включая навигацию expect/actual) • Gradle знает о MPP проектах, может их собирать и публиковать • Доступен основной набор MPP библиотек от JetBrains • Мы в JetBrains постоянно улучшаем платформу и исправляем ошибки

Slide 54

Slide 54 text

Более быстрая и качественная разработка мобильного приложения

Slide 55

Slide 55 text

Более быстрая и качественная разработка мобильного приложения • Бизнес логику можно писать на MPP Kotlin’е прямо сейчас

Slide 56

Slide 56 text

Более быстрая и качественная разработка мобильного приложения • Бизнес логику можно писать на MPP Kotlin’е прямо сейчас • UI и логику взаимодействия с платформенными интерфейсами можно писать по желанию на Kotlin’е или Swift’е или Objective-C

Slide 57

Slide 57 text

Более быстрая и качественная разработка мобильного приложения • Бизнес логику можно писать на MPP Kotlin’е прямо сейчас • UI и логику взаимодействия с платформенными интерфейсами можно писать по желанию на Kotlin’е или Swift’е или Objective-C • В приложении на iOS можно попробовать Kotlin постепенно, переведя на Kotlin одну компоненту (режим framework)

Slide 58

Slide 58 text

Более быстрая и качественная разработка мобильного приложения • Бизнес логику можно писать на MPP Kotlin’е прямо сейчас • UI и логику взаимодействия с платформенными интерфейсами можно писать по желанию на Kotlin’е или Swift’е или Objective-C • В приложении на iOS можно попробовать Kotlin постепенно, переведя на Kotlin одну компоненту (режим framework) • Можно быстрее получать работающее мобильное приложение под основные платформ

Slide 59

Slide 59 text

Более быстрая и качественная разработка мобильного приложения • Бизнес логику можно писать на MPP Kotlin’е прямо сейчас • UI и логику взаимодействия с платформенными интерфейсами можно писать по желанию на Kotlin’е или Swift’е или Objective-C • В приложении на iOS можно попробовать Kotlin постепенно, переведя на Kotlin одну компоненту (режим framework) • Можно быстрее получать работающее мобильное приложение под основные платформ • Попробуйте сегодня

Slide 60

Slide 60 text

Обратная связь • Николай Иготти • [email protected] • https://kotlinlang.org/docs/reference/native-overview.html • https://ru.coursera.org/learn/vvedenie-v-yazyk-kotlin