James Pearce
 Director, Developer Relations

 @ jamespearce
   jamesp@sencha.com
Sencha
Create amazing apps built
    on web standards
Web Frameworks
     Tools
     Labs
   Services
Frameworks
    Sencha Touch

    Ext JS

    Ext GWT

    Ext Core
Ext JS




 http://www.sencha.com/products/extjs/examples/
Ext JS 4




   http://dev.sencha.com/deploy/ChartsDemo/
Ext GWT


  +


http://www.sencha.com/products/extgwt/examples/
Ext Core




   http://www.sencha.com/products/extcore/
                                             M IT
Tools
        Ext Designer

        Sencha Animator
Ext Designer




   http://www.sencha.com/products/designer/
Sencha Animator




http://www.sencha.com/products/animator/demos/
Labs
       jQTouch          InfoVis

       Raphaël          PhiloGL

       Connect          Android tools

       http://www.sencha.com/company/
Building Cross-Platform
   Mobile Web Apps
             with
      HTML   CSS    JS
building(
   mobile.web().apps([
     html5, css3, js
   ]).crossPlatform()
);
building(
   mobile.web().apps([
     html5, css3, js
   ]).crossPlatform()
);
2008

We must have an
 iPhone App!
2009

We must have an
 Android App!
2010

We must have an
   iPad App!
2011

We must have a...
omfg
JS
        C# Palm   J2ME
    Microsoft

                        RIM         RIM
                                    Android
                                    Apple
Apple                     Air       Microsoft
                                    Palm
Obj-C
                       Java
         C++ Android            Top U.S. Smartphone Platforms,
                                3 Month Average Ending December 2010
                                comScore MobiLens 2010
building(
   mobile.web().apps([
     html5, css3, js
   ]).crossPlatform()
);
The Mobile Web
Cross-platform
Familiar skills & tools
Decentralized
Easily updated
Indexed
Well-understood technologies
The Web is Evolving...
   Documents           Applications
 Declarative HTML   Programmatic DOM
    Thin client        Thick client
     Themes               APIs
      URLs             Arguments
 Request/Response    Synchronization
building(
   mobile.web().apps([
     html5, css3, js
   ]).crossPlatform()
);
A New Mobile App Stack
                WebFonts        Video      Audio    Graphics
Device Access                                                  Server & Services

  Camera                    CSS Styling & Layout                    HTTP

  Location                                                          AJAX
                                   Javascript
  Contacts                                                          Events

    SMS                          Semantic HTML                     Sockets

 Orientation                                                         SSL
                 File Systems        Worker
                                                    x-App
    Gyro              DBs            Parallel                      More...
                                                   Messaging
                  App Cache         Processing
Rich Media & StylingO      RM
                            TF
                         LA
    Full Resource PP P Access
                     A
                  RN
     ParallelDProcessing
                E
              O
           EM
Inter-App Communication
        ET
      PL Offline Capability
    Full
 C OM
building(
   mobile.web().apps([
     html5, css3, js
   ]).crossPlatform()
);
building(
   mobile.web().apps([
     html5, css3, js
   ]).crossPlatform()
);
WebKit   FOEs
HTML5 Support
                       IE 10 PR   Chrome 10   Safari 5   Firefox 4   iOS4.31   Playbook   Honeycomb
@font-face
Canvas
HTML5 Audio & Video
rgba(), hsla()
border-image:
border-radius:
box-shadow:
text-shadow:
opacity:
Multiple backgrounds
Flexible Box Model
CSS Animations
CSS Columns
CSS Gradients
CSS Reflections
CSS 2D Transforms
CSS 3D Transforms
CSS Transitions
Geolocation API
local/sessionStorage
SVG/SVG Clipping
SMIL
Inline SVG
Drag and Drop
hashchange
X-window Messaging
History Management
applicationCache
Web Sockets
Web Workers
Web SQL Database
WebGL
IndexedDB
Stay on top of diversity
Can I Use?
http://caniuse.com

Modernizr
http://modernizr.com

DeviceAtlas
http://deviceatlas.com
Documents           Applications
Declarative HTML   Programmatic DOM
   Thin client        Thick client
    Themes               APIs
     URLs             Arguments
Request/Response    Synchronization
Sencha Touch support
What’s in Sencha Touch?
Layouts & components
Theming & icons
Orientation & animation
Touch events & scroller
Data package
MVC framework
Components
Lists
- Nested, Grouped, Sortable
Carousel
Picker
Overlay
Slider
Forms & fields
Toolbars & buttons
HTML5
- Audio
- Video
- GeoLocation
Forms
Scrolling
Momentum/bounce physics

Hardware accelerated

Throughout all components:
- Lists
- Carousel
- Pickers
Touch Events
Built on native events

Abstracted for performance

Additional events
- Tap
- Double tap
- Tap and hold
- Swipe
- Rotate
- Drag & drop
Data Package
Models, Stores, and Proxies
- Associations
- Validation
- Local & server storage

Easily consume web services
- JSON/P
- XML
- YQL
Theming
Use CSS3 & SASS
- Flexible themes
- Highly optimized
“The Kitchen Sink”




                 http://sencha.com/x/5e
building(
   mobile.web().apps([
     html5, css3, js
   ]).crossPlatform()
);
Evolving a site for mobile

   Views
               HTML, CSS...


 Controllers
  Models
Evolving a site for mobile
            Desktop
 Switcher


                      HTML, CSS...
             Mobile


   Controllers
            Models
A dedicated mobile app
            Desktop
Switchers



             Mobile
             REST
                      JSO    on
  Controllers            N
                                ce

            Models
Thematic consistency


   http://mysite.com/posts/123



  http://mysite.com/#!/posts/123
The stack of the present


                 req/res
User interface             Rendering
Business logic
   Storage
A stack of the future


                   User interface
            sync
Security           Business logic
Storage               Storage
Thick client, thin server


The shortfall in the cloud
http://mysite.com/myimage.png




http://i.tinysrc.mobi/http://mysite.com/myimage.png
Location Services
        Adaptation                         Analytics



   Web Fonts                                   Data Sync




Video Serving                                   Ad Serving


                                             $
       Image Serving                       Commerce
                        Network APIs
Do we have time for
   some code?
http://senchalearn.github.com/seattlebars/
The cloud at work...
Location API to get lat/long

MongoLabs to get city name

Yelp to get businesses
https://github.com/
    senchalearn/
     seattlebars
PhoneGap
A platform that allows you to author native applications
  with web technologies and get access to device APIs




                 http://phonegap.com
Device Access

Accelerometer   File
Camera          Geolocation
Compass         Media
Contacts        Network
Device          Notification
Events          Storage

http://docs.phonegap.com
building(
   mobile.web().apps([
     html5, css3, js
   ]).crossPlatform()
);
built with

Apps vs Web technology
James Pearce
 Director, Developer Relations

 @ jamespearce
   jamesp@sencha.com

Building cross platform mobile web apps