SlideShare a Scribd company logo
Using Titanium for
multi-platform development
                     Arul Kumaran
       Twitter: @_Arul | http://blog.luracast.com



                   More Information:
    Twitter: @appcelerator | http://appcelerator.com


                     BarCamp Singapore 4               1
Today’s Presentation
• What is Titanium?
• Why Titanium?
• API Overview
• Demos:
 – Your First Project
 – Mobile TwitPic Client
 – The mobile ‘kitchen sink’
•Q&A

               @_Arul | Arul Kumaran - BarCamp Singapore 4   2
An Unlikely Hero
• For a decade, web technologies have
  become one of the world’s most popular
  client application technology solutions:
 – Easy to deploy and maintain
 – Cross platform
 – Open standards
• Warts and all, it’s tough to find a developer
  who has ZERO experience with these tools


               @_Arul | Arul Kumaran - BarCamp Singapore 4   3
If web apps are so great...
...why are we interested in building native
applications at all? Well:
– They feel responsive
– They leverage platform capabilities
  • Filesystem I/O
  • Local Database
  • Mobile: Camera or Accelerometer
– They are or can be ‘always on’
– They can be used offline

               @_Arul | Arul Kumaran - BarCamp Singapore 4   4
But my dev shop has...
• An investment in the people, tools, skills,
  and technology to build web applications
• An appreciation for open source and open
  standards
• A need to get market quickly
• An aversion to maintaining a codebase per
  supported platform



              @_Arul | Arul Kumaran - BarCamp Singapore 4   5
If only you could...
• Build fully native apps using web
  technologies you know today
• Build cross platform apps from a shared
  codebase
• Use open source software, based on open
  standards
• Find lots of available development talent to
  build these apps


              @_Arul | Arul Kumaran - BarCamp Singapore 4   6
Enter Titanium

 Titanium is an open source framework for
    building native desktop and mobile
 applications using open web technologies
        (HTML, CSS, and JavaScript)

• Website: http://appcelerator.com
• Twitter: http://twitter.com/appcelerator
• Source: http://github.com/appcelerator

              @_Arul | Arul Kumaran - BarCamp Singapore 4   7
Platforms?
• Desktop: Win32, Mac OS X (Intel), Linux
• Mobile: iPhone OS, Android
• More to come




              @_Arul | Arul Kumaran - BarCamp Singapore 4   8
License?
• Open Source under Apache 2.0
• Commercial training and support services
  available
• More value add services to come (analytics)
• Core SDK - always free and open source




              @_Arul | Arul Kumaran - BarCamp Singapore 4   9
Titanium “Sweet Spot”
• Data-driven web service clients (Enterprise
  applications)
• Web service mash-ups
• Social utilities
• Brand affinity
• Casual games
• Anything requiring cross-platform support


              @_Arul | Arul Kumaran - BarCamp Singapore 4   10
More on Titanium
• Web: http://appcelerator.com
• Twitter: http://twitter.com/appcelerator
• Docs: http://www.codestrong.com
• Videos: http://vimeo.com/appcelerator
• Source: http://github.com/appcelerator




              @_Arul | Arul Kumaran - BarCamp Singapore 4   11
Desktop Architecture and API
         Overview



        @_Arul | Arul Kumaran - BarCamp Singapore 4   12
Desktop Architecture




    @_Arul | Arul Kumaran - BarCamp Singapore 4   13
Desktop User Interface
• Tray and Dock icons
• System Notifications
• Application Menus
• More




              @_Arul | Arul Kumaran - BarCamp Singapore 4   14
Media
• Play bundled or remote sound files
• System notification (beep)




              @_Arul | Arul Kumaran - BarCamp Singapore 4   15
Networking
• HTTPClient (XHR style object)
• Socket level access
• Built-in IRC chat client




              @_Arul | Arul Kumaran - BarCamp Singapore 4   16
Database and Filesystem
• Write files to the
  local filesystem
• Read files from disk
• Read file via drag and
  drop
• Use a synchronous or
  async database API



               @_Arul | Arul Kumaran - BarCamp Singapore 4   17
Workers
• Spin off worker threads
• Communicate asynchronously with the
  worker through a JavaScript API
• Offload long running tasks to keep your app
  responsive




              @_Arul | Arul Kumaran - BarCamp Singapore 4   18
Language Modules
• Language modules
  are optionally
  included
• Full DOM access
• Three currently
  supported modules:
 – Ruby
 – Python
 – PHP

              @_Arul | Arul Kumaran - BarCamp Singapore 4   19
More
• Manage/run processes and applications
• Take screenshots
• Update your application remotely
• Get runtime platform data
• More at http://codestrong.com/titanium




             @_Arul | Arul Kumaran - BarCamp Singapore 4   20
Mobile Architecture and API
         Overview



       @_Arul | Arul Kumaran - BarCamp Singapore 4   21
Mobile Architecture




   @_Arul | Arul Kumaran - BarCamp Singapore 4   22
Media
Stream or package audio and video
content




                   @_Arul | Arul Kumaran - BarCamp Singapore 4   23
More Media...
Interact with the iPhone or Android
built-in cameras




                   @_Arul | Arul Kumaran - BarCamp Singapore 4   24
Geo-location
Use Geo-location to leverage your
user’s position in the world




                   @_Arul | Arul Kumaran - BarCamp Singapore 4   25
Accelerometer
Use advanced gestures and track
movement to create
groundbreaking user interfaces




                   @_Arul | Arul Kumaran - BarCamp Singapore 4   26
Database and File System
Access a SQLite Database (sync or
async) and the platform file system




                   @_Arul | Arul Kumaran - BarCamp Singapore 4   27
Network
XHR-style object for remote data
requests.




                   @_Arul | Arul Kumaran - BarCamp Singapore 4   28
Native UI Controls
Use native controls through a
JavaScript interface.




                    @_Arul | Arul Kumaran - BarCamp Singapore 4   29
Integrated YQL Support
• YQL - A web service
  aggregator using
  open tables
• Built in to
  Titanium.Yahoo
  namespace




              @_Arul | Arul Kumaran - BarCamp Singapore 4   30
Facebook Connect
• Facebook Connect
  module (currently
  iPhone only)
• Currently support
  for FQL
• More on the way




              @_Arul | Arul Kumaran - BarCamp Singapore 4   31
Native iPhone UI
• Tab Bar
• Nav Bar
• Table View
• Alert / Options
• Group Views / Text
• Many More



              @_Arul | Arul Kumaran - BarCamp Singapore 4   32
Native Android UI
• Tab Bar
• Table View
• Alert / Options
• Activity Indicator
• Notifications
• Many More



               @_Arul | Arul Kumaran - BarCamp Singapore 4   33
Common APIs
iPhone Table View                                            Android Table View




                        Same Code Creates Both




                    @_Arul | Arul Kumaran - BarCamp Singapore 4                   34
More APIs
• Platform / OS Data
• Application Properties
• Logging
• Scroll and Image Views
• Composite Views
• More always coming



              @_Arul | Arul Kumaran - BarCamp Singapore 4   35
Still Want More?
• Kitchen Sink - Full API Demo
• Codestrong.com has Examples and Guides
• http://www.codestrong.com/timobile/
  samples/




             @_Arul | Arul Kumaran - BarCamp Singapore 4   36
Titanium Developer
•Developer is a Titanium Application
•Projects created/managed via Titanium
 Developer
•Titanium Developer deploys code to
 simulators
•Developer also helps with testing and
 packaging for devices
•Requires sign-up for Appcelerator Network
 (support, e-mail list, other services)
             @_Arul | Arul Kumaran - BarCamp Singapore 4   37
Kicking The Tires
• Your first application
 – Desktop project layout
 – Mobile project layout
• Demos
 – Mobile TwitPic Client
 – Mobile: Kitchen Sink




               @_Arul | Arul Kumaran - BarCamp Singapore 4   38
Next Steps
• Download: appcelerator.com/download
• Hack
 – Docs/Samples: http://www.codestrong.com
 – Screencasts: http://vimeo.com/appcelerator
• Get Help
 – http://support.appcelerator.net
 – IRC Chat - irc.freenode.net / #titanium_app



               @_Arul | Arul Kumaran - BarCamp Singapore 4   39
Questions?




@_Arul | Arul Kumaran - BarCamp Singapore 4   40

More Related Content

PPTX
Io t technologies
PPTX
Accessibility update for print disability round table
PPTX
SPSCasablanca - SPFx Deployment
PDF
Modello, More Than Just a Pretty Picture
PDF
Infinite Toolkit: an overview
PDF
Infinite Toolkit: a deep dive
PDF
aOS Monaco 2019 - B7 - I Developed a SPFx solution, what to do next and how t...
PDF
What's New in Unifier 16.1
Io t technologies
Accessibility update for print disability round table
SPSCasablanca - SPFx Deployment
Modello, More Than Just a Pretty Picture
Infinite Toolkit: an overview
Infinite Toolkit: a deep dive
aOS Monaco 2019 - B7 - I Developed a SPFx solution, what to do next and how t...
What's New in Unifier 16.1

What's hot (10)

PDF
Primavera Mobile Applications - Now and Beyond
PPTX
Sap HCI online training
PPTX
Dashboards as Code by Tim Hall, VP of Product | InfluxData
PDF
What's New in Primavera P6 16.2
PDF
A look ahead at RAP (ESE 2010)
PDF
Primavera Oracle Cloud Market Place
PDF
Oracle Primavera P6 R16.1
PPT
What is Enterprise Resource Planning, SAP and SAP FIORI?
PDF
P6 Release 8 Application Considerations Overview
PPTX
T44u 2015, upgrading to 8
Primavera Mobile Applications - Now and Beyond
Sap HCI online training
Dashboards as Code by Tim Hall, VP of Product | InfluxData
What's New in Primavera P6 16.2
A look ahead at RAP (ESE 2010)
Primavera Oracle Cloud Market Place
Oracle Primavera P6 R16.1
What is Enterprise Resource Planning, SAP and SAP FIORI?
P6 Release 8 Application Considerations Overview
T44u 2015, upgrading to 8
Ad

Viewers also liked (6)

PDF
Testing and Documenting Pragmatic / RESTful Web API
PPT
Science Shop Presentation Brussels Dec 2007 4[1]
PPT
17 09 2008 Ms Jorgensen Env Mgmt Transnat Product Chains
PDF
Taking Care of The REST - Creating your own RESTful API Server using Restler 2.0
PPTX
Evaluating and Testing Web APIs
PPTX
Api testing
Testing and Documenting Pragmatic / RESTful Web API
Science Shop Presentation Brussels Dec 2007 4[1]
17 09 2008 Ms Jorgensen Env Mgmt Transnat Product Chains
Taking Care of The REST - Creating your own RESTful API Server using Restler 2.0
Evaluating and Testing Web APIs
Api testing
Ad

Similar to Using Titanium for multi-platform development including iPhone and Android (20)

ZIP
Building iPhone/Andriod Apps with Titanium Appcelerator for a Rails Backend
PPTX
Cloud Services Powered by IBM SoftLayer and NetflixOSS
PPTX
TechTalk: Get to Know Perfecto
PPTX
DevOps, Kubernetes and Istio
PPTX
Behaviour Driven Development - Cuking the Agile world
PPTX
2013 ASTD TechKnowledge Case Studies – Aaron Silvers
PDF
aOS Monaco - SPFx deployment
PDF
Plataforma Java Embedded & Internet of Things (IoT)
PPTX
Getting Started with Splunk Breakout Session
PDF
B3 getting started_with_cloud_native_development
PPSX
CI-CD Jenkins, GitHub Actions, Tekton
PDF
Automation Ops Series: Session 1 - Introduction and setup DevOps for UiPath p...
PPTX
How Spinnaker helped us achieve real Continuous Delivery
PDF
Automating the management of Akamai properties with Open Source
PPTX
SharePoint Apps model overview
PDF
Delivering Mobile Apps to the Field with Oracle
PDF
NSTC2019: Choosing CI Friendly Mobile Automation Framework
PDF
Oracle Cloud deployment with Terraform
PDF
Building an aruba proof of concept lab javier urtubia
PDF
from ai.backend import python @ pycontw2018
Building iPhone/Andriod Apps with Titanium Appcelerator for a Rails Backend
Cloud Services Powered by IBM SoftLayer and NetflixOSS
TechTalk: Get to Know Perfecto
DevOps, Kubernetes and Istio
Behaviour Driven Development - Cuking the Agile world
2013 ASTD TechKnowledge Case Studies – Aaron Silvers
aOS Monaco - SPFx deployment
Plataforma Java Embedded & Internet of Things (IoT)
Getting Started with Splunk Breakout Session
B3 getting started_with_cloud_native_development
CI-CD Jenkins, GitHub Actions, Tekton
Automation Ops Series: Session 1 - Introduction and setup DevOps for UiPath p...
How Spinnaker helped us achieve real Continuous Delivery
Automating the management of Akamai properties with Open Source
SharePoint Apps model overview
Delivering Mobile Apps to the Field with Oracle
NSTC2019: Choosing CI Friendly Mobile Automation Framework
Oracle Cloud deployment with Terraform
Building an aruba proof of concept lab javier urtubia
from ai.backend import python @ pycontw2018

More from Arul Kumaran (6)

PDF
Getting out of Callback Hell in PHP
PPTX
Accelerating Xamarin Development
PPTX
iOS Native Development with Xamarin
PDF
Less Verbose ActionScript 3.0 - Write less and do more!
PPT
UI Interactions Testing with FlexMonkey
PPS
Flex Production Tips & Techniques
Getting out of Callback Hell in PHP
Accelerating Xamarin Development
iOS Native Development with Xamarin
Less Verbose ActionScript 3.0 - Write less and do more!
UI Interactions Testing with FlexMonkey
Flex Production Tips & Techniques

Recently uploaded (20)

PPTX
Big Data Technologies - Introduction.pptx
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PDF
Approach and Philosophy of On baking technology
PDF
cuic standard and advanced reporting.pdf
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Machine learning based COVID-19 study performance prediction
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
DOCX
The AUB Centre for AI in Media Proposal.docx
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Encapsulation theory and applications.pdf
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Big Data Technologies - Introduction.pptx
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Approach and Philosophy of On baking technology
cuic standard and advanced reporting.pdf
Dropbox Q2 2025 Financial Results & Investor Presentation
MIND Revenue Release Quarter 2 2025 Press Release
Diabetes mellitus diagnosis method based random forest with bat algorithm
NewMind AI Weekly Chronicles - August'25 Week I
Unlocking AI with Model Context Protocol (MCP)
Spectral efficient network and resource selection model in 5G networks
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Machine learning based COVID-19 study performance prediction
20250228 LYD VKU AI Blended-Learning.pptx
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
The AUB Centre for AI in Media Proposal.docx
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Encapsulation theory and applications.pdf
“AI and Expert System Decision Support & Business Intelligence Systems”
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...

Using Titanium for multi-platform development including iPhone and Android

  • 1. Using Titanium for multi-platform development Arul Kumaran Twitter: @_Arul | http://blog.luracast.com More Information: Twitter: @appcelerator | http://appcelerator.com BarCamp Singapore 4 1
  • 2. Today’s Presentation • What is Titanium? • Why Titanium? • API Overview • Demos: – Your First Project – Mobile TwitPic Client – The mobile ‘kitchen sink’ •Q&A @_Arul | Arul Kumaran - BarCamp Singapore 4 2
  • 3. An Unlikely Hero • For a decade, web technologies have become one of the world’s most popular client application technology solutions: – Easy to deploy and maintain – Cross platform – Open standards • Warts and all, it’s tough to find a developer who has ZERO experience with these tools @_Arul | Arul Kumaran - BarCamp Singapore 4 3
  • 4. If web apps are so great... ...why are we interested in building native applications at all? Well: – They feel responsive – They leverage platform capabilities • Filesystem I/O • Local Database • Mobile: Camera or Accelerometer – They are or can be ‘always on’ – They can be used offline @_Arul | Arul Kumaran - BarCamp Singapore 4 4
  • 5. But my dev shop has... • An investment in the people, tools, skills, and technology to build web applications • An appreciation for open source and open standards • A need to get market quickly • An aversion to maintaining a codebase per supported platform @_Arul | Arul Kumaran - BarCamp Singapore 4 5
  • 6. If only you could... • Build fully native apps using web technologies you know today • Build cross platform apps from a shared codebase • Use open source software, based on open standards • Find lots of available development talent to build these apps @_Arul | Arul Kumaran - BarCamp Singapore 4 6
  • 7. Enter Titanium Titanium is an open source framework for building native desktop and mobile applications using open web technologies (HTML, CSS, and JavaScript) • Website: http://appcelerator.com • Twitter: http://twitter.com/appcelerator • Source: http://github.com/appcelerator @_Arul | Arul Kumaran - BarCamp Singapore 4 7
  • 8. Platforms? • Desktop: Win32, Mac OS X (Intel), Linux • Mobile: iPhone OS, Android • More to come @_Arul | Arul Kumaran - BarCamp Singapore 4 8
  • 9. License? • Open Source under Apache 2.0 • Commercial training and support services available • More value add services to come (analytics) • Core SDK - always free and open source @_Arul | Arul Kumaran - BarCamp Singapore 4 9
  • 10. Titanium “Sweet Spot” • Data-driven web service clients (Enterprise applications) • Web service mash-ups • Social utilities • Brand affinity • Casual games • Anything requiring cross-platform support @_Arul | Arul Kumaran - BarCamp Singapore 4 10
  • 11. More on Titanium • Web: http://appcelerator.com • Twitter: http://twitter.com/appcelerator • Docs: http://www.codestrong.com • Videos: http://vimeo.com/appcelerator • Source: http://github.com/appcelerator @_Arul | Arul Kumaran - BarCamp Singapore 4 11
  • 12. Desktop Architecture and API Overview @_Arul | Arul Kumaran - BarCamp Singapore 4 12
  • 13. Desktop Architecture @_Arul | Arul Kumaran - BarCamp Singapore 4 13
  • 14. Desktop User Interface • Tray and Dock icons • System Notifications • Application Menus • More @_Arul | Arul Kumaran - BarCamp Singapore 4 14
  • 15. Media • Play bundled or remote sound files • System notification (beep) @_Arul | Arul Kumaran - BarCamp Singapore 4 15
  • 16. Networking • HTTPClient (XHR style object) • Socket level access • Built-in IRC chat client @_Arul | Arul Kumaran - BarCamp Singapore 4 16
  • 17. Database and Filesystem • Write files to the local filesystem • Read files from disk • Read file via drag and drop • Use a synchronous or async database API @_Arul | Arul Kumaran - BarCamp Singapore 4 17
  • 18. Workers • Spin off worker threads • Communicate asynchronously with the worker through a JavaScript API • Offload long running tasks to keep your app responsive @_Arul | Arul Kumaran - BarCamp Singapore 4 18
  • 19. Language Modules • Language modules are optionally included • Full DOM access • Three currently supported modules: – Ruby – Python – PHP @_Arul | Arul Kumaran - BarCamp Singapore 4 19
  • 20. More • Manage/run processes and applications • Take screenshots • Update your application remotely • Get runtime platform data • More at http://codestrong.com/titanium @_Arul | Arul Kumaran - BarCamp Singapore 4 20
  • 21. Mobile Architecture and API Overview @_Arul | Arul Kumaran - BarCamp Singapore 4 21
  • 22. Mobile Architecture @_Arul | Arul Kumaran - BarCamp Singapore 4 22
  • 23. Media Stream or package audio and video content @_Arul | Arul Kumaran - BarCamp Singapore 4 23
  • 24. More Media... Interact with the iPhone or Android built-in cameras @_Arul | Arul Kumaran - BarCamp Singapore 4 24
  • 25. Geo-location Use Geo-location to leverage your user’s position in the world @_Arul | Arul Kumaran - BarCamp Singapore 4 25
  • 26. Accelerometer Use advanced gestures and track movement to create groundbreaking user interfaces @_Arul | Arul Kumaran - BarCamp Singapore 4 26
  • 27. Database and File System Access a SQLite Database (sync or async) and the platform file system @_Arul | Arul Kumaran - BarCamp Singapore 4 27
  • 28. Network XHR-style object for remote data requests. @_Arul | Arul Kumaran - BarCamp Singapore 4 28
  • 29. Native UI Controls Use native controls through a JavaScript interface. @_Arul | Arul Kumaran - BarCamp Singapore 4 29
  • 30. Integrated YQL Support • YQL - A web service aggregator using open tables • Built in to Titanium.Yahoo namespace @_Arul | Arul Kumaran - BarCamp Singapore 4 30
  • 31. Facebook Connect • Facebook Connect module (currently iPhone only) • Currently support for FQL • More on the way @_Arul | Arul Kumaran - BarCamp Singapore 4 31
  • 32. Native iPhone UI • Tab Bar • Nav Bar • Table View • Alert / Options • Group Views / Text • Many More @_Arul | Arul Kumaran - BarCamp Singapore 4 32
  • 33. Native Android UI • Tab Bar • Table View • Alert / Options • Activity Indicator • Notifications • Many More @_Arul | Arul Kumaran - BarCamp Singapore 4 33
  • 34. Common APIs iPhone Table View Android Table View Same Code Creates Both @_Arul | Arul Kumaran - BarCamp Singapore 4 34
  • 35. More APIs • Platform / OS Data • Application Properties • Logging • Scroll and Image Views • Composite Views • More always coming @_Arul | Arul Kumaran - BarCamp Singapore 4 35
  • 36. Still Want More? • Kitchen Sink - Full API Demo • Codestrong.com has Examples and Guides • http://www.codestrong.com/timobile/ samples/ @_Arul | Arul Kumaran - BarCamp Singapore 4 36
  • 37. Titanium Developer •Developer is a Titanium Application •Projects created/managed via Titanium Developer •Titanium Developer deploys code to simulators •Developer also helps with testing and packaging for devices •Requires sign-up for Appcelerator Network (support, e-mail list, other services) @_Arul | Arul Kumaran - BarCamp Singapore 4 37
  • 38. Kicking The Tires • Your first application – Desktop project layout – Mobile project layout • Demos – Mobile TwitPic Client – Mobile: Kitchen Sink @_Arul | Arul Kumaran - BarCamp Singapore 4 38
  • 39. Next Steps • Download: appcelerator.com/download • Hack – Docs/Samples: http://www.codestrong.com – Screencasts: http://vimeo.com/appcelerator • Get Help – http://support.appcelerator.net – IRC Chat - irc.freenode.net / #titanium_app @_Arul | Arul Kumaran - BarCamp Singapore 4 39
  • 40. Questions? @_Arul | Arul Kumaran - BarCamp Singapore 4 40