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

Содержание

Слайд 2

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

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

Слайд 4

Хотим

Хотим

Слайд 5

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

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

Слайд 6

Реклама

Реклама

Слайд 10

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

Гибриды

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

Слайд 12

Языки

Языки

Слайд 15

Что хорошо?

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

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

Слайд 16

А что плохо?

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

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

Слайд 17

Мосты

Мосты

Слайд 18

Мост из ObjC в C++

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

Мост из ObjC в C++ @interface Test : NSObject + (int32_t)func(NSString*)s; @end
return SomeCppClass::Func(std::string([s UTF8String],
[s lengthOfBytesUsingEncoding:NSUTF8StringEncoding]);
}
@end

Слайд 19

Мост из Java в C++

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

Мост из Java в C++ jint JNICALL Java_Test_func(JNIEnv* jniEnv, jobject, jstring js)
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 );
}

Слайд 21

DJINNI

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

DJINNI user = record { name: string; birthday: date; } users_storage =
static instance(): users_storage;
find_user(id: i32): optional;
}

Слайд 24

UI

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

БЛ

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

Слайд 25

Идея!

Идея!

Слайд 26

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

Sync

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

Слайд 27

Есть решения

Есть решения

Слайд 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

Слайд 32

Что дальшe?

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

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

Слайд 34

Так вот оно!

Так вот оно!

Слайд 36

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

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

Framework

Слайд 37

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

С++

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

Слайд 38

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

CouchBase

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