Один код, две платформы: миф или реальность

Содержание

Слайд 2

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

● Введение
● Фреймворки
● Web-приложения
● Native UI, C++

Back
● CouchBase
● Итог
Слайд 3

Слайд 4

Хотим

Хотим

Слайд 5

Мобильные платформы

Мобильные платформы

Слайд 6

Реклама

Реклама

Слайд 7

Xamarin

Xamarin

Слайд 8

Слайд 9

Xamarin

Xamarin

Слайд 10

● PhoneGap ● Cordova ● Ionic ● Monaca, Taco… ой Гибриды

● PhoneGap
● Cordova
● Ionic
● Monaca, Taco… ой

Гибриды

Слайд 11

Слайд 12

Языки

Языки

Слайд 13

IDE

IDE

Слайд 14

Слайд 15

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

Что хорошо?

● Единая Бизнес Логика
● Классные специалисты
● Идеальный

интерфейс
● Параллельная разработка
Слайд 16

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

А что плохо?

● Дорогая разработка
● Коммуникация команд
● Дублирование

интерфейса
● Мосты между языками
Слайд 17

Мосты

Мосты

Слайд 18

Мост из ObjC в C++ @interface Test : NSObject + (int32_t)func(NSString*)s;

Мост из ObjC в C++

@interface Test : NSObject
+ (int32_t)func(NSString*)s;
@end
@implementation Test
+ (int32_t)func:(NSString*)s

{
return SomeCppClass::Func(std::string([s UTF8String],
[s lengthOfBytesUsingEncoding:NSUTF8StringEncoding]);
}
@end
Слайд 19

Мост из Java в C++ jint JNICALL Java_Test_func(JNIEnv* jniEnv, jobject, jstring

Мост из Java в C++

jint JNICALL Java_Test_func(JNIEnv* jniEnv, jobject, jstring js)

{
const jsize len = env->GetStringLength(js);
const jchar* c = env->GetStringChars(js, nullptr);
std::string s = Utf16ToUtf8(std::string(c, len));
env->ReleaseStringChars(js, c);
return SomeCppClass::Func( s );
}
Слайд 20

Слайд 21

DJINNI user = record { name: string; birthday: date; } users_storage

DJINNI

user = record {
name: string;
birthday: date;
}
users_storage = interface +c

{
static instance(): users_storage;
find_user(id: i32): optional;
}
Слайд 22

Слайд 23

Слайд 24

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

UI

Типичный модуль

БЛ

Слайд 25

Идея!

Идея!

Слайд 26

Реплика на сервере Sync

Реплика на сервере

Sync

Слайд 27

Есть решения

Есть решения

Слайд 28

Слайд 29

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

● NO SQL
● View (Indexes)
● Live Query

Репликация

СouchBase

Слайд 30

Sync Gateway CBL CB CB CB Change Feed Doc update

Sync Gateway

CBL

CB

CB

CB

Change Feed

Doc update

Слайд 31

Слайд 32

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

Что дальшe?

Общий интерфейс!

Слайд 33

Facebook

Facebook

Слайд 34

Так вот оно!

Так вот оно!

Слайд 35

Слайд 36

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

● Быстрый старт
● Прототипирование
● Не native интерфейс

● Мини приложения

Framework

Слайд 37

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

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

С++

Слайд 38

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

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

CouchBase

Слайд 39