SlideShare a Scribd company logo
1 of 65
Download to read offline
Запуск XE4
Windows, Mac, iOS
Всеволод Леонов
vsevolod.leonov@embarcadero.com
Средства разработки под
различные устройcтва
Стенд (provisioning)
Ethernet, Wi-Fi
(patch cord)
Обычный «хвост»
http://blogs.embarcadero.com/vsevolodleonov/2013/04/23/dios_dev_hardware/
Вспомогательное ПО
• Симулятор на Mac OS
• RAD PAServer XE4 (не забыть запустить)
• VMWare Fusion (Win on Mac)
• VNC Viewer (видеть Mac)
• Reflector (видеть iPhone или iPad)
Стенд в облаках
• Но только на этапе раннего прототипирования
http://macincloud.com
Account разработчика
• «Индивидуальный» - в AppStore
очень привлекательно…
$$$
Account разработчика
• «Корпоративный» - без AppStore
очень привлекательно…
$$$
Delphi must…
• Delphi 1-7 («античный период»)
• Delphi 8 (for .NET, C#Builder…) (нас предали?)
• BDS 2006-2007 (поздний Borland)
• RAD Studio (Delphi) 2009 (собрались с мыслями)
• RAD Studio 2010, XE (эпоха возрождения)
• RAD Studio XE2 (FireMonkey = новая VCL)
• RAD Studio XE3 (прощай, Windows)
• RAD Studio XE4 (iOS)
Из фанеры лобзиком...
http://www.embarcadero.com/ru/rad-in-action/application-showcase
Community
• MVP
– Александр Алексеев (www.gunsmoker.ru)
– Александр Божко (www.delphifeeds.ru)
– Андрей Терехов
– Владислав Баженов (www.webdelphi.ru)
Blaise Pascal Magazine
http://blaisepascal.ru/
Вебинары
• Александр Алексеев (Fundamentals)
• Андрей Карпов (C++)
• Дмитрий Арефьев (FireDAC)
• Дмитрий Кузьменко (InterBase)
• Михаил Филиппенко (FastReport)
• Евгений Крюков (FireMonkey)
• Ярослав Бровин (FireMonkey)
http://blogs.embarcadero.com/vsevolodleonov/category/recorded-webinars/
Эксперты
• Александр Люлин
18delphi.blogstop.com
Почему RUP и "прочие западные практики" не
ложатся на российскую почву
«Стадии развитие проекта»
«Зачем дельфисту UML»
«Тестирование»
Переход количества в качество
RAD Studio
Multi-Device App Development
True Native Apps
On Device Rapid Prototyping
Лёд тронулся, совпало с весной
Еще один «нативный»
• Multi-device – возрождение
• Embarcadero и ISOCPP
Наш паровоз вперёд летит…
• Android – остановка
• Windows 8 – внезапно
• Delphi (C++Builder)
– Корпоративная мобильность
– Индивидуальная разработка
• Данные, базы данных, компонентный
доступ
• Идеологическая преемственность
Уже не новость
http://www.embarcadero.com/ru/products/rad-studio/firedac
RAD Studio (не только Delphi)?
• RAD Studio многоплатформенная
нативность
• Больше устройств – «толще
студия»
Единая база исходных кодов
• Ресурс всё тот же
– Кодовая база
– Люди
– График производства
• Множественность
компетенции/команд/
проектов/ошибок
Быстрое прототипирование
• Быстрый старт
• Быстрый прототип
• Быстрое подключение к БД
• Радость от каждого нового
устройства
• Ускоренный цикл
разработки
21
Embarcadero: Multi-Device App Development
HTML5 Cross
Platform
“Platform
Native”
Platform Vendor
Tools
Rapid Multi-Device
Examples
Adobe, Sencha,
Kendo,
HTML5Builder
Appcellerator,
Xamarin Mono
XCode, Visual
Studio, Eclipse
Embarcadero
RADStudio
Platforms iOS/Android iOS/Android
Win or Mac/iOS
or Android
(Sep IDE, lang, & SDK
for ea platform)
Mac/Win/iOS &
Android* (2013)
Native “Real Code” No No Yes Yes
Native Platform API Access No (PhoneGap) Yes Yes Yes
Single Source Multi-Vendor
Targeting
Yes No No Yes
Single IDE Yes/Plugin Yes/Plugin No Yes
Single Project Multiple Multiple Multiple Yes
App Performance Low Low High High
App Number Crunching
Power
Low Low High High
App Capacity (mem/data) Low Low/Med High High
App UX (User Experience) Low/Med Med High High
Enterprise Connectivity Low Low High High
Delphi
• Компилятор (новый)
• IDE (классический)
• Компоненты (FireMonkey)
• Компоненты DB (FireDAC)
New Compiler Architecture
Open IR
C/C++
Delphi
Intel
ARM
LLVM
FireMonkey (не VCL)
• Библиотека компонентов (не Kylix)
• Классическая разработка RAD
• Набор компиляторов (или LLVM+CLANG)
– Win
– Mac OS
– iOS
• Поведение
• Внешний вид (стиль)
• Единая среда, единый исходный код –
различные сборки
24
«Родная» и оригинальная стилизация
Поддержка жестов
• Swipe
• Tap
• Pinch & Zoom
• Tap & Hold
• Double-Tap
«Датчики»
• Ориентация/компас
• Движение
• Позиционирование
• Камера
Базы данных
• Локально (SQLite, InterBase)
• Клиент-сервер
• Прямой доступ
• Многозвенная архитектура
DataSnap Server Database
Delphi for iOS app
Delphi XE4
Delphi for iOS
Мобильное приложение решает проблемы:
• Повысить производительность
• Повысить доступность
• Сократить время принятия решений
• Конкурентноспособность
Я бы начал бы мобильное приложение:
• Без потери времени на освоение другого
инструмента
• ... желательно в старых-добрых традициях
RAD (каковыми они бы ни были)
• Использовать готовый код
• Кому-то это нужно
Клиенты в восторге:
• Получше выбрать, подешевле заказать
• Свежие новости
• Рекламные компании и скидки
• В любое время, в любом месте
• Мощный тренд (enormous)
Менеджеры в восторге:
• Имидж компании (совет директоров)
• «Баннер»
• Более управляемый коллектив
• Пользователи мобильных приложений –
самые активная и платежеспособная
аудитория
Delphi FireMonkey для iOS
• «Нативный стиль» iOS
• «Нативный» код прилоежний
• Разработка в стиле Delphi (iOS Human Interface Guidelines)
XE4 FireMonkey Mobile
Demos and Code Snippets Online
• http://sourceforge.net/p/radstudiodemos/cod
e/HEAD/tree/branches/RadStudio_XE4/
• http://sourceforge.net/p/radstudiodemos/cod
e/HEAD/tree/branches/RadStudio_XE4/FireM
onkeyMobile/
• http://sourceforge.net/p/radstudiodemos/cod
e/HEAD/tree/branches/RadStudio_XE4/iOSCo
deSnippets/
Open or Grab XE4 FireMonkey Mobile
Samples and Code Snippets
• File | Open from Version Control…
– http://svn.code.sf.net/p/radstudiodemos/code/br
anches/RadStudio_XE4/FireMonkeyMobile/
– http://sourceforge.net/p/radstudiodemos/code/H
EAD/tree/branches/RadStudio_XE4/iOSCodeSnipp
ets/
• SVN Command Line to get all XE4 samples
– svn co
svn://svn.code.sf.net/p/radstudiodemos/code/bra
nches/RadStudio_XE4 c:AllSamples
Вопросы
• vsevolod.leonov@embarcadero.com
Проектирование приложений
• Интерфейс
– User experience
– Проектирование взаимодействия
– Сценарии
– Mockup («бальзамик»)
– Прототипирование
• Работа с данными
• Безопасность
Разработка
• Роли
• Сценарии
• Прототипирование
• Данные
Корпоративные данные
• Local (SQLite, IBLight, IB ToGo)
– «плохой» интернет
– «редкие» обновления и синхронизация
• Client/Server
– «хороший» Интернет
– Традиционные практики
• DataSnap («многозвенка»)
– «портфельная» модель
– Локальная и C/S модели
Локально
• «типа каталоги»
• «слабая» зависимость бизнес-роли от
основной IT-инфраструктуры
Delphi for iOS app (iPhone …)
• DB в файле
• IBLite
• InterBase ToGo
• SQLite
• Пользовательская
структура
Синхронизация!
Client Server
• Классический дизайн C/S
• «Внутри»
• Интенсивный обмен данными
Delphi for iOS app
(iPad…)
• InterBase Server
• Third party for
Oracle/PostgreSQL/My
SQL
• IBX
• dbExpress
• FireDAC
DataSnap (многозвенный доступ)
• DataSnap framework с 2010, сейчас XE4
• «Портфельная модель»
• dbExpress, FireDAC
DataSnap Server Database
Delphi for iOS app
(iPhone, iPad)
Local + DataSnap
• Лучшее из двух технологий
• Широкий диапазон задач
DataSnap Server Database
Delphi for iOS app
(iPhone, iPad)
Local file DB
Язык Delphi
• Новые возможности
Язык Delphi
• Старый-добрый (32/64)
• LLVM – новый-злой
• Front-end – back-end
• IR LLVM
• Новый стиль кодирования
• Управление памятью
• ARC (Automatic Reference Counting)
• Objective-C
• http://clang.llvm.org/docs/AutomaticReferenceCounting.html
Старый Delphi vs Новый Delphi
• Objective-C, C#, Java, .NET
• Memory management, “Interface”
• Борьба самих с собой
Зачем нужны перемены?
• Новые платформы, новые стили, новые стандарты, новые
компиляторы, новый язык (точка входа)
• Много способов сделать одно и то же
• Новые люди
• Существующие противоречия
Разные типы строк
• Короткие строки Pascal (255)
• AnsiString (C-o-W, R-C)
• + еще немного (UTF8String и RawByteString)
• С-подобные строки/функции (PChar)
• Строки Unicode (с 2009), UTF16 (C-o-R, R-C)
• COM-совместимые (no R-C)
Один тип строки
• Unicode-based
• Immutable str1[i] := ch
• Reference-counted
Как правильно?
• TStringBuilder (был уже давно…)
• s1, s2, s3 : string;
• s1 := ‘Hello’;
• s2 := ‘World’;
• s3 := s1 + s2;
• sBuilder := TStringBuilder.Create;
• sBuilder.Append(s1);
• sBuilder.Append(s2);
• s3 := sBuilder.ToString;
• sBuilder.Free;
Immutable
• TStringBuilder (был уже давно…)
for I := Low (str1) to High (str1) do
if str1 [I] = 'a' then
str1 [I] := 'A’;
sBuilder := TStringBuilder.Create;
for I := Low (str1) to High (str1) do
if str1.Chars [I] = 'a' then
sBuilder.Append ('A')
else
sBuilder.Append (str1.Chars [I]);
str1 := sBuilder.ToString;
sBuilder.Free;
Zero-based strings
• Нас предали? (продались «сюшникам?»)
• Де-факто это свершилось
– Динамические массивы
– List : TList; List.Items[0]
– sList: TStringList; sList[]
– ListBox1.Items[0]
• $ZEROBASEDSTRINGS
Zero-based strings
• Внутренняя структура осталась такой же.
• Можно смешивать (проект, модуль,
функции)
• Классические функции RTL – прежние (1-
based)
• TStringHelper – используем его
– unit System.SysUtils;
– MyString.Length; MyString.ToInteger;
– …
TStringHelper
• procedure TForm4.Button1Click(Sender: TObject);
• var
• s1: string;
• begin
• // применительно к переменной
• s1 := 'Hello';
• if s1.Contains('ll') then
• ShowMessage (s1.Substring(1).Length.ToString);
• // применительно к константе
• Left := 'Hello'.Length;
• // «цепочка»
• Caption := ClassName.Length.ToString;
• end;
Automatic Reference Counting
• Автоматический подсчёт ссылок
• Управление памятью
• string
• Interface variable
• не Garbage Collector!
• ARC – automatic reference counting
Interface
• TMyClass = class(TInterfacedObject, IMyInterface)
• // ...
• end;
• IMyInterface = interface(IInterface)
• // ...
• end;
Interface
• procedure TForm1.Button1Click(Sender: TObject);
• var
• myInterface : IMyInterface;
• begin
• myInterface := TMyClass.Create;
• //...
• end;
ARC
• ARC by default in LLVM compiler
• iOS device and Simulator (Mac)
• procedure TForm1.Button1Click(Sender:
TObject);
• var
• MyObj: TMySimpleClass;
• begin
• MyObj := TMySimpleClass.Create;
• // ...
• end;
ARC - освобождение
• procedure TForm1.Button1Click(Sender:
TObject);
• var
• myObj : TMyClass;
• begin
• myObj := TMyClass.Create;
• // ...
• myObj := nil;
• // ...
• end;
MyObj.DisposeOf;
ARC - ссылки
• type
• TMyComplexClass = class;
•
• TMySimpleClass = class
• private
• [Weak] FOwnedBy: TMyComplexClass;
• public
• constructor Create();
• destructor Destroy (); override;
• procedure DoSomething(bRaise: Boolean = False);
• end;
•
• TMyComplexClass = class
• private
• fSimple: TMySimpleClass;
• public
• constructor Create();
• destructor Destroy (); override;
• class procedure CreateOnly;
• end;
Двигаемся в ногу со временем
• Новые платформы
• Новые традиции классической Delphi
• Не надо бояться перемен, они к лучшему
https://www.facebook.com/SoftlineCompany
Заключение
Вопросы
• vsevolod.leonov@embarcadero.com

More Related Content

Similar to Xe4 launch мобильная разработка всеволод_леонов

"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма..."Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...Yandex
 
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма..."Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...Yandex
 
"Подходы, используемые в разработке iOS-клиента Viber" Кирилл Лашкевич (Viber)
"Подходы, используемые в разработке iOS-клиента Viber" Кирилл Лашкевич (Viber)"Подходы, используемые в разработке iOS-клиента Viber" Кирилл Лашкевич (Viber)
"Подходы, используемые в разработке iOS-клиента Viber" Кирилл Лашкевич (Viber)AvitoTech
 
Профессиональная разработка в суровом Enterprise
Профессиональная разработка в суровом EnterpriseПрофессиональная разработка в суровом Enterprise
Профессиональная разработка в суровом EnterpriseAlexander Granin
 
Основы "мобильной" разработки на примере платформы iOs (iPhone)
Основы "мобильной" разработки на примере платформы iOs (iPhone)Основы "мобильной" разработки на примере платформы iOs (iPhone)
Основы "мобильной" разработки на примере платформы iOs (iPhone)Pavel Tsukanov
 
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
 
Отладка и профилирование JavaScript/Ajax
Отладка и профилирование JavaScript/AjaxОтладка и профилирование JavaScript/Ajax
Отладка и профилирование JavaScript/AjaxAlexander Shurkayev
 
Владислав Акулич - Monkey Talk - кроссплатформенное средство автоматизации те...
Владислав Акулич - Monkey Talk - кроссплатформенное средство автоматизации те...Владислав Акулич - Monkey Talk - кроссплатформенное средство автоматизации те...
Владислав Акулич - Monkey Talk - кроссплатформенное средство автоматизации те...COMAQA.BY
 
Разработка в Vs2015
Разработка в Vs2015Разработка в Vs2015
Разработка в Vs2015Tatiana Smetanina
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Yandex
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Yandex
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5Provectus
 
RDSDataSource: Автогенерация документации для SDK
RDSDataSource: Автогенерация документации для SDKRDSDataSource: Автогенерация документации для SDK
RDSDataSource: Автогенерация документации для SDKRAMBLER&Co
 
What's new in Visual Studio 2012
What's new in Visual Studio 2012What's new in Visual Studio 2012
What's new in Visual Studio 2012InTRUEdeR
 
20160316 Работа с подготовленными заранее опросниками, хранимыми на сервере
20160316 Работа с подготовленными заранее опросниками, хранимыми на сервере20160316 Работа с подготовленными заранее опросниками, хранимыми на сервере
20160316 Работа с подготовленными заранее опросниками, хранимыми на сервереAndrew Sovtsov
 
Monkey Talk - кросс-платформенное средство автоматизации тестирования мобильн...
Monkey Talk - кросс-платформенное средство автоматизации тестирования мобильн...Monkey Talk - кросс-платформенное средство автоматизации тестирования мобильн...
Monkey Talk - кросс-платформенное средство автоматизации тестирования мобильн...SQALab
 
Способы лицензирования Delphi, RAD Studio, C++ Builder XE4
Способы лицензирования Delphi, RAD Studio, C++ Builder  XE4Способы лицензирования Delphi, RAD Studio, C++ Builder  XE4
Способы лицензирования Delphi, RAD Studio, C++ Builder XE4Екатерина Макарова
 
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...Yandex
 
Webinar: Создание приложений в FireMonkey для Windows 10 в RAD Studio 10 Seattle
Webinar: Создание приложений в FireMonkey для Windows 10 в RAD Studio 10 SeattleWebinar: Создание приложений в FireMonkey для Windows 10 в RAD Studio 10 Seattle
Webinar: Создание приложений в FireMonkey для Windows 10 в RAD Studio 10 SeattleDenis Vasilyev
 
Interactive Lab: Разработка Flash игр на Unity3D
Interactive Lab: Разработка Flash игр на Unity3DInteractive Lab: Разработка Flash игр на Unity3D
Interactive Lab: Разработка Flash игр на Unity3DDevGAMM Conference
 

Similar to Xe4 launch мобильная разработка всеволод_леонов (20)

"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма..."Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
 
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма..."Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
 
"Подходы, используемые в разработке iOS-клиента Viber" Кирилл Лашкевич (Viber)
"Подходы, используемые в разработке iOS-клиента Viber" Кирилл Лашкевич (Viber)"Подходы, используемые в разработке iOS-клиента Viber" Кирилл Лашкевич (Viber)
"Подходы, используемые в разработке iOS-клиента Viber" Кирилл Лашкевич (Viber)
 
Профессиональная разработка в суровом Enterprise
Профессиональная разработка в суровом EnterpriseПрофессиональная разработка в суровом Enterprise
Профессиональная разработка в суровом Enterprise
 
Основы "мобильной" разработки на примере платформы iOs (iPhone)
Основы "мобильной" разработки на примере платформы iOs (iPhone)Основы "мобильной" разработки на примере платформы iOs (iPhone)
Основы "мобильной" разработки на примере платформы iOs (iPhone)
 
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
 
Отладка и профилирование JavaScript/Ajax
Отладка и профилирование JavaScript/AjaxОтладка и профилирование JavaScript/Ajax
Отладка и профилирование JavaScript/Ajax
 
Владислав Акулич - Monkey Talk - кроссплатформенное средство автоматизации те...
Владислав Акулич - Monkey Talk - кроссплатформенное средство автоматизации те...Владислав Акулич - Monkey Talk - кроссплатформенное средство автоматизации те...
Владислав Акулич - Monkey Talk - кроссплатформенное средство автоматизации те...
 
Разработка в Vs2015
Разработка в Vs2015Разработка в Vs2015
Разработка в Vs2015
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5
 
RDSDataSource: Автогенерация документации для SDK
RDSDataSource: Автогенерация документации для SDKRDSDataSource: Автогенерация документации для SDK
RDSDataSource: Автогенерация документации для SDK
 
What's new in Visual Studio 2012
What's new in Visual Studio 2012What's new in Visual Studio 2012
What's new in Visual Studio 2012
 
20160316 Работа с подготовленными заранее опросниками, хранимыми на сервере
20160316 Работа с подготовленными заранее опросниками, хранимыми на сервере20160316 Работа с подготовленными заранее опросниками, хранимыми на сервере
20160316 Работа с подготовленными заранее опросниками, хранимыми на сервере
 
Monkey Talk - кросс-платформенное средство автоматизации тестирования мобильн...
Monkey Talk - кросс-платформенное средство автоматизации тестирования мобильн...Monkey Talk - кросс-платформенное средство автоматизации тестирования мобильн...
Monkey Talk - кросс-платформенное средство автоматизации тестирования мобильн...
 
Способы лицензирования Delphi, RAD Studio, C++ Builder XE4
Способы лицензирования Delphi, RAD Studio, C++ Builder  XE4Способы лицензирования Delphi, RAD Studio, C++ Builder  XE4
Способы лицензирования Delphi, RAD Studio, C++ Builder XE4
 
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
 
Webinar: Создание приложений в FireMonkey для Windows 10 в RAD Studio 10 Seattle
Webinar: Создание приложений в FireMonkey для Windows 10 в RAD Studio 10 SeattleWebinar: Создание приложений в FireMonkey для Windows 10 в RAD Studio 10 Seattle
Webinar: Создание приложений в FireMonkey для Windows 10 в RAD Studio 10 Seattle
 
Interactive Lab: Разработка Flash игр на Unity3D
Interactive Lab: Разработка Flash игр на Unity3DInteractive Lab: Разработка Flash игр на Unity3D
Interactive Lab: Разработка Flash игр на Unity3D
 

Xe4 launch мобильная разработка всеволод_леонов

  • 1. Запуск XE4 Windows, Mac, iOS Всеволод Леонов vsevolod.leonov@embarcadero.com Средства разработки под различные устройcтва
  • 2. Стенд (provisioning) Ethernet, Wi-Fi (patch cord) Обычный «хвост» http://blogs.embarcadero.com/vsevolodleonov/2013/04/23/dios_dev_hardware/
  • 3. Вспомогательное ПО • Симулятор на Mac OS • RAD PAServer XE4 (не забыть запустить) • VMWare Fusion (Win on Mac) • VNC Viewer (видеть Mac) • Reflector (видеть iPhone или iPad)
  • 4. Стенд в облаках • Но только на этапе раннего прототипирования http://macincloud.com
  • 5. Account разработчика • «Индивидуальный» - в AppStore очень привлекательно… $$$
  • 6. Account разработчика • «Корпоративный» - без AppStore очень привлекательно… $$$
  • 7. Delphi must… • Delphi 1-7 («античный период») • Delphi 8 (for .NET, C#Builder…) (нас предали?) • BDS 2006-2007 (поздний Borland) • RAD Studio (Delphi) 2009 (собрались с мыслями) • RAD Studio 2010, XE (эпоха возрождения) • RAD Studio XE2 (FireMonkey = новая VCL) • RAD Studio XE3 (прощай, Windows) • RAD Studio XE4 (iOS)
  • 9. Community • MVP – Александр Алексеев (www.gunsmoker.ru) – Александр Божко (www.delphifeeds.ru) – Андрей Терехов – Владислав Баженов (www.webdelphi.ru)
  • 11. Вебинары • Александр Алексеев (Fundamentals) • Андрей Карпов (C++) • Дмитрий Арефьев (FireDAC) • Дмитрий Кузьменко (InterBase) • Михаил Филиппенко (FastReport) • Евгений Крюков (FireMonkey) • Ярослав Бровин (FireMonkey) http://blogs.embarcadero.com/vsevolodleonov/category/recorded-webinars/
  • 12. Эксперты • Александр Люлин 18delphi.blogstop.com Почему RUP и "прочие западные практики" не ложатся на российскую почву «Стадии развитие проекта» «Зачем дельфисту UML» «Тестирование»
  • 14. RAD Studio Multi-Device App Development True Native Apps On Device Rapid Prototyping Лёд тронулся, совпало с весной
  • 15. Еще один «нативный» • Multi-device – возрождение • Embarcadero и ISOCPP
  • 16. Наш паровоз вперёд летит… • Android – остановка • Windows 8 – внезапно • Delphi (C++Builder) – Корпоративная мобильность – Индивидуальная разработка • Данные, базы данных, компонентный доступ • Идеологическая преемственность
  • 18. RAD Studio (не только Delphi)? • RAD Studio многоплатформенная нативность • Больше устройств – «толще студия»
  • 19. Единая база исходных кодов • Ресурс всё тот же – Кодовая база – Люди – График производства • Множественность компетенции/команд/ проектов/ошибок
  • 20. Быстрое прототипирование • Быстрый старт • Быстрый прототип • Быстрое подключение к БД • Радость от каждого нового устройства • Ускоренный цикл разработки
  • 21. 21 Embarcadero: Multi-Device App Development HTML5 Cross Platform “Platform Native” Platform Vendor Tools Rapid Multi-Device Examples Adobe, Sencha, Kendo, HTML5Builder Appcellerator, Xamarin Mono XCode, Visual Studio, Eclipse Embarcadero RADStudio Platforms iOS/Android iOS/Android Win or Mac/iOS or Android (Sep IDE, lang, & SDK for ea platform) Mac/Win/iOS & Android* (2013) Native “Real Code” No No Yes Yes Native Platform API Access No (PhoneGap) Yes Yes Yes Single Source Multi-Vendor Targeting Yes No No Yes Single IDE Yes/Plugin Yes/Plugin No Yes Single Project Multiple Multiple Multiple Yes App Performance Low Low High High App Number Crunching Power Low Low High High App Capacity (mem/data) Low Low/Med High High App UX (User Experience) Low/Med Med High High Enterprise Connectivity Low Low High High
  • 22. Delphi • Компилятор (новый) • IDE (классический) • Компоненты (FireMonkey) • Компоненты DB (FireDAC)
  • 23. New Compiler Architecture Open IR C/C++ Delphi Intel ARM LLVM
  • 24. FireMonkey (не VCL) • Библиотека компонентов (не Kylix) • Классическая разработка RAD • Набор компиляторов (или LLVM+CLANG) – Win – Mac OS – iOS • Поведение • Внешний вид (стиль) • Единая среда, единый исходный код – различные сборки 24
  • 26. Поддержка жестов • Swipe • Tap • Pinch & Zoom • Tap & Hold • Double-Tap
  • 28. Базы данных • Локально (SQLite, InterBase) • Клиент-сервер • Прямой доступ • Многозвенная архитектура DataSnap Server Database Delphi for iOS app
  • 31. Мобильное приложение решает проблемы: • Повысить производительность • Повысить доступность • Сократить время принятия решений • Конкурентноспособность
  • 32. Я бы начал бы мобильное приложение: • Без потери времени на освоение другого инструмента • ... желательно в старых-добрых традициях RAD (каковыми они бы ни были) • Использовать готовый код • Кому-то это нужно
  • 33. Клиенты в восторге: • Получше выбрать, подешевле заказать • Свежие новости • Рекламные компании и скидки • В любое время, в любом месте • Мощный тренд (enormous)
  • 34. Менеджеры в восторге: • Имидж компании (совет директоров) • «Баннер» • Более управляемый коллектив • Пользователи мобильных приложений – самые активная и платежеспособная аудитория
  • 35. Delphi FireMonkey для iOS • «Нативный стиль» iOS • «Нативный» код прилоежний • Разработка в стиле Delphi (iOS Human Interface Guidelines)
  • 36. XE4 FireMonkey Mobile Demos and Code Snippets Online • http://sourceforge.net/p/radstudiodemos/cod e/HEAD/tree/branches/RadStudio_XE4/ • http://sourceforge.net/p/radstudiodemos/cod e/HEAD/tree/branches/RadStudio_XE4/FireM onkeyMobile/ • http://sourceforge.net/p/radstudiodemos/cod e/HEAD/tree/branches/RadStudio_XE4/iOSCo deSnippets/
  • 37. Open or Grab XE4 FireMonkey Mobile Samples and Code Snippets • File | Open from Version Control… – http://svn.code.sf.net/p/radstudiodemos/code/br anches/RadStudio_XE4/FireMonkeyMobile/ – http://sourceforge.net/p/radstudiodemos/code/H EAD/tree/branches/RadStudio_XE4/iOSCodeSnipp ets/ • SVN Command Line to get all XE4 samples – svn co svn://svn.code.sf.net/p/radstudiodemos/code/bra nches/RadStudio_XE4 c:AllSamples
  • 39. Проектирование приложений • Интерфейс – User experience – Проектирование взаимодействия – Сценарии – Mockup («бальзамик») – Прототипирование • Работа с данными • Безопасность
  • 40. Разработка • Роли • Сценарии • Прототипирование • Данные
  • 41. Корпоративные данные • Local (SQLite, IBLight, IB ToGo) – «плохой» интернет – «редкие» обновления и синхронизация • Client/Server – «хороший» Интернет – Традиционные практики • DataSnap («многозвенка») – «портфельная» модель – Локальная и C/S модели
  • 42. Локально • «типа каталоги» • «слабая» зависимость бизнес-роли от основной IT-инфраструктуры Delphi for iOS app (iPhone …) • DB в файле • IBLite • InterBase ToGo • SQLite • Пользовательская структура Синхронизация!
  • 43. Client Server • Классический дизайн C/S • «Внутри» • Интенсивный обмен данными Delphi for iOS app (iPad…) • InterBase Server • Third party for Oracle/PostgreSQL/My SQL • IBX • dbExpress • FireDAC
  • 44. DataSnap (многозвенный доступ) • DataSnap framework с 2010, сейчас XE4 • «Портфельная модель» • dbExpress, FireDAC DataSnap Server Database Delphi for iOS app (iPhone, iPad)
  • 45. Local + DataSnap • Лучшее из двух технологий • Широкий диапазон задач DataSnap Server Database Delphi for iOS app (iPhone, iPad) Local file DB
  • 46. Язык Delphi • Новые возможности
  • 47. Язык Delphi • Старый-добрый (32/64) • LLVM – новый-злой • Front-end – back-end • IR LLVM • Новый стиль кодирования • Управление памятью • ARC (Automatic Reference Counting) • Objective-C • http://clang.llvm.org/docs/AutomaticReferenceCounting.html
  • 48. Старый Delphi vs Новый Delphi • Objective-C, C#, Java, .NET • Memory management, “Interface” • Борьба самих с собой
  • 49. Зачем нужны перемены? • Новые платформы, новые стили, новые стандарты, новые компиляторы, новый язык (точка входа) • Много способов сделать одно и то же • Новые люди • Существующие противоречия
  • 50. Разные типы строк • Короткие строки Pascal (255) • AnsiString (C-o-W, R-C) • + еще немного (UTF8String и RawByteString) • С-подобные строки/функции (PChar) • Строки Unicode (с 2009), UTF16 (C-o-R, R-C) • COM-совместимые (no R-C)
  • 51. Один тип строки • Unicode-based • Immutable str1[i] := ch • Reference-counted
  • 52. Как правильно? • TStringBuilder (был уже давно…) • s1, s2, s3 : string; • s1 := ‘Hello’; • s2 := ‘World’; • s3 := s1 + s2; • sBuilder := TStringBuilder.Create; • sBuilder.Append(s1); • sBuilder.Append(s2); • s3 := sBuilder.ToString; • sBuilder.Free;
  • 53. Immutable • TStringBuilder (был уже давно…) for I := Low (str1) to High (str1) do if str1 [I] = 'a' then str1 [I] := 'A’; sBuilder := TStringBuilder.Create; for I := Low (str1) to High (str1) do if str1.Chars [I] = 'a' then sBuilder.Append ('A') else sBuilder.Append (str1.Chars [I]); str1 := sBuilder.ToString; sBuilder.Free;
  • 54. Zero-based strings • Нас предали? (продались «сюшникам?») • Де-факто это свершилось – Динамические массивы – List : TList; List.Items[0] – sList: TStringList; sList[] – ListBox1.Items[0] • $ZEROBASEDSTRINGS
  • 55. Zero-based strings • Внутренняя структура осталась такой же. • Можно смешивать (проект, модуль, функции) • Классические функции RTL – прежние (1- based) • TStringHelper – используем его – unit System.SysUtils; – MyString.Length; MyString.ToInteger; – …
  • 56. TStringHelper • procedure TForm4.Button1Click(Sender: TObject); • var • s1: string; • begin • // применительно к переменной • s1 := 'Hello'; • if s1.Contains('ll') then • ShowMessage (s1.Substring(1).Length.ToString); • // применительно к константе • Left := 'Hello'.Length; • // «цепочка» • Caption := ClassName.Length.ToString; • end;
  • 57. Automatic Reference Counting • Автоматический подсчёт ссылок • Управление памятью • string • Interface variable • не Garbage Collector! • ARC – automatic reference counting
  • 58. Interface • TMyClass = class(TInterfacedObject, IMyInterface) • // ... • end; • IMyInterface = interface(IInterface) • // ... • end;
  • 59. Interface • procedure TForm1.Button1Click(Sender: TObject); • var • myInterface : IMyInterface; • begin • myInterface := TMyClass.Create; • //... • end;
  • 60. ARC • ARC by default in LLVM compiler • iOS device and Simulator (Mac) • procedure TForm1.Button1Click(Sender: TObject); • var • MyObj: TMySimpleClass; • begin • MyObj := TMySimpleClass.Create; • // ... • end;
  • 61. ARC - освобождение • procedure TForm1.Button1Click(Sender: TObject); • var • myObj : TMyClass; • begin • myObj := TMyClass.Create; • // ... • myObj := nil; • // ... • end; MyObj.DisposeOf;
  • 62. ARC - ссылки • type • TMyComplexClass = class; • • TMySimpleClass = class • private • [Weak] FOwnedBy: TMyComplexClass; • public • constructor Create(); • destructor Destroy (); override; • procedure DoSomething(bRaise: Boolean = False); • end; • • TMyComplexClass = class • private • fSimple: TMySimpleClass; • public • constructor Create(); • destructor Destroy (); override; • class procedure CreateOnly; • end;
  • 63. Двигаемся в ногу со временем • Новые платформы • Новые традиции классической Delphi • Не надо бояться перемен, они к лучшему https://www.facebook.com/SoftlineCompany