SlideShare a Scribd company logo
1 of 53
/ DP Labs
Артур
Дробинский
Ведущий архитектор
команды DP Labs
arturdr.ru
artur.drobinskiy@arturdr.ru
Зачем кросс-
платформенность?
Везде используем универсальный
инструмент
iOS Android
Core
Повторное использование кода
iOS
Android
Core
Повторное использование кода
iOS
Android
Core
Windows
Проще поддержка – исправляем баги один
раз
Дешевле!
Кросс-платформенные решения
How does it work?
Cross-platform code
Cross-platform code
Native .apk / .ipa / .exe (application package)
Cross-platform code
Native .apk / .ipa / .exe (application package)
UI, Native controls Native API
Cross-platform code
Native .apk / .ipa / .exe (application package)
UI, Native controls
API Bridge
Native API
PhoneGap
Code: JS
Native .apk / .ipa / .exe (application package)
UI: HTML
Limited API Bridge
Native API
PhoneGap
WebView
Qt
Code: C++/C#
Native .apk / .ipa / .exe (application package)
UI: QML/Game Engine
Limited API Bridge
Native API
Qt/Unity
View (Canvas)
Code: C#
Native .apk / .ipa / .exe (application package)
API Bridge
Native API
Xamarin
Native Controls
Code: V8, JS
Native .apk / .ipa / .exe (application package)
Limited API Bridge
Native API
React Native
JSX
Native Controls
API Bridge
Performance
4.342
94.151
4.258
1
10
100
Java Cordova Xamarin
Android
5.014
67.291
4.349
1
10
100
Objective-C Cordova Xamarin
iOS
Математические вычисления
0.551
1.117
0.601
0
0.2
0.4
0.6
0.8
1
1.2
Java Cordova Xamarin
Android
0.792
1.494
0.735
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
Objective-C Cordova Xamarin
iOS
SQLite: чтение данных
1.044
4.068
1.689
3.032
0
0.5
1
1.5
2
2.5
3
3.5
4
4.5
Java Cordova Xamarin Xamarin.Forms
Android
1.14
6.21
1.204
1.928
0
1
2
3
4
5
6
7
Objective-C Cordova Xamarin Xamarin.Forms
iOS
Запуск приложения
166
433
3500
4700
0
500
1000
1500
2000
2500
3000
3500
4000
4500
5000
Java Cordova Xamarin Xamarin.Forms
Android
644
2700
12100
16900
0
2000
4000
6000
8000
10000
12000
14000
16000
18000
Objective-C Cordova Xamarin Xamarin.Forms
iOS
Размер приложения
Xamarin React Native Phonegap
Xamarin React Native Phonegap
DEMO
React Native
 Hype
 Hot reloading + простое обновление приложений
 Javascript
 Встраивание в нативные приложения
Плюсы
 Breaking Changes
 Second class android support
 Javascript & TypeSafety
 Animations are slow (bridge)
 Неполная поддержка нативных контролов, ненативная
разметка
Минусы?
Xamarin
Xamarin Forms
React Native
Xamarin
Мифы или реальность?
Утечки памяти
и особенности Garbage Collection
UIKit.UIButton
(peer object)
UIButton
(native object)
API Bridge
Использование open-source контролов
Необходимо написание собственных API Bridge
На Xamarin нет приложений
easyJet Slack Credit Agricole
React Native 
https://www.xamarin.com/customers/
 Размер приложения (6MB+)
 Большее время запуска приложения
 Использование open-sourced controls требует
поиска/написания обёртки
Минусы Xamarin (и ReactNative)
Xamarin vs Native
Xamarin
 Сложные Enterprise
приложения
 Существующая команда
C# разработчиков
 Бэкенд на .NET
 Похожие экраны/workflow
на разных устройствах
Native
 Дублирование бизнес-логики
– не проблема (её мало)
 Команда с опытом на Obj-C и
Java
 Бэкенд на Java 
 Workflow на Android/iOS
радикально различный
Xamarin vs React Native
Xamarin
 Сложная бизнес логика
 C#-команда
 Использование всех
нативных возможностей
 Компиляция,
производительность
 UWP + Mac (+ Web)
 XAML + Native rendering +
Flexbox
React Native
 UI-heavy apps
 JS-команда
 Встраивание в нативные
приложения
 Быстрое обновление
(AppStore, Google Play)
 Задержка с новыми
фичами на платформах
(+ Web)
 Flexbox (but only flexbox)
Вопросы?
http://arturdr.ru
artur.drobinskiy@arturdr.ru
<ListView ItemsSource="{Binding MonkeysGrouped}"
ItemTapped="Handle_ItemTapped" ItemSelected="Handle_ItemSelected"
HasUnevenRows="true" GroupShortNameBinding = "{Binding Key}"
IsGroupingEnabled = "true" GroupDisplayBinding = "{Binding Key}">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid Padding="10" RowSpacing="10" ColumnSpacing="10">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<controls:CircleImage BorderColor="Aqua" BorderThickness="3"
HeightRequest="66"
HorizontalOptions="CenterAndExpand" Vertical`Options="CenterAndExpand"
Aspect="AspectFill" WidthRequest="66" Grid.RowSpan="2" Source="{Binding Image}"/>
<Label Grid.Column="1" Text="{Binding Name}"
VerticalOptions="End"/>
<Label Grid.Column="1"
Grid.Row="1"
VerticalOptions="Start"
Text="{Binding Location}"/>
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<View style={[styles.container, {backgroundColor:
this.props.backgroundColor}]}>
<View style={styles.labelContainer}>
<Text style={labelStyles}> {this.state.maxValue} </Text>
</View>
<View style={styles.itemsContainer}>
<View style={[styles.polygonContainer, {borderColor:
this.props.borderColor}]}>
{this.renderBars()}
</View>
<View style={styles.itemsLabelContainer}>
{this.renderLabels()}
</View>
</View>
</View>
=
Xamarin.Forms
=
Xamarin.Forms
<

More Related Content

What's hot

Прото типо типирование
Прото типо типированиеПрото типо типирование
Прото типо типированиеAgilie Team
 
Тестирование PhoneGap-приложений: специфика + опыт
Тестирование PhoneGap-приложений: специфика + опытТестирование PhoneGap-приложений: специфика + опыт
Тестирование PhoneGap-приложений: специфика + опытSQALab
 
О пользе DevOps и Xamarin.Forms для разработки бизнес-приложений [RUSSIAN]
О пользе DevOps и Xamarin.Forms для разработки бизнес-приложений [RUSSIAN]О пользе DevOps и Xamarin.Forms для разработки бизнес-приложений [RUSSIAN]
О пользе DevOps и Xamarin.Forms для разработки бизнес-приложений [RUSSIAN]Binwell
 
Cага о сагах
Cага о сагахCага о сагах
Cага о сагахDevOWL Meetup
 
PhoneGap + Sencha
PhoneGap + SenchaPhoneGap + Sencha
PhoneGap + Senchaobservleer
 
Мобильные браузеры: очевидное-невероятное
Мобильные браузеры: очевидное-невероятноеМобильные браузеры: очевидное-невероятное
Мобильные браузеры: очевидное-невероятноеSQALab
 
Автоматизация тестирования iOS приложений: от идеи к готовому решению
Автоматизация тестирования iOS приложений: от идеи к готовому решениюАвтоматизация тестирования iOS приложений: от идеи к готовому решению
Автоматизация тестирования iOS приложений: от идеи к готовому решениюSQALab
 
SoapUI one key to all doors
SoapUI one key to all doorsSoapUI one key to all doors
SoapUI one key to all doorsYegor Maksymchuk
 
The second step in interface design
The second step in interface designThe second step in interface design
The second step in interface designAgilie Team
 
Go для веба глазами PHP-разработчика
Go для веба глазами PHP-разработчикаGo для веба глазами PHP-разработчика
Go для веба глазами PHP-разработчикаUP2IT
 
Тотализатор
ТотализаторТотализатор
ТотализаторAlex Melnikov
 

What's hot (12)

Прото типо типирование
Прото типо типированиеПрото типо типирование
Прото типо типирование
 
Тестирование PhoneGap-приложений: специфика + опыт
Тестирование PhoneGap-приложений: специфика + опытТестирование PhoneGap-приложений: специфика + опыт
Тестирование PhoneGap-приложений: специфика + опыт
 
О пользе DevOps и Xamarin.Forms для разработки бизнес-приложений [RUSSIAN]
О пользе DevOps и Xamarin.Forms для разработки бизнес-приложений [RUSSIAN]О пользе DevOps и Xamarin.Forms для разработки бизнес-приложений [RUSSIAN]
О пользе DevOps и Xamarin.Forms для разработки бизнес-приложений [RUSSIAN]
 
Cага о сагах
Cага о сагахCага о сагах
Cага о сагах
 
PhoneGap + Sencha
PhoneGap + SenchaPhoneGap + Sencha
PhoneGap + Sencha
 
Мобильные браузеры: очевидное-невероятное
Мобильные браузеры: очевидное-невероятноеМобильные браузеры: очевидное-невероятное
Мобильные браузеры: очевидное-невероятное
 
Автоматизация тестирования iOS приложений: от идеи к готовому решению
Автоматизация тестирования iOS приложений: от идеи к готовому решениюАвтоматизация тестирования iOS приложений: от идеи к готовому решению
Автоматизация тестирования iOS приложений: от идеи к готовому решению
 
SoapUI one key to all doors
SoapUI one key to all doorsSoapUI one key to all doors
SoapUI one key to all doors
 
The second step in interface design
The second step in interface designThe second step in interface design
The second step in interface design
 
Wtf is API and SDK
Wtf is API and SDKWtf is API and SDK
Wtf is API and SDK
 
Go для веба глазами PHP-разработчика
Go для веба глазами PHP-разработчикаGo для веба глазами PHP-разработчика
Go для веба глазами PHP-разработчика
 
Тотализатор
ТотализаторТотализатор
Тотализатор
 

Similar to Кросс-платформенная мобильная разработка

Sergey Khlopenov tools for_development_cross_platform_mobile_ap
Sergey Khlopenov tools for_development_cross_platform_mobile_apSergey Khlopenov tools for_development_cross_platform_mobile_ap
Sergey Khlopenov tools for_development_cross_platform_mobile_apDneprCiklumEvents
 
Кроссплатформенная разработка
Кроссплатформенная разработкаКроссплатформенная разработка
Кроссплатформенная разработкаValery
 
Павел Федотовский «Как мы разрабатывали приложение для DotNetRu на Xamarin.Fo...
Павел Федотовский «Как мы разрабатывали приложение для DotNetRu на Xamarin.Fo...Павел Федотовский «Как мы разрабатывали приложение для DotNetRu на Xamarin.Fo...
Павел Федотовский «Как мы разрабатывали приложение для DotNetRu на Xamarin.Fo...SpbDotNet Community
 
Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский...
Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский...Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский...
Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский...yaevents
 
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...Anthony Marchenko
 
DevCon 2016 - Xamarin
DevCon 2016 - XamarinDevCon 2016 - Xamarin
DevCon 2016 - XamarinAnton Shunkov
 
Так круто, что даже отвратительно
Так круто, что даже отвратительноТак круто, что даже отвратительно
Так круто, что даже отвратительноVasiliy Aksyonov
 
Что нового в ASP.NET 5
Что нового в ASP.NET 5Что нового в ASP.NET 5
Что нового в ASP.NET 5Microsoft
 
Елена Жукова "Native JavaScript на мобильных устройствах"
Елена Жукова "Native JavaScript на мобильных устройствах"Елена Жукова "Native JavaScript на мобильных устройствах"
Елена Жукова "Native JavaScript на мобильных устройствах"Fwdays
 
Настоящее и будущее решений для разработки кросс-платформенных мобильных гибр...
Настоящее и будущее решений для разработки кросс-платформенных мобильных гибр...Настоящее и будущее решений для разработки кросс-платформенных мобильных гибр...
Настоящее и будущее решений для разработки кросс-платформенных мобильных гибр...CEE-SEC(R)
 
NetBeans 6.0 Desktop
NetBeans 6.0 DesktopNetBeans 6.0 Desktop
NetBeans 6.0 DesktopIljas
 
Roman Zdebskiy - Client vs. Browser
Roman Zdebskiy - Client vs. BrowserRoman Zdebskiy - Client vs. Browser
Roman Zdebskiy - Client vs. BrowserAndrew Mayorov
 
Netbeans Desktop Applications
Netbeans Desktop ApplicationsNetbeans Desktop Applications
Netbeans Desktop Applicationsscassau
 
Разработка мобильных приложений на платформе Xamarin
Разработка мобильных приложений на платформе XamarinРазработка мобильных приложений на платформе Xamarin
Разработка мобильных приложений на платформе XamarinNikita Savanchuk
 
Изоморфные React-приложения производительность и масштабирование / Денис Изма...
Изоморфные React-приложения производительность и масштабирование / Денис Изма...Изоморфные React-приложения производительность и масштабирование / Денис Изма...
Изоморфные React-приложения производительность и масштабирование / Денис Изма...Ontico
 
Владислав Акулич - Monkey Talk - кроссплатформенное средство автоматизации те...
Владислав Акулич - Monkey Talk - кроссплатформенное средство автоматизации те...Владислав Акулич - Monkey Talk - кроссплатформенное средство автоматизации те...
Владислав Акулич - Monkey Talk - кроссплатформенное средство автоматизации те...COMAQA.BY
 
Windows Mobile Development with Compact Framework 2
Windows Mobile Development with Compact Framework 2Windows Mobile Development with Compact Framework 2
Windows Mobile Development with Compact Framework 2DarkestMaster
 
Microsoft: Создание игр на DirectX для Windows 8 и Windows Phone 8
 Microsoft: Создание игр на DirectX для Windows 8 и Windows Phone 8 Microsoft: Создание игр на DirectX для Windows 8 и Windows Phone 8
Microsoft: Создание игр на DirectX для Windows 8 и Windows Phone 8DevGAMM Conference
 

Similar to Кросс-платформенная мобильная разработка (20)

Sergey Khlopenov tools for_development_cross_platform_mobile_ap
Sergey Khlopenov tools for_development_cross_platform_mobile_apSergey Khlopenov tools for_development_cross_platform_mobile_ap
Sergey Khlopenov tools for_development_cross_platform_mobile_ap
 
Кроссплатформенная разработка
Кроссплатформенная разработкаКроссплатформенная разработка
Кроссплатформенная разработка
 
Павел Федотовский «Как мы разрабатывали приложение для DotNetRu на Xamarin.Fo...
Павел Федотовский «Как мы разрабатывали приложение для DotNetRu на Xamarin.Fo...Павел Федотовский «Как мы разрабатывали приложение для DotNetRu на Xamarin.Fo...
Павел Федотовский «Как мы разрабатывали приложение для DotNetRu на Xamarin.Fo...
 
Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский...
Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский...Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский...
Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский...
 
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
 
DevCon 2016 - Xamarin
DevCon 2016 - XamarinDevCon 2016 - Xamarin
DevCon 2016 - Xamarin
 
Так круто, что даже отвратительно
Так круто, что даже отвратительноТак круто, что даже отвратительно
Так круто, что даже отвратительно
 
Что нового в ASP.NET 5
Что нового в ASP.NET 5Что нового в ASP.NET 5
Что нового в ASP.NET 5
 
[Add 4] crossplatform .net
[Add 4] crossplatform .net[Add 4] crossplatform .net
[Add 4] crossplatform .net
 
Елена Жукова "Native JavaScript на мобильных устройствах"
Елена Жукова "Native JavaScript на мобильных устройствах"Елена Жукова "Native JavaScript на мобильных устройствах"
Елена Жукова "Native JavaScript на мобильных устройствах"
 
Настоящее и будущее решений для разработки кросс-платформенных мобильных гибр...
Настоящее и будущее решений для разработки кросс-платформенных мобильных гибр...Настоящее и будущее решений для разработки кросс-платформенных мобильных гибр...
Настоящее и будущее решений для разработки кросс-платформенных мобильных гибр...
 
NetBeans 6.0 Desktop
NetBeans 6.0 DesktopNetBeans 6.0 Desktop
NetBeans 6.0 Desktop
 
Roman Zdebskiy - Client vs. Browser
Roman Zdebskiy - Client vs. BrowserRoman Zdebskiy - Client vs. Browser
Roman Zdebskiy - Client vs. Browser
 
Netbeans Desktop Applications
Netbeans Desktop ApplicationsNetbeans Desktop Applications
Netbeans Desktop Applications
 
Разработка мобильных приложений на платформе Xamarin
Разработка мобильных приложений на платформе XamarinРазработка мобильных приложений на платформе Xamarin
Разработка мобильных приложений на платформе Xamarin
 
Изоморфные React-приложения производительность и масштабирование / Денис Изма...
Изоморфные React-приложения производительность и масштабирование / Денис Изма...Изоморфные React-приложения производительность и масштабирование / Денис Изма...
Изоморфные React-приложения производительность и масштабирование / Денис Изма...
 
Владислав Акулич - Monkey Talk - кроссплатформенное средство автоматизации те...
Владислав Акулич - Monkey Talk - кроссплатформенное средство автоматизации те...Владислав Акулич - Monkey Talk - кроссплатформенное средство автоматизации те...
Владислав Акулич - Monkey Talk - кроссплатформенное средство автоматизации те...
 
Windows Mobile Development with Compact Framework 2
Windows Mobile Development with Compact Framework 2Windows Mobile Development with Compact Framework 2
Windows Mobile Development with Compact Framework 2
 
Microsoft: Создание игр на DirectX для Windows 8 и Windows Phone 8
 Microsoft: Создание игр на DirectX для Windows 8 и Windows Phone 8 Microsoft: Создание игр на DirectX для Windows 8 и Windows Phone 8
Microsoft: Создание игр на DirectX для Windows 8 и Windows Phone 8
 
WinRT
WinRTWinRT
WinRT
 

Кросс-платформенная мобильная разработка

Editor's Notes

  1. + использование компетенций существующей команды + изучать только один
  2. Какие плюсы? Высокопроизводительный C++. Везде одинаково выглядящий UI. Unity работает точно так же
  3. Какие плюсы? Высокопроизводительный C++. Везде одинаково выглядящий UI. Unity работает точно так же
  4. API Bridge полноценный
  5. API Bridge полноценный
  6. ReactNative – частые breaking changes
  7. ReactNative – частые breaking changes