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

65
Запуск XE4 Windows, Mac, iOS Всеволод Леонов [email protected] Средства разработки под различные устройcтва

description

Презентация с Запуска RAD Studio XE4 в Москве

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

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

Запуск XE4

Windows, Mac, iOSВсеволод Леонов

[email protected]

Средства разработки под различные устройcтва

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

Стенд (provisioning)

Ethernet, Wi-Fi(patch cord)

Обычный «хвост»

http://blogs.embarcadero.com/vsevolodleonov/2013/04/23/dios_dev_hardware/

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

Вспомогательное ПО

• Симулятор на Mac OS

• RAD PAServer XE4 (не забыть запустить)• VMWare Fusion (Win on Mac)• VNC Viewer (видеть Mac)• Reflector (видеть iPhone или iPad)

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

Стенд в облаках• Но только на этапе раннего прототипирования

http://macincloud.com

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

Account разработчика

• «Индивидуальный» - в AppStore

очень привлекательно…

$$$

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

Account разработчика

• «Корпоративный» - без AppStore

очень привлекательно…

$$$

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

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)

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

Из фанеры лобзиком...

http://www.embarcadero.com/ru/rad-in-action/application-showcase

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

Community

• MVP– Александр Алексеев (www.gunsmoker.ru)– Александр Божко (www.delphifeeds.ru)– Андрей Терехов – Владислав Баженов (www.webdelphi.ru)

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

Blaise Pascal Magazine

http://blaisepascal.ru/

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

Вебинары

• Александр Алексеев (Fundamentals)• Андрей Карпов (C++)• Дмитрий Арефьев (FireDAC)• Дмитрий Кузьменко (InterBase)• Михаил Филиппенко (FastReport)• Евгений Крюков (FireMonkey)• Ярослав Бровин (FireMonkey)

http://blogs.embarcadero.com/vsevolodleonov/category/recorded-webinars/

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

Эксперты

• Александр Люлин18delphi.blogstop.com

Почему RUP и "прочие западные практики" не ложатся на российскую почву

«Стадии развитие проекта»«Зачем дельфисту UML»«Тестирование»

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

Переход количества в качество

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

RAD Studio

Multi-Device App DevelopmentTrue Native Apps

On Device Rapid Prototyping

Лёд тронулся, совпало с весной

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

Еще один «нативный»

• Multi-device – возрождение • Embarcadero и ISOCPP

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

Наш паровоз вперёд летит…

• Android – остановка• Windows 8 – внезапно• Delphi (C++Builder)

– Корпоративная мобильность– Индивидуальная разработка

• Данные, базы данных, компонентный доступ

• Идеологическая преемственность

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

Уже не новость

http://www.embarcadero.com/ru/products/rad-studio/firedac

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

RAD Studio (не только Delphi)?• RAD Studio многоплатформенная

нативность• Больше устройств – «толще

студия»

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

Единая база исходных кодов

• Ресурс всё тот же– Кодовая база– Люди– График производства

• Множественность компетенции/команд/проектов/ошибок

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

Быстрое прототипирование

• Быстрый старт• Быстрый прототип• Быстрое подключение к БД• Радость от каждого нового

устройства• Ускоренный цикл

разработки

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

21

Embarcadero: Multi-Device App DevelopmentHTML5 Cross

Platform“Platform Native”

Platform Vendor Tools Rapid Multi-Device

ExamplesAdobe, Sencha,

Kendo, HTML5Builder

Appcellerator, Xamarin Mono

XCode, Visual Studio, Eclipse

EmbarcaderoRADStudio

Platforms iOS/Android iOS/AndroidWin 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

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

Delphi

• Компилятор (новый)• IDE (классический)• Компоненты (FireMonkey)• Компоненты DB (FireDAC)

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

New Compiler Architecture

Open IR

C/C++

Delphi

Intel

ARM

LLVM

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

FireMonkey (не VCL)

• Библиотека компонентов (не Kylix)• Классическая разработка RAD• Набор компиляторов (или LLVM+CLANG)

– Win– Mac OS– iOS

• Поведение• Внешний вид (стиль)• Единая среда, единый исходный код –

различные сборки24

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

«Родная» и оригинальная стилизация

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

Поддержка жестов

• Swipe• Tap• Pinch & Zoom• Tap & Hold• Double-Tap

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

«Датчики»

• Ориентация/компас• Движение• Позиционирование• Камера

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

Базы данных• Локально (SQLite, InterBase)• Клиент-сервер• Прямой доступ• Многозвенная архитектура

DataSnap Server DatabaseDelphi for iOS app

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

Delphi XE4

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

Delphi for iOS

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

Мобильное приложение решает проблемы:

• Повысить производительность• Повысить доступность• Сократить время принятия решений• Конкурентноспособность

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

Я бы начал бы мобильное приложение:

• Без потери времени на освоение другого инструмента

• ... желательно в старых-добрых традициях RAD (каковыми они бы ни были)

• Использовать готовый код• Кому-то это нужно

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

Клиенты в восторге:

• Получше выбрать, подешевле заказать• Свежие новости• Рекламные компании и скидки• В любое время, в любом месте

• Мощный тренд (enormous)

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

Менеджеры в восторге:

• Имидж компании (совет директоров)• «Баннер»• Более управляемый коллектив• Пользователи мобильных приложений –

самые активная и платежеспособная аудитория

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

Delphi FireMonkey для iOS• «Нативный стиль» iOS• «Нативный» код прилоежний• Разработка в стиле Delphi (iOS Human Interface Guidelines)

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

XE4 FireMonkey MobileDemos and Code Snippets Online

• http://sourceforge.net/p/radstudiodemos/code/HEAD/tree/branches/RadStudio_XE4/

• http://sourceforge.net/p/radstudiodemos/code/HEAD/tree/branches/RadStudio_XE4/FireMonkeyMobile/

• http://sourceforge.net/p/radstudiodemos/code/HEAD/tree/branches/RadStudio_XE4/iOSCodeSnippets/

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

Open or Grab XE4 FireMonkey MobileSamples 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/iOSCodeSnippets/

• SVN Command Line to get all XE4 samples – svn co

svn://svn.code.sf.net/p/radstudiodemos/code/branches/RadStudio_XE4 c:\AllSamples

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

Вопросы

[email protected]

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

Проектирование приложений

• Интерфейс– User experience– Проектирование взаимодействия– Сценарии– Mockup («бальзамик»)– Прототипирование

• Работа с данными• Безопасность

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

Разработка

• Роли• Сценарии• Прототипирование• Данные

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

Корпоративные данные• Local (SQLite, IBLight, IB ToGo)

– «плохой» интернет– «редкие» обновления и синхронизация

• Client/Server– «хороший» Интернет– Традиционные практики

• DataSnap («многозвенка»)– «портфельная» модель– Локальная и C/S модели

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

Локально

• «типа каталоги»• «слабая» зависимость бизнес-роли от

основной IT-инфраструктуры

Delphi for iOS app (iPhone …)

• DB в файле• IBLite• InterBase ToGo• SQLite• Пользовательская

структура

Синхронизация!

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

Client Server

• Классический дизайн C/S• «Внутри»• Интенсивный обмен данными

Delphi for iOS app(iPad…)

• InterBase Server• Third party for

Oracle/PostgreSQL/MySQL

• IBX• dbExpress• FireDAC

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

DataSnap (многозвенный доступ)

• DataSnap framework с 2010, сейчас XE4• «Портфельная модель»• dbExpress, FireDAC

DataSnap Server DatabaseDelphi for iOS app(iPhone, iPad)

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

Local + DataSnap

• Лучшее из двух технологий• Широкий диапазон задач

DataSnap Server DatabaseDelphi for iOS app

(iPhone, iPad)

Local file DB

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

Язык Delphi

• Новые возможности

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

Язык Delphi

• Старый-добрый (32/64)• LLVM – новый-злой• Front-end – back-end• IR LLVM• Новый стиль кодирования• Управление памятью• ARC (Automatic Reference Counting)• Objective-C • http://clang.llvm.org/docs/AutomaticReferenceCounting.html

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

Старый Delphi vs Новый Delphi

• Objective-C, C#, Java, .NET• Memory management, “Interface”• Борьба самих с собой

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

Зачем нужны перемены?

• Новые платформы, новые стили, новые стандарты, новые компиляторы, новый язык (точка входа)

• Много способов сделать одно и то же• Новые люди• Существующие противоречия

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

Разные типы строк

• Короткие строки Pascal (255)• AnsiString (C-o-W, R-C)• + еще немного (UTF8String и RawByteString)• С-подобные строки/функции (PChar)• Строки Unicode (с 2009), UTF16 (C-o-R, R-C)• COM-совместимые (no R-C)

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

Один тип строки

• Unicode-based• Immutable str1[i] := ch• Reference-counted

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

Как правильно?• 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;

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

Immutable• TStringBuilder (был уже давно…)

for I := Low (str1) to High (str1) doif str1 [I] = 'a' thenstr1 [I] := 'A’;

sBuilder := TStringBuilder.Create;for I := Low (str1) to High (str1) do

if str1.Chars [I] = 'a' thensBuilder.Append ('A')

elsesBuilder.Append (str1.Chars [I]);

str1 := sBuilder.ToString;sBuilder.Free;

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

Zero-based strings

• Нас предали? (продались «сюшникам?»)

• Де-факто это свершилось– Динамические массивы– List : TList; List.Items[0]– sList: TStringList; sList[]– ListBox1.Items[0]

• $ZEROBASEDSTRINGS

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

Zero-based strings

• Внутренняя структура осталась такой же.• Можно смешивать (проект, модуль,

функции)• Классические функции RTL – прежние (1-

based)• TStringHelper – используем его

– unit System.SysUtils;– MyString.Length; MyString.ToInteger;– …

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

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;

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

Automatic Reference Counting

• Автоматический подсчёт ссылок• Управление памятью• string• Interface variable• не Garbage Collector!• ARC – automatic reference counting

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

Interface

• TMyClass = class(TInterfacedObject, IMyInterface)• // ...• end;

• IMyInterface = interface(IInterface)• // ...• end;

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

Interface

• procedure TForm1.Button1Click(Sender: TObject);• var• myInterface : IMyInterface;• begin• myInterface := TMyClass.Create;• //...• end;

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

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;

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

ARC - освобождение• procedure TForm1.Button1Click(Sender: TObject);

• var• myObj : TMyClass;

• begin• myObj := TMyClass.Create;

• // ...

• myObj := nil;

• // ...

• end;

MyObj.DisposeOf;

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

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;

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

Двигаемся в ногу со временем

• Новые платформы• Новые традиции классической Delphi• Не надо бояться перемен, они к лучшему

https://www.facebook.com/SoftlineCompany

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

Заключение

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

Вопросы

[email protected]