3. Вспомогательное ПО
• Симулятор на Mac OS
• RAD PAServer XE4 (не забыть запустить)
• VMWare Fusion (Win on Mac)
• VNC Viewer (видеть Mac)
• Reflector (видеть iPhone или iPad)
4. Стенд в облаках
• Но только на этапе раннего прототипирования
http://macincloud.com
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/
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
24. FireMonkey (не VCL)
• Библиотека компонентов (не Kylix)
• Классическая разработка RAD
• Набор компиляторов (или LLVM+CLANG)
– Win
– Mac OS
– iOS
• Поведение
• Внешний вид (стиль)
• Единая среда, единый исходный код –
различные сборки
24
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 («бальзамик»)
– Прототипирование
• Работа с данными
• Безопасность
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
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
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;
63. Двигаемся в ногу со временем
• Новые платформы
• Новые традиции классической Delphi
• Не надо бояться перемен, они к лучшему
https://www.facebook.com/SoftlineCompany