Скачать презентацию Один код две платформы Миф или реальность Потяков Скачать презентацию Один код две платформы Миф или реальность Потяков

2_Потяков_Ивлев.pptx

  • Количество слайдов: 40

Один код, две платформы: Миф или реальность? Потяков Виталий Руководитель мобильной разработки / Ивлев Один код, две платформы: Миф или реальность? Потяков Виталий Руководитель мобильной разработки / Ивлев Александр / Ведущий программист Разработка мобильного СБИС, 2017

● Введение ● Фреймворки ● Web-приложения ● Native UI, C++ Back ● Couch. Base ● Введение ● Фреймворки ● Web-приложения ● Native UI, C++ Back ● Couch. Base ● Итог

Наше приложение Наше приложение

Хотим Мобильное приложение Нативный интерфейс Offline режим Удобство разработки Хотим Мобильное приложение Нативный интерфейс Offline режим Удобство разработки

Мобильные платформы 73% 19% >1% Мобильные платформы 73% 19% >1%

Реклама Реклама

Xamarin Нативен С# как язык Единый код 3 платформы 7 Xamarin Нативен С# как язык Единый код 3 платформы 7

А что не так? 8 А что не так? 8

Xamarin Кривой интерфейс Глючная среда Баги Где найти специалистов? 9 Xamarin Кривой интерфейс Глючная среда Баги Где найти специалистов? 9

Гибриды ● Phone. Gap ● Cordova ● Ionic ● Monaca, Taco… ой 10 Гибриды ● Phone. Gap ● Cordova ● Ionic ● Monaca, Taco… ой 10

Нативная разработка 11 Нативная разработка 11

Языки Swift / Obj-C Kotlin / Java C++ / C djinni 12 Языки Swift / Obj-C Kotlin / Java C++ / C djinni 12

IDE Xcode / App. Code Android Studio VS / CLion / Console 13 IDE Xcode / App. Code Android Studio VS / CLion / Console 13

А оно того стоит? 14 А оно того стоит? 14

Что хорошо? ● Единая Бизнес Логика ● Классные специалисты ● Идеальный интерфейс ● Параллельная Что хорошо? ● Единая Бизнес Логика ● Классные специалисты ● Идеальный интерфейс ● Параллельная разработка 15

А что плохо? ● Дорогая разработка ● Коммуникация команд ● Дублирование интерфейса ● Мосты А что плохо? ● Дорогая разработка ● Коммуникация команд ● Дублирование интерфейса ● Мосты между языками 16

Мосты Jinni для Java C для Obj-c/Swift djinni 17 Мосты Jinni для Java C для Obj-c/Swift djinni 17

Мост из Obj. C в C++ @interface Test : NSObject + (int 32_t)func(NSString*)s; @end Мост из Obj. C в C++ @interface Test : NSObject + (int 32_t)func(NSString*)s; @end @implementation Test + (int 32_t)func: (NSString*)s { return Some. Cpp. Class: : Func(std: : string([s UTF 8 String], [s length. Of. Bytes. Using. Encoding: NSUTF 8 String. Encoding]); } @end 18

Мост из Java в C++ jint JNICALL Java_Test_func(JNIEnv* jni. Env, jobject, jstring js) { Мост из Java в C++ jint JNICALL Java_Test_func(JNIEnv* jni. Env, jobject, jstring js) { const jsize len = env->Get. String. Length(js); const jchar* c = env->Get. String. Chars(js, nullptr); std: : string s = Utf 16 To. Utf 8(std: : string(c, len)); env->Release. String. Chars(js, c); return Some. Cpp. Class: : Func( s ); } 19

И так каждый раз… 20 И так каждый раз… 20

DJINNI user = record { name: string; birthday: date; } users_storage = interface +c DJINNI user = record { name: string; birthday: date; } users_storage = interface +c { static instance(): users_storage; find_user(id: i 32): optional; } 21

И вроде все хорошо 22 И вроде все хорошо 22

Что делает backend? Взаимодействие с API Кэширование Актуализация кэша Что делает backend? Взаимодействие с API Кэширование Актуализация кэша

Типичный модуль Cloud UI API БЛ Типичный модуль Cloud UI API БЛ

Идея! На сервер реплику БД Не взаимодействуем с API Наполняем всегда реплику Идея! На сервер реплику БД Не взаимодействуем с API Наполняем всегда реплику

Реплика на сервере API + БЛ Sync БЛ Реплика на сервере API + БЛ Sync БЛ

Есть решения Realm Firebase Couchbase Есть решения Realm Firebase Couchbase

Couchbase Lite Sync Gateway Couchbase Server Couchbase Lite Sync Gateway Couchbase Server

Сouch. Base ● NO SQL ● View (Indexes) ● Live Query ● Репликация Сouch. Base ● NO SQL ● View (Indexes) ● Live Query ● Репликация

Sync Gateway CBL Sync Gateway Change Feed Doc update CB БЛ CB CB Sync Gateway CBL Sync Gateway Change Feed Doc update CB БЛ CB CB

Couchbase Server Хранит реплики Не используем на прямую Couchbase Server Хранит реплики Не используем на прямую

Что дальшe ? Общий интерфейс! Что дальшe ? Общий интерфейс!

Facebook AD Manager 80 -85% общего кода 9 месяцев i. OS 5 месяцев Android Facebook AD Manager 80 -85% общего кода 9 месяцев i. OS 5 месяцев Android

Так вот оно! JS как язык Один поток JS Платформо-зависимый код Так вот оно! JS как язык Один поток JS Платформо-зависимый код

В общем случае миф! В общем случае миф!

Framework ● Быстрый старт ● Прототипирование ● Не native интерфейс ● Мини приложения Framework ● Быстрый старт ● Прототипирование ● Не native интерфейс ● Мини приложения

С++ ● Сложная БЛ ● Мосты ● Есть программисты ● Дублирование интерфейса С++ ● Сложная БЛ ● Мосты ● Есть программисты ● Дублирование интерфейса

Couch. Base ● Большие проекты ● Сложность вхождения ● Серверная инфраструктура Couch. Base ● Большие проекты ● Сложность вхождения ● Серверная инфраструктура

Ищите свой путь! Ищите свой путь!

Вопросы? Вопросы?