SlideShare a Scribd company logo
1
RAD Studio XE4
Alexey Golopyatkin & Vsevolod Leonov
Minsk, June 6, 2013.
translated by Maksim Abramovich.
EPAM Systems.
2
Agenda
The strategy of Embarcadero company
Mobile and desktop applications development based on a single source code
FireMonkey as a UI library for iOS application development
Product editions and different licensing opportunities
New database access facilities in Delphi
Practical training. Mobile application development
New language features in Delphi
3
22 April – the release date of RAD Studio XE4
• The strategy of the company
– What is happening on the market?
– What we are offering?
– Where are we going?
• What does this mean for you?
– For your business
– For your developers
4
The technology does not stand still
Windows
1999
Windows & Web
2005 2
W
5
2013: The revolution of «clients»
Windows MobileMac
1 Billion 65 Million 1 Billion
6
The revolution of «clients»
Completely new situation
Operation systems market share –
iOS + Android = 45% against Windows 35%
7
When the tablets will overtake laptops?
It is done already
8
2013+
Client Device Diversity Will
9
What this means for the developer?
$ $ $ $
C# илиC++
.NET или MFC
C++ или Obj-C
OS X SDK
C++ или Obj-C
iOS SDK
Java
Android SDK
Many languages, many projects, many source code libraries
10
What Embarcadero strategy is offering?
$ $ $ $
Delphi,
C++Builder
FM
Delphi,
C++Builder
FM
Delphi,
C++Builder
FM
Delphi,
C++Builder
FM
Delphi / С++Builder, one project, single source code, one team!
11
Embarcadero: Multi-Device App Development
$
Future
Delphi (С++)
FM3 Framework
One team, one source code, accumulated
experience
One team
One source code
12
12
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
14
Where are we going?
• Two main projects (2nd half of 2013):
– Android support in Delphi
– Mobile Development in С++
(April 16 it was announced that,
Embarcadero now is a Standard C++ Foundation sponsor - isocpp.org)
• Support other platforms – next stops are
• 2013+ : SmartTV, Car Infotainment,
smart home, «smart» watches and other.
15
Embarcadero strategy
?
16
Delphi XE4
Mobile Development
17
Hardware (provisioning)
Ethernet, Wi-Fi
(patch cord)
Device cable
http://blogs.embarcadero.com/vsevolodleonov/2013/04/23/dios_dev_hardware/
18
Additional Sowtware
• Simulator in Mac OS
• RAD PAServer XE4 (need to be running)
• VMWare Fusion (Win on Mac)
• VNC Viewer (see Mac)
• Reflector (see iPhone or iPad)
19
Mac в in the cloud
• Suggested for the initial prototyping only
http://macincloud.com
20
Developer Account
• «Individual» - publish to AppStore
very attractive …
$$$
21
Developer Account
• «Corporate» - without AppStore
very attractive …
$$$
22
Delphi XE4
23
New mobile application
24
Delphi FireMonkey for iOS
• «Native style» iOS
• «Native» source code
• Well known Delphi development (iOS Human Interface Guidelines)
25
«Native» and custom styles
26
Gesture support
• Swipe
• Tap
• Pinch & Zoom
• Tap & Hold
• Double-Tap
27
Open or Grab XE4 FireMonkey Mobile
Samples and Code Snippets
• File | Open from Version Control…
– http://svn.code.sf.net/p/radstudiodemos/code/branches/RadStudio_XE4/FireMonkeyMobile/
– http://sourceforge.net/p/radstudiodemos/code/HEAD/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
28
Need Mobile Development training?
You can get it …
• vsevolod.leonov@embarcadero.com
29
New language features
30
New Compiler Architecture
Open IR
C/C++
Delphi
Intel
ARM
31
New Language features
• String types
• ARC (Automatic Reference Counting)
32
Different String Types
• Pascal short strings (255)
• AnsiString (C-o-W, R-C)
• + little bit more (UTF8String и RawByteString)
• С-like (PChar)
• Unicode strings (from 2009), UTF16 (C-o-R, R-C)
• COM-compatible (no R-C)
33
One string type
• Unicode-based
• Immutable str1[i] := ch
• Reference-counted
34
What is the right way?
• TStringBuilder (it is not new …)
• 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;
35
Immutable
• TStringBuilder (it is not new …)
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;
36
Zero-based strings
• We are familiar with it
– Dynamic arrays
– List : TList; List.Items[0]
– sList: TStringList; sList[]
– ListBox1.Items[0]
• $ZEROBASEDSTRINGS
37
Zero-based strings
• No changes in the string.
• You can mix it (project, unit, function)
• RTL functions are still 1-based
• Use TStringHelper
– unit System.SysUtils;
– MyString.Length; MyString.ToInteger;
– …
38
TStringHelper
• procedure TForm4.Button1Click(Sender: TObject);
• var
• s1: string;
• begin
• // apply to a variable
• s1 := 'Hello';
• if s1.Contains('ll') then
• ShowMessage (s1.Substring(1).Length.ToString);
• // apply to a constant
• Left := 'Hello'.Length;
• // «in chain»
• Caption := ClassName.Length.ToString;
• end;
39
Automatic Reference Counting
• Memory management
• string
• Interface variable
• Its not a Garbage Collector!
• ARC – automatic reference counting
40
Interface
• TMyClass = class(TInterfacedObject,
IMyInterface)
• // ...
• end;
• IMyInterface = interface(IInterface)
• // ...
• end;
41
Interface
• procedure TForm1.Button1Click(Sender: TObject);
• var
• myInterface : IMyInterface;
• begin
• myInterface := TMyClass.Create;
• //...
• end;
42
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;
43
ARC - release
• procedure TForm1.Button1Click(Sender:
TObject);
• var
• myObj : TMyClass;
• begin
• myObj := TMyClass.Create;
• // ...
• myObj := nil;
• // ...
• end;
MyObj.DisposeOf;
44
ARC - reference
• 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;
45
New language features in Delphi
?

More Related Content

Viewers also liked

Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
Ciklum Ukraine
 
"Connections: Что общего у Шотландии и Дональда Трампа?" by Yevgeniy Rozenblat
"Connections: Что общего у Шотландии и Дональда Трампа?" by Yevgeniy Rozenblat "Connections: Что общего у Шотландии и Дональда Трампа?" by Yevgeniy Rozenblat
"Connections: Что общего у Шотландии и Дональда Трампа?" by Yevgeniy Rozenblat EPAM Systems
 
HOW WE MAKE IT IN IT
HOW WE MAKE IT IN ITHOW WE MAKE IT IN IT
HOW WE MAKE IT IN IT
Dmitry Fedorenko
 
“Xcore (library) for android platform” by Uladzimir Klyshevich
“Xcore (library) for android platform” by Uladzimir Klyshevich“Xcore (library) for android platform” by Uladzimir Klyshevich
“Xcore (library) for android platform” by Uladzimir KlyshevichEPAM Systems
 
Collection view layout
Collection view layoutCollection view layout
Collection view layout
Ciklum Ukraine
 
Евгений Дрозд, Василий Сливка Тема: "Как тестировщику сделать счастливым Java...
Евгений Дрозд, Василий Сливка Тема: "Как тестировщику сделать счастливым Java...Евгений Дрозд, Василий Сливка Тема: "Как тестировщику сделать счастливым Java...
Евгений Дрозд, Василий Сливка Тема: "Как тестировщику сделать счастливым Java...
Ciklum Minsk
 
Антон Гордийчук Тема: "AngularJS — продвинутый HTML для web-приложений"
Антон Гордийчук Тема: "AngularJS — продвинутый HTML для web-приложений"Антон Гордийчук Тема: "AngularJS — продвинутый HTML для web-приложений"
Антон Гордийчук Тема: "AngularJS — продвинутый HTML для web-приложений"
Ciklum Minsk
 
Mobile sketching
Mobile sketching Mobile sketching
Mobile sketching
Ciklum Ukraine
 
Михаил Попчук "Cкрытые резервы команд или 1+1=3"
Михаил Попчук "Cкрытые резервы команд или 1+1=3"Михаил Попчук "Cкрытые резервы команд или 1+1=3"
Михаил Попчук "Cкрытые резервы команд или 1+1=3"
Ciklum Ukraine
 
Model-View-Controller: Tips&Tricks
Model-View-Controller: Tips&TricksModel-View-Controller: Tips&Tricks
Model-View-Controller: Tips&Tricks
Ciklum Ukraine
 
More UX in our life
More UX in our lifeMore UX in our life
More UX in our life
Ciklum Ukraine
 
Developing high load systems using C++
Developing high load systems using C++Developing high load systems using C++
Developing high load systems using C++
Ciklum Ukraine
 
Kanban development
Kanban developmentKanban development
Kanban development
Ciklum Ukraine
 
Your 1st Apple watch Application
Your 1st Apple watch ApplicationYour 1st Apple watch Application
Your 1st Apple watch Application
Ciklum Ukraine
 
"Marmalade" presentation at Ciklum event "Defining your Mobile Strategy"
"Marmalade" presentation at Ciklum event "Defining your Mobile Strategy""Marmalade" presentation at Ciklum event "Defining your Mobile Strategy"
"Marmalade" presentation at Ciklum event "Defining your Mobile Strategy"
Ciklum Ukraine
 
Dependency Injection Pattern in JavaScript, Speakers' Corner by Evgeny Dmitri...
Dependency Injection Pattern in JavaScript, Speakers' Corner by Evgeny Dmitri...Dependency Injection Pattern in JavaScript, Speakers' Corner by Evgeny Dmitri...
Dependency Injection Pattern in JavaScript, Speakers' Corner by Evgeny Dmitri...
Ciklum Minsk
 
"Through the three circles of the it hell" by Roman Liashenko
"Through the three circles of the it hell" by Roman Liashenko"Through the three circles of the it hell" by Roman Liashenko
"Through the three circles of the it hell" by Roman Liashenko
Ciklum Ukraine
 
Ольга Зигмантович "New-York: инструкция для путешественника"
Ольга Зигмантович "New-York: инструкция для путешественника"Ольга Зигмантович "New-York: инструкция для путешественника"
Ольга Зигмантович "New-York: инструкция для путешественника"EPAM Systems
 
Андрей Кравец Тема: "Пришло время быть реактивным, или..?"
Андрей Кравец Тема: "Пришло время быть реактивным, или..?"Андрей Кравец Тема: "Пришло время быть реактивным, или..?"
Андрей Кравец Тема: "Пришло время быть реактивным, или..?"
Ciklum Minsk
 
Alex Pazhyn: Google_Material_Design
Alex Pazhyn: Google_Material_DesignAlex Pazhyn: Google_Material_Design
Alex Pazhyn: Google_Material_Design
Ciklum Ukraine
 

Viewers also liked (20)

Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
"Connections: Что общего у Шотландии и Дональда Трампа?" by Yevgeniy Rozenblat
"Connections: Что общего у Шотландии и Дональда Трампа?" by Yevgeniy Rozenblat "Connections: Что общего у Шотландии и Дональда Трампа?" by Yevgeniy Rozenblat
"Connections: Что общего у Шотландии и Дональда Трампа?" by Yevgeniy Rozenblat
 
HOW WE MAKE IT IN IT
HOW WE MAKE IT IN ITHOW WE MAKE IT IN IT
HOW WE MAKE IT IN IT
 
“Xcore (library) for android platform” by Uladzimir Klyshevich
“Xcore (library) for android platform” by Uladzimir Klyshevich“Xcore (library) for android platform” by Uladzimir Klyshevich
“Xcore (library) for android platform” by Uladzimir Klyshevich
 
Collection view layout
Collection view layoutCollection view layout
Collection view layout
 
Евгений Дрозд, Василий Сливка Тема: "Как тестировщику сделать счастливым Java...
Евгений Дрозд, Василий Сливка Тема: "Как тестировщику сделать счастливым Java...Евгений Дрозд, Василий Сливка Тема: "Как тестировщику сделать счастливым Java...
Евгений Дрозд, Василий Сливка Тема: "Как тестировщику сделать счастливым Java...
 
Антон Гордийчук Тема: "AngularJS — продвинутый HTML для web-приложений"
Антон Гордийчук Тема: "AngularJS — продвинутый HTML для web-приложений"Антон Гордийчук Тема: "AngularJS — продвинутый HTML для web-приложений"
Антон Гордийчук Тема: "AngularJS — продвинутый HTML для web-приложений"
 
Mobile sketching
Mobile sketching Mobile sketching
Mobile sketching
 
Михаил Попчук "Cкрытые резервы команд или 1+1=3"
Михаил Попчук "Cкрытые резервы команд или 1+1=3"Михаил Попчук "Cкрытые резервы команд или 1+1=3"
Михаил Попчук "Cкрытые резервы команд или 1+1=3"
 
Model-View-Controller: Tips&Tricks
Model-View-Controller: Tips&TricksModel-View-Controller: Tips&Tricks
Model-View-Controller: Tips&Tricks
 
More UX in our life
More UX in our lifeMore UX in our life
More UX in our life
 
Developing high load systems using C++
Developing high load systems using C++Developing high load systems using C++
Developing high load systems using C++
 
Kanban development
Kanban developmentKanban development
Kanban development
 
Your 1st Apple watch Application
Your 1st Apple watch ApplicationYour 1st Apple watch Application
Your 1st Apple watch Application
 
"Marmalade" presentation at Ciklum event "Defining your Mobile Strategy"
"Marmalade" presentation at Ciklum event "Defining your Mobile Strategy""Marmalade" presentation at Ciklum event "Defining your Mobile Strategy"
"Marmalade" presentation at Ciklum event "Defining your Mobile Strategy"
 
Dependency Injection Pattern in JavaScript, Speakers' Corner by Evgeny Dmitri...
Dependency Injection Pattern in JavaScript, Speakers' Corner by Evgeny Dmitri...Dependency Injection Pattern in JavaScript, Speakers' Corner by Evgeny Dmitri...
Dependency Injection Pattern in JavaScript, Speakers' Corner by Evgeny Dmitri...
 
"Through the three circles of the it hell" by Roman Liashenko
"Through the three circles of the it hell" by Roman Liashenko"Through the three circles of the it hell" by Roman Liashenko
"Through the three circles of the it hell" by Roman Liashenko
 
Ольга Зигмантович "New-York: инструкция для путешественника"
Ольга Зигмантович "New-York: инструкция для путешественника"Ольга Зигмантович "New-York: инструкция для путешественника"
Ольга Зигмантович "New-York: инструкция для путешественника"
 
Андрей Кравец Тема: "Пришло время быть реактивным, или..?"
Андрей Кравец Тема: "Пришло время быть реактивным, или..?"Андрей Кравец Тема: "Пришло время быть реактивным, или..?"
Андрей Кравец Тема: "Пришло время быть реактивным, или..?"
 
Alex Pazhyn: Google_Material_Design
Alex Pazhyn: Google_Material_DesignAlex Pazhyn: Google_Material_Design
Alex Pazhyn: Google_Material_Design
 

Similar to Абрамович Максим, "Rad studio xe4"

Introduction to MonoTouch and Monodroid/Mono for Android
Introduction to MonoTouch and Monodroid/Mono for AndroidIntroduction to MonoTouch and Monodroid/Mono for Android
Introduction to MonoTouch and Monodroid/Mono for Android
Chris Hardy
 
State ofappdevelopment
State ofappdevelopmentState ofappdevelopment
State ofappdevelopment
gillygize
 
Introduction to Cross Platform Development with Xamarin/ Visual Studio
Introduction to Cross Platform Development with Xamarin/ Visual StudioIntroduction to Cross Platform Development with Xamarin/ Visual Studio
Introduction to Cross Platform Development with Xamarin/ Visual Studio
IndyMobileNetDev
 
Mono for Android... for Google Devs
Mono for Android... for Google DevsMono for Android... for Google Devs
Mono for Android... for Google Devs
Craig Dunn
 
MvvmCross Introduction
MvvmCross IntroductionMvvmCross Introduction
MvvmCross IntroductionStuart Lodge
 
MvvmCross Seminar
MvvmCross SeminarMvvmCross Seminar
MvvmCross Seminar
Xamarin
 
iOS Development Survival Guide for the .NET Guy
iOS Development Survival Guide for the .NET GuyiOS Development Survival Guide for the .NET Guy
iOS Development Survival Guide for the .NET Guy
Nick Landry
 
Matteo Gazzurelli - Andorid introduction - Google Dev Fest 2013
Matteo Gazzurelli - Andorid introduction - Google Dev Fest 2013Matteo Gazzurelli - Andorid introduction - Google Dev Fest 2013
Matteo Gazzurelli - Andorid introduction - Google Dev Fest 2013
DuckMa
 
Android Scripting
Android ScriptingAndroid Scripting
Android ScriptingJuan Gomez
 
Android Application Development Training by NITIN GUPTA
Android Application Development Training by NITIN GUPTA Android Application Development Training by NITIN GUPTA
Android Application Development Training by NITIN GUPTA
NITIN GUPTA
 
Building Effective and Rapid Applications with IBM MobileFirst Platform
Building Effective and Rapid Applications with IBM MobileFirst PlatformBuilding Effective and Rapid Applications with IBM MobileFirst Platform
Building Effective and Rapid Applications with IBM MobileFirst Platform
Andrew Ferrier
 
C# everywhere: Xamarin and cross platform development
C# everywhere: Xamarin and cross platform developmentC# everywhere: Xamarin and cross platform development
C# everywhere: Xamarin and cross platform development
Gill Cleeren
 
Demo class on android development
Demo class on android developmentDemo class on android development
Demo class on android development
Kshitiz Mishra
 
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break editionMatteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break editionDuckMa
 
Google Developer Group(GDG) DevFest Event 2012 Android talk
Google Developer Group(GDG) DevFest Event 2012 Android talkGoogle Developer Group(GDG) DevFest Event 2012 Android talk
Google Developer Group(GDG) DevFest Event 2012 Android talk
Imam Raza
 
mobile development platforms
mobile development platformsmobile development platforms
mobile development platforms
smancke
 
mobile development platforms
mobile development platformsmobile development platforms
mobile development platforms
guestfa9375
 
developementofmobileapplication-160412025313 (1).pptx
developementofmobileapplication-160412025313 (1).pptxdevelopementofmobileapplication-160412025313 (1).pptx
developementofmobileapplication-160412025313 (1).pptx
Poooi2
 
Introduction to android mobile app development.pptx
Introduction to android mobile app development.pptxIntroduction to android mobile app development.pptx
Introduction to android mobile app development.pptx
ridzah12
 
An introduction to Titanium
An introduction to TitaniumAn introduction to Titanium
An introduction to Titanium
Graham Weldon
 

Similar to Абрамович Максим, "Rad studio xe4" (20)

Introduction to MonoTouch and Monodroid/Mono for Android
Introduction to MonoTouch and Monodroid/Mono for AndroidIntroduction to MonoTouch and Monodroid/Mono for Android
Introduction to MonoTouch and Monodroid/Mono for Android
 
State ofappdevelopment
State ofappdevelopmentState ofappdevelopment
State ofappdevelopment
 
Introduction to Cross Platform Development with Xamarin/ Visual Studio
Introduction to Cross Platform Development with Xamarin/ Visual StudioIntroduction to Cross Platform Development with Xamarin/ Visual Studio
Introduction to Cross Platform Development with Xamarin/ Visual Studio
 
Mono for Android... for Google Devs
Mono for Android... for Google DevsMono for Android... for Google Devs
Mono for Android... for Google Devs
 
MvvmCross Introduction
MvvmCross IntroductionMvvmCross Introduction
MvvmCross Introduction
 
MvvmCross Seminar
MvvmCross SeminarMvvmCross Seminar
MvvmCross Seminar
 
iOS Development Survival Guide for the .NET Guy
iOS Development Survival Guide for the .NET GuyiOS Development Survival Guide for the .NET Guy
iOS Development Survival Guide for the .NET Guy
 
Matteo Gazzurelli - Andorid introduction - Google Dev Fest 2013
Matteo Gazzurelli - Andorid introduction - Google Dev Fest 2013Matteo Gazzurelli - Andorid introduction - Google Dev Fest 2013
Matteo Gazzurelli - Andorid introduction - Google Dev Fest 2013
 
Android Scripting
Android ScriptingAndroid Scripting
Android Scripting
 
Android Application Development Training by NITIN GUPTA
Android Application Development Training by NITIN GUPTA Android Application Development Training by NITIN GUPTA
Android Application Development Training by NITIN GUPTA
 
Building Effective and Rapid Applications with IBM MobileFirst Platform
Building Effective and Rapid Applications with IBM MobileFirst PlatformBuilding Effective and Rapid Applications with IBM MobileFirst Platform
Building Effective and Rapid Applications with IBM MobileFirst Platform
 
C# everywhere: Xamarin and cross platform development
C# everywhere: Xamarin and cross platform developmentC# everywhere: Xamarin and cross platform development
C# everywhere: Xamarin and cross platform development
 
Demo class on android development
Demo class on android developmentDemo class on android development
Demo class on android development
 
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break editionMatteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
 
Google Developer Group(GDG) DevFest Event 2012 Android talk
Google Developer Group(GDG) DevFest Event 2012 Android talkGoogle Developer Group(GDG) DevFest Event 2012 Android talk
Google Developer Group(GDG) DevFest Event 2012 Android talk
 
mobile development platforms
mobile development platformsmobile development platforms
mobile development platforms
 
mobile development platforms
mobile development platformsmobile development platforms
mobile development platforms
 
developementofmobileapplication-160412025313 (1).pptx
developementofmobileapplication-160412025313 (1).pptxdevelopementofmobileapplication-160412025313 (1).pptx
developementofmobileapplication-160412025313 (1).pptx
 
Introduction to android mobile app development.pptx
Introduction to android mobile app development.pptxIntroduction to android mobile app development.pptx
Introduction to android mobile app development.pptx
 
An introduction to Titanium
An introduction to TitaniumAn introduction to Titanium
An introduction to Titanium
 

More from EPAM Systems

Miniq 11: Time management by Anton Zolotarev & Andrei Artisheuski
Miniq 11: Time management by Anton Zolotarev & Andrei ArtisheuskiMiniq 11: Time management by Anton Zolotarev & Andrei Artisheuski
Miniq 11: Time management by Anton Zolotarev & Andrei ArtisheuskiEPAM Systems
 
Reporting куда как-зачем by Anton Stoliar
Reporting   куда как-зачем by Anton StoliarReporting   куда как-зачем by Anton Stoliar
Reporting куда как-зачем by Anton StoliarEPAM Systems
 
Pool and billiards by Olga Nikolaeva
Pool and billiards by Olga NikolaevaPool and billiards by Olga Nikolaeva
Pool and billiards by Olga NikolaevaEPAM Systems
 
The Way of Creating Presentations: Just do it!
The Way of Creating Presentations: Just do it!The Way of Creating Presentations: Just do it!
The Way of Creating Presentations: Just do it!EPAM Systems
 
E-mail Communication: How and Why
E-mail Communication: How and WhyE-mail Communication: How and Why
E-mail Communication: How and WhyEPAM Systems
 
николай фролов, “Gamification“
николай фролов, “Gamification“николай фролов, “Gamification“
николай фролов, “Gamification“EPAM Systems
 
Real time bidding by Danil Melnikov
Real time bidding by Danil MelnikovReal time bidding by Danil Melnikov
Real time bidding by Danil MelnikovEPAM Systems
 
Никита Манько “Code review”
Никита Манько “Code review”Никита Манько “Code review”
Никита Манько “Code review”EPAM Systems
 
Чурюканов Вячеслав, “Code simple, but not simpler”
Чурюканов Вячеслав, “Code simple, but not simpler”Чурюканов Вячеслав, “Code simple, but not simpler”
Чурюканов Вячеслав, “Code simple, but not simpler”EPAM Systems
 
Демидюк Павел , “Continuous integration with the real traffic light in m&e of...
Демидюк Павел , “Continuous integration with the real traffic light in m&e of...Демидюк Павел , “Continuous integration with the real traffic light in m&e of...
Демидюк Павел , “Continuous integration with the real traffic light in m&e of...EPAM Systems
 
Agile retrospectives by nick frolov miniq
Agile retrospectives by nick frolov   miniqAgile retrospectives by nick frolov   miniq
Agile retrospectives by nick frolov miniqEPAM Systems
 
Other way to travel by Anna Lukyanenka
Other way to travel by Anna LukyanenkaOther way to travel by Anna Lukyanenka
Other way to travel by Anna LukyanenkaEPAM Systems
 
Computer as a musical instrument by Sergey Moiseychik
Computer as a musical instrument by Sergey MoiseychikComputer as a musical instrument by Sergey Moiseychik
Computer as a musical instrument by Sergey MoiseychikEPAM Systems
 
Антон Золотарев, Екатерина Невельская "По следам SQA days"
Антон Золотарев, Екатерина Невельская "По следам SQA days"Антон Золотарев, Екатерина Невельская "По следам SQA days"
Антон Золотарев, Екатерина Невельская "По следам SQA days"EPAM Systems
 
Сергей Семашко "End to end test: cheap and effective"
Сергей Семашко "End to end test: cheap and effective"Сергей Семашко "End to end test: cheap and effective"
Сергей Семашко "End to end test: cheap and effective"EPAM Systems
 
Alexander Litvinok (software engineer) "bdd wtf"
Alexander Litvinok (software engineer) "bdd wtf"Alexander Litvinok (software engineer) "bdd wtf"
Alexander Litvinok (software engineer) "bdd wtf"EPAM Systems
 
Юрий Шиляев "Marshmallow Challenge"
Юрий Шиляев "Marshmallow Challenge"Юрий Шиляев "Marshmallow Challenge"
Юрий Шиляев "Marshmallow Challenge"EPAM Systems
 
Павел Шут "Оптимизация интерфейсов под touch-девайсы"
Павел Шут "Оптимизация интерфейсов под touch-девайсы"Павел Шут "Оптимизация интерфейсов под touch-девайсы"
Павел Шут "Оптимизация интерфейсов под touch-девайсы"EPAM Systems
 
"Personal finance" by Viktar Volkau
"Personal finance" by Viktar Volkau"Personal finance" by Viktar Volkau
"Personal finance" by Viktar VolkauEPAM Systems
 

More from EPAM Systems (20)

Miniq 11: Time management by Anton Zolotarev & Andrei Artisheuski
Miniq 11: Time management by Anton Zolotarev & Andrei ArtisheuskiMiniq 11: Time management by Anton Zolotarev & Andrei Artisheuski
Miniq 11: Time management by Anton Zolotarev & Andrei Artisheuski
 
Reporting куда как-зачем by Anton Stoliar
Reporting   куда как-зачем by Anton StoliarReporting   куда как-зачем by Anton Stoliar
Reporting куда как-зачем by Anton Stoliar
 
Pool and billiards by Olga Nikolaeva
Pool and billiards by Olga NikolaevaPool and billiards by Olga Nikolaeva
Pool and billiards by Olga Nikolaeva
 
The Way of Creating Presentations: Just do it!
The Way of Creating Presentations: Just do it!The Way of Creating Presentations: Just do it!
The Way of Creating Presentations: Just do it!
 
E-mail Communication: How and Why
E-mail Communication: How and WhyE-mail Communication: How and Why
E-mail Communication: How and Why
 
николай фролов, “Gamification“
николай фролов, “Gamification“николай фролов, “Gamification“
николай фролов, “Gamification“
 
Real time bidding by Danil Melnikov
Real time bidding by Danil MelnikovReal time bidding by Danil Melnikov
Real time bidding by Danil Melnikov
 
Никита Манько “Code review”
Никита Манько “Code review”Никита Манько “Code review”
Никита Манько “Code review”
 
Чурюканов Вячеслав, “Code simple, but not simpler”
Чурюканов Вячеслав, “Code simple, but not simpler”Чурюканов Вячеслав, “Code simple, but not simpler”
Чурюканов Вячеслав, “Code simple, but not simpler”
 
Демидюк Павел , “Continuous integration with the real traffic light in m&e of...
Демидюк Павел , “Continuous integration with the real traffic light in m&e of...Демидюк Павел , “Continuous integration with the real traffic light in m&e of...
Демидюк Павел , “Continuous integration with the real traffic light in m&e of...
 
Agile retrospectives by nick frolov miniq
Agile retrospectives by nick frolov   miniqAgile retrospectives by nick frolov   miniq
Agile retrospectives by nick frolov miniq
 
Other way to travel by Anna Lukyanenka
Other way to travel by Anna LukyanenkaOther way to travel by Anna Lukyanenka
Other way to travel by Anna Lukyanenka
 
Computer as a musical instrument by Sergey Moiseychik
Computer as a musical instrument by Sergey MoiseychikComputer as a musical instrument by Sergey Moiseychik
Computer as a musical instrument by Sergey Moiseychik
 
Антон Золотарев, Екатерина Невельская "По следам SQA days"
Антон Золотарев, Екатерина Невельская "По следам SQA days"Антон Золотарев, Екатерина Невельская "По следам SQA days"
Антон Золотарев, Екатерина Невельская "По следам SQA days"
 
Сергей Семашко "End to end test: cheap and effective"
Сергей Семашко "End to end test: cheap and effective"Сергей Семашко "End to end test: cheap and effective"
Сергей Семашко "End to end test: cheap and effective"
 
Alexander Litvinok (software engineer) "bdd wtf"
Alexander Litvinok (software engineer) "bdd wtf"Alexander Litvinok (software engineer) "bdd wtf"
Alexander Litvinok (software engineer) "bdd wtf"
 
Dvcs overview
Dvcs overviewDvcs overview
Dvcs overview
 
Юрий Шиляев "Marshmallow Challenge"
Юрий Шиляев "Marshmallow Challenge"Юрий Шиляев "Marshmallow Challenge"
Юрий Шиляев "Marshmallow Challenge"
 
Павел Шут "Оптимизация интерфейсов под touch-девайсы"
Павел Шут "Оптимизация интерфейсов под touch-девайсы"Павел Шут "Оптимизация интерфейсов под touch-девайсы"
Павел Шут "Оптимизация интерфейсов под touch-девайсы"
 
"Personal finance" by Viktar Volkau
"Personal finance" by Viktar Volkau"Personal finance" by Viktar Volkau
"Personal finance" by Viktar Volkau
 

Recently uploaded

PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
Ralf Eggert
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Tobias Schneck
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Jeffrey Haguewood
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
Product School
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
DianaGray10
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
Product School
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
CatarinaPereira64715
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 

Recently uploaded (20)

PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 

Абрамович Максим, "Rad studio xe4"

  • 1. 1 RAD Studio XE4 Alexey Golopyatkin & Vsevolod Leonov Minsk, June 6, 2013. translated by Maksim Abramovich. EPAM Systems.
  • 2. 2 Agenda The strategy of Embarcadero company Mobile and desktop applications development based on a single source code FireMonkey as a UI library for iOS application development Product editions and different licensing opportunities New database access facilities in Delphi Practical training. Mobile application development New language features in Delphi
  • 3. 3 22 April – the release date of RAD Studio XE4 • The strategy of the company – What is happening on the market? – What we are offering? – Where are we going? • What does this mean for you? – For your business – For your developers
  • 4. 4 The technology does not stand still Windows 1999 Windows & Web 2005 2 W
  • 5. 5 2013: The revolution of «clients» Windows MobileMac 1 Billion 65 Million 1 Billion
  • 6. 6 The revolution of «clients» Completely new situation Operation systems market share – iOS + Android = 45% against Windows 35%
  • 7. 7 When the tablets will overtake laptops? It is done already
  • 9. 9 What this means for the developer? $ $ $ $ C# илиC++ .NET или MFC C++ или Obj-C OS X SDK C++ или Obj-C iOS SDK Java Android SDK Many languages, many projects, many source code libraries
  • 10. 10 What Embarcadero strategy is offering? $ $ $ $ Delphi, C++Builder FM Delphi, C++Builder FM Delphi, C++Builder FM Delphi, C++Builder FM Delphi / С++Builder, one project, single source code, one team!
  • 11. 11 Embarcadero: Multi-Device App Development $ Future Delphi (С++) FM3 Framework One team, one source code, accumulated experience One team One source code
  • 12. 12 12 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
  • 13. 14 Where are we going? • Two main projects (2nd half of 2013): – Android support in Delphi – Mobile Development in С++ (April 16 it was announced that, Embarcadero now is a Standard C++ Foundation sponsor - isocpp.org) • Support other platforms – next stops are • 2013+ : SmartTV, Car Infotainment, smart home, «smart» watches and other.
  • 16. 17 Hardware (provisioning) Ethernet, Wi-Fi (patch cord) Device cable http://blogs.embarcadero.com/vsevolodleonov/2013/04/23/dios_dev_hardware/
  • 17. 18 Additional Sowtware • Simulator in Mac OS • RAD PAServer XE4 (need to be running) • VMWare Fusion (Win on Mac) • VNC Viewer (see Mac) • Reflector (see iPhone or iPad)
  • 18. 19 Mac в in the cloud • Suggested for the initial prototyping only http://macincloud.com
  • 19. 20 Developer Account • «Individual» - publish to AppStore very attractive … $$$
  • 20. 21 Developer Account • «Corporate» - without AppStore very attractive … $$$
  • 23. 24 Delphi FireMonkey for iOS • «Native style» iOS • «Native» source code • Well known Delphi development (iOS Human Interface Guidelines)
  • 25. 26 Gesture support • Swipe • Tap • Pinch & Zoom • Tap & Hold • Double-Tap
  • 26. 27 Open or Grab XE4 FireMonkey Mobile Samples and Code Snippets • File | Open from Version Control… – http://svn.code.sf.net/p/radstudiodemos/code/branches/RadStudio_XE4/FireMonkeyMobile/ – http://sourceforge.net/p/radstudiodemos/code/HEAD/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
  • 27. 28 Need Mobile Development training? You can get it … • vsevolod.leonov@embarcadero.com
  • 29. 30 New Compiler Architecture Open IR C/C++ Delphi Intel ARM
  • 30. 31 New Language features • String types • ARC (Automatic Reference Counting)
  • 31. 32 Different String Types • Pascal short strings (255) • AnsiString (C-o-W, R-C) • + little bit more (UTF8String и RawByteString) • С-like (PChar) • Unicode strings (from 2009), UTF16 (C-o-R, R-C) • COM-compatible (no R-C)
  • 32. 33 One string type • Unicode-based • Immutable str1[i] := ch • Reference-counted
  • 33. 34 What is the right way? • TStringBuilder (it is not new …) • 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;
  • 34. 35 Immutable • TStringBuilder (it is not new …) 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;
  • 35. 36 Zero-based strings • We are familiar with it – Dynamic arrays – List : TList; List.Items[0] – sList: TStringList; sList[] – ListBox1.Items[0] • $ZEROBASEDSTRINGS
  • 36. 37 Zero-based strings • No changes in the string. • You can mix it (project, unit, function) • RTL functions are still 1-based • Use TStringHelper – unit System.SysUtils; – MyString.Length; MyString.ToInteger; – …
  • 37. 38 TStringHelper • procedure TForm4.Button1Click(Sender: TObject); • var • s1: string; • begin • // apply to a variable • s1 := 'Hello'; • if s1.Contains('ll') then • ShowMessage (s1.Substring(1).Length.ToString); • // apply to a constant • Left := 'Hello'.Length; • // «in chain» • Caption := ClassName.Length.ToString; • end;
  • 38. 39 Automatic Reference Counting • Memory management • string • Interface variable • Its not a Garbage Collector! • ARC – automatic reference counting
  • 39. 40 Interface • TMyClass = class(TInterfacedObject, IMyInterface) • // ... • end; • IMyInterface = interface(IInterface) • // ... • end;
  • 40. 41 Interface • procedure TForm1.Button1Click(Sender: TObject); • var • myInterface : IMyInterface; • begin • myInterface := TMyClass.Create; • //... • end;
  • 41. 42 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;
  • 42. 43 ARC - release • procedure TForm1.Button1Click(Sender: TObject); • var • myObj : TMyClass; • begin • myObj := TMyClass.Create; • // ... • myObj := nil; • // ... • end; MyObj.DisposeOf;
  • 43. 44 ARC - reference • 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;

Editor's Notes

  1. Today PCs/LaptopsPhonesTabletsMini-TabletsPhabletsPC-bletsSmartTVsAutomobile InfotainmentImminentSmart Home AutomationSmart WatchesSmart Health Devices
  2. The old wayWindows dev team and Mac dev team using different tools and language variantsDuplicate development and QA effortIncreased development costSlower time to market or delay in delivering a Mac versionThe C++Builder wayOne development team, one toolCreate the application once. Click to compile to Windows. Click to compile to Mac from the same project. No extra development effort.Reduce lines of code by up to 80% using C++Builder’s proven visual development solutionResults: Faster time to market for Win/Mac at lower cost.
  3. The old wayWindows dev team and Mac dev team using different tools and language variantsDuplicate development and QA effortIncreased development costSlower time to market or delay in delivering a Mac versionThe C++Builder wayOne development team, one toolCreate the application once. Click to compile to Windows. Click to compile to Mac from the same project. No extra development effort.Reduce lines of code by up to 80% using C++Builder’s proven visual development solutionResults: Faster time to market for Win/Mac at lower cost.
  4. The old wayWindows dev team and Mac dev team using different tools and language variantsDuplicate development and QA effortIncreased development costSlower time to market or delay in delivering a Mac versionThe C++Builder wayOne development team, one toolCreate the application once. Click to compile to Windows. Click to compile to Mac from the same project. No extra development effort.Reduce lines of code by up to 80% using C++Builder’s proven visual development solutionResults: Faster time to market for Win/Mac at lower cost.