Titanium Appcelerator for real developer
Why a native coder should use Titanium?
Semi-serious guide
WHO am i?
I'm Paolo Mosca
Freelance Developer
Prototype - Startup Supporter
Titanium Lover
also Tango Dancer, Amateur Photographer...
....Strong Traveler, Workaholic...
Life addicted
Who are you?
Business shark
Native coder
experienced programmer
Mobile solutions expert
Marketer
Just Curious
Lost Tourist
I'm here for the BEER
Code Purist
I can write a NASA launching rocket
algorithm in a single line...
...i will forget how to read that again in 5 minutes
...but I don't need that...
I never write wrong code
Flash Programmer / Graphic Designer
I got fired
I cannot find job
I made a great website buying a great template for Wordpress
I know Dreamweaver
I know FrontPage (really?!?)
I will start to develop awesome apps
... please don't... or try AdobeAir
.NET Developer
I worked for a long time in a big company
I'm tired to work for corporate projects,
proprietary CMS, CRM, SAP...
I really know C#
I love Microsoft
I want to step in the smart world of app dev
PhoneGAP Lover
I'm here for my Religion War
to tell you you're wrong
I will refute all your theories about Hybrid
and Cross Platform development
Cross Platform Promise
Write Once
Works Everywhere
Average revenue for single platform app (~500$/month)
Average revenue for multiple platform app (~1500$/month)
[...source: Developer Economics 2013...]
SOMETIMES DEVELOPERS FORGET THAT WE ARE HERE TO NOT JUST BUILD GREAT STUFF, BUT ALSO TO MAKE MONEY.
WORK SMARTER, NOT HARDER.
Starting with Titanium
I was old school native coder.
I must admit, this was my face when i started with Titanium
why?
I will lose control
I cannot optimize my code
I will not be able to use the last smartest paradigm I've learned in the course "best practices for awesome developer"
I will lose in performances for my great app
a near-real case
the customer: Can you develop a very simple app (no more than an hello world application)?
me: Sure! Let's do it
day 1: design the best architecture I can think, respect all the paradigm of MVC decoupling even my brain from my head
day 2: hard coding
day 3: (the customer) can you add a button to make a coffee? can you move this label to give a better experience of happiness to the end user? can you blablabla
Pure spaghetti code
45 days later...
COst ANalysis
To build a Multi Platform app going Native
iOS Development = €€€
Android Development = €€€
Development cost = €€€ + €€€
Maintain 2 different codes (often 2 teams)
To build a Cross Platform app with Titanium
Js/Titan Development = €€€
(usually less expensive than native and easier to find)
Development cost = LESS
Let's start to take it seriously
what I need to start with Titanium?
- It's better if you are a native coder
- knowledge about OOP paradigms
- strong JS skills (no... jquery is not enough)
- you really know what is (not how-to) mobile development
Titanium Platform
Development IDE (Titanium Studio)
CLI (Command line interface)
API System based on native UI control
JS to native build -> node.js
Simulator / Emulator / Devices Integration
Marketplaces Deployment
Cloud Solution (ACS)
Free & OpenSource
Pros
Pros:
- development faster than native (~70%) even on single platform
- one SDK for multiple platform
- javascript (Write Once, ADAPT Everywhere)
- performances close to native (~85-90%)
- very good documentation (since 6 months, before was horrible)
- great community
- more than 500k developers in the world
Cons
Fake Cons:
- Memory leaks (usually caused by js bad programming)
Cons:
- Bigger app (not so much)
- Native controls not 100% provided
-
Debugging (Android debugging really sucks)
- Update delay on native SDK new features released
- No visual UI
Code sample
var win = Ti.UI.createWindow({
backgroundColor:'#fff'
});
var button = Ti.UI.createButton({
right:20,
left:20,
title:'Hi there'
});
win.add(button);
win.open();
button.addEventListener('click', function(e){
alert('click!');
});
let's run our code
iphone
tizen
android
Alloy MVC
Model: Backbone
Views:
<Alloy>
<Window id="win">
<Button id="button" class="cool" onClick="clickMe" platform="ios,android"/>
</Window>
</Alloy>
Style View:
"#win":{
backgroundColor:'#fff'
},
"#button":{
right:20,
left:20,
title:'Hi there'
},
".cool":{
backgroundColor: '#999'
}
Controller:
win.open();
function clickME(){
alert('click!');
};
Titanium Today
- iOS/Android/Tizen/BB10/MobileWeb(html5 export)
- UI controls
- Database Managements
- Push Notifications
- Social Network support
- Native Modules integration
- Alloy MVC
- ACS support
Near Future: Ti.next
- WP8 Support
- Including Native Code
- Compilation in ASM (faster than native!!)
- Smaller build
Slides: https://slid.es/pablotango/titanium-presentation
paolo@idev.io
@tangotrotter
Muchas Gracias