Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Котлин для быстрой разработки в iOS и Android

Avatar for SECR 2018 SECR 2018
October 12, 2018

Котлин для быстрой разработки в iOS и Android

SECR 2018
Николай Иготти
Технический руководитель Kotlin/Native, JetBrains

Kotlin/Native – это бэкэнд для компилятора Kotlin, основанный на LLVM, а также – поддержка времени исполнения. В этом докладе я опишу использование Kotlin/Native в комбинации с Kotlin/JVM для быстрой разработки мобильных приложений под две основные платформы без ограничений, налагаемых унифицированным уровнем портирования. Также обсудим возможности Kotlin/Native и того, что Kotlin как платформа может дать разработчикам мобильных приложений.

Avatar for SECR 2018

SECR 2018

October 12, 2018
Tweet

More Decks by SECR 2018

Other Decks in Programming

Transcript

  1. KOTLIN для быстрой разработки в iOS и ANDROID Николай Иготти

    JetBrains Software Engineering Conference Russia 2018
 October 12-13
 Moscow
  2. О чем пойдет речь • Что такое Kotlin и Kotlin/Native

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

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

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

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

    • Возможности Kotlin/Native • Примеры взаимодействия с C, Objective-C и Swift • Технология Kotlin/Multiplatform • Gradle и MPP • Мультиплатформенные библиотеки • Доступность решения
  7. KOTLIN/NATIVE • Компилятор Kotlin в машинный код (.so, .dll, .dylib,

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

    .exe) • Использует LLVM 6.0.1 • Получаемые исполняемые артефакты полностью самодостаточны (никаких ВМ, служебных библиотек и т.п.) • Работает на macOS, Windows, Linux
  9. 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
  10. 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
  11. 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 добавлять очень просто
  12. Kotlin/Native для iOS • Автоматическое управление памятью (как и другие

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

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

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

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

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

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

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

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

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

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

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

    / JS (браузер, Node.js) / Native (iOS, Windows, Linux, macOS) в одном проекте • Расширения языка expect/actual • Мультиплатформенная стандартная библиотека • Стандартизованный Gradle DSL для JVM/JS/Native • Набор стандартных MPP библиотек от JetBrains: • kotlinx.coroutines — утилиты для асинхронного программирования
  24. Мультиплатформенная разработка в 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
  25. Мультиплатформенная разработка в 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 клиент и фреймворк
  26. Мультиплатформенная разработка в 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
  27. Создание практических мобильных решений • Поддержка MPP, включая Native, в

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

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

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

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

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

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

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

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

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

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