SlideShare ist ein Scribd-Unternehmen logo
1 von 40
Downloaden Sie, um offline zu lesen
THE BLACKBERRY WEB
                           PLATFORM
                                SenchaCon’11 – Austin 2011-10-25


        LDH (Laurent Hasson)
        Technical Director, Web Platform
        lhasson@rim.com
        @ldhasson




  2011-10-25                               SenchaCon'11            1

Wednesday, November 2, 11
Agenda

   •   BlackBerry loves the Web
   •   Anatomy of an App
   •   Simulation/Testing with Ripple and WebInspector
   •   Build, Sign and Submit with WebWorks




  2011-10-25                  SenchaCon'11               2

Wednesday, November 2, 11
BLACKBERRY LOVES THE WEB




  2011-10-25                SenchaCon'11   3

Wednesday, November 2, 11
BlackBerry Loves the Web




   • Industry leading webkit browser with best in class standards support
        • position: fixed, overflow: auto, webInspector shipped in Spring 2011 on PB, and late Summer 2011
        on BB7 devices
   • Full Web Application platform across tablets and smartphones
   • Leading edge Web dev tools for inspection, debugging, emulation

  2011-10-25                                      SenchaCon'11                                               4

Wednesday, November 2, 11
But what’s a Web app?
  • Lots of controversies and differing opinions from very smart
    people on the Web
       – Should a mobile Web app be more Webby, or more Appy?
  • My take: users today are conditioned to the App Life Cycle
       –   Download something
       –   Install something
       –   Have an icon on the home screen
       –   The App takes the entire screen real estate
       –   The App is integrated with the device
          A site is a place you go to. An app is a thing you get.


  • The good news though is that users really don’t care how the app
    was built!!!
       – So use Web technologies for the job!!
  2011-10-25                          SenchaCon'11                     5

Wednesday, November 2, 11
Two Dimensions to App Experience


                                                           Web App
           Contents




                            Web Site            Many ways
                                                 to adapt




                                              Life Cycle



  2011-10-25                           SenchaCon'11                  6

Wednesday, November 2, 11
Say no to NIBS

                                     - The “Native Is Better” crowd are missing
                                       the point of the Web
                                          - It’s the scale of the market stupid!
                                                - It’s powerful, cross-platform, and an




  NIBS
                                                  abundant skill set.
                                     - This is not to say that Web is better than
                                       Native
                                          - That would be silly
                                     - But the Web is absolutely competitive
                                          - Most types of apps can now be built very
                                            nicely using Web technologies
                                          - The gap is narrow today, keeps on
                                            getting narrower, and fast.
       * Native Is Better Syndrome


  2011-10-25                         SenchaCon'11                                         7

Wednesday, November 2, 11
BlackBerry WebWorks
                            •   A BlackBerry WebWorks application is created using
                              standard web technologies, provides full integration
                                with native APIs and has a native application life
                                                      cycle.
                            •  In market since 2009 on BB5. Now on BB5/6/7, and
                                      PlayBook and future QNX super phones
                            •  OSS Community http://www.github.com/blackberry




                                                                           BlackBerry
                                                                           WebWorks




  2011-10-25                                SenchaCon'11                                8

Wednesday, November 2, 11
ANATOMY OF THE MEDIA VIEWER




  2011-10-25                SenchaCon'11   9

Wednesday, November 2, 11
Overall application




  2011-10-25                SenchaCon'11   10

Wednesday, November 2, 11
Media Viewer




                            DEMO


  2011-10-25                 SenchaCon'11   11

Wednesday, November 2, 11
Folder Structure




  2011-10-25                SenchaCon'11   12

Wednesday, November 2, 11
Config.xml

 <widget xmlns="http://www.w3.org/ns/widgets” xmlns:rim="http://www.blackberry.com/ns/widgets"
         version="0.1.261" id="Viewer" xml:lang="en">
     <name>Viewer</name>
     <description>This BlackBerry PlayBook web-based app browses media stored on the device.</description>
     <author rim:copyright="2011" email="jing@rim.com" href="http://blackberry.com/html5">Jim Ing</author>
     <rim:loadingScreen backgroundImage="blackberry_black.jpg" foregroundImage="blackberry_blue.jpg"
                         onLocalPageLoad="true"/>
     <icon src="icon.png"/>
     <rim:orientation mode="auto"/>
     <content src="index.html"/>
     <rim:category name="Media"/>
     <rim:permissions>
         <rim:permit>access_shared</rim:permit>
         <rim:permit>read_device_identifying_information</rim:permit>
     </rim:permissions>
     <!-- Universal APIs: The following features are available on both Smartphone and Tablet OS -->
     <feature id="blackberry.app" required="true" version="1.0.0.0"/>
     <feature id="blackberry.app.event" required="true" version="1.0.0.0"/>
     <feature id="blackberry.system" required="true" version="1.0.0.0"/>
     <feature id="blackberry.system.event" required="true" version="1.0.0.0"/>
     <feature id="blackberry.utils" required="true" version="1.0.0.0"/>
     <feature id="blackberry.identity" required="true" version="1.0.0.0"/>
     <feature id="blackberry.invoke" required="true" version="1.0.0.0"/>
     <feature id="blackberry.io.file" required="true" version="1.0.0.0"/>
     <feature id="blackberry.io.dir" required="true" version="1.0.0.0"/>

     <access subdomains="true" uri="*"/>
 </widget>




  2011-10-25                                         SenchaCon'11                                            13

Wednesday, November 2, 11
Evil UA Sniffing

      app.isBlackBerrySmartphone = function () {
          var ua = navigator.userAgent.toLowerCase();
          var isMIDP = (ua.indexOf("midp") >= 0);
          var isWebKit = (ua.indexOf("webkit") >= 0);
          var isBlackBerry = (ua.indexOf("blackberry") >= 0);
          return ((isMIDP || isWebKit) && isBlackBerry);
      };

      app.isBlackBerryPlayBook = function () {
          var ua = navigator.userAgent.toLowerCase();
          var isWebKit = (ua.indexOf("webkit") >= 0);
          var isTablet = (ua.indexOf("playbook") >= 0);
          return (isWebKit && isTablet);
      };




  2011-10-25                          SenchaCon'11              14

Wednesday, November 2, 11
Testing for BlackBerry Webworks


          if (      (window.blackberry === undefined)
                 || (blackberry.io === undefined)
                 || (blackberry.io.file === undefined))
           {
                 if (app.debug === true)
                  {
                     console.warn('WebWorks API not supported');
                  }
           }
          else
           ...




  2011-10-25                        SenchaCon'11                   15

Wednesday, November 2, 11
Getting files (1)

         var Dir = blackberry.io.dir;
         var path = "";
         if (app.isBlackBerryPlayBook()) {
           path = eval('Dir.appDirs.shared.' + subfolder + '.path');
         }
         else if (app.isBlackBerrySmartphone()) {
           path = 'file:///store/home/user/' + subfolder;
         }

       var items = Dir.listFiles(path);
       var props;
       for (var i = 0; i < items.length; i++) {
        try {
          props = blackberry.io.file.getFileProperties(path + '/' + items[i]);
        }
        catch (ex) {
          console.warn(ex.description + ' [' + items[i] + ']');
        }




  2011-10-25                            SenchaCon'11                             16

Wednesday, November 2, 11
Getting files (2)

 if (props.fileExtension.match(patt)) { // expected media extensions
   if (items[i].indexOf(" ") === -1) {// skip filenames with spaces
     data.push({
         "filePath": path,
         "fileName": items[i],
         "fileExt": props.fileExtension,
         "fileSize": props.size,
         "dateCreated": props.dateCreated,
         "dateModified": props.dateModified,
         "isHidden": props.isHidden,
         "isReadonly": props.isReadonly,
         "mimeType": props.mimeType
     });
   }
   else {
     console.log('Skipped "' + items[i] + '" because it contains spaces.');
   }
 }
 else {
   console.log('Skipped "' + items[i] + '" because it does not match "'
                + filetypes + '".');
 }



  2011-10-25                                SenchaCon'11                      17

Wednesday, November 2, 11
Overlay

      var overlay = new Ext.Panel({
          id: 'overlay',
          floating: true,
          modal: true,
          centered: true,
          padding: '0',
          dockedItems: overlayToolbar,
          scroll: false,
          hideOnMaskTap: false,
          hidden: true,
          html: '',
      });




  2011-10-25                             SenchaCon'11   18

Wednesday, November 2, 11
AliceJS


     overlay.show();
     alice.toss({
         id: "overlay",
         duration: 2000,
         origin: app.randAngle(-45,180)+'% '+app.randAngle(-45,180)+'%',
         random: 10
     });




  2011-10-25                       SenchaCon'11                            19

Wednesday, November 2, 11
TESTING AND SIMULATING




  2011-10-25                SenchaCon'11    20

Wednesday, November 2, 11
A day in the life…

      Native Developer
               Writing Code                   Test on Simulator                         Test on Device



      Desktop Web Developer
                   Writing Code                             Test in Desktop Browsers



      Mobile Web Developer
                 Writing Code     Test in Desktop Browser         Test On Simulator    Test on Device




  2011-10-25                                       SenchaCon'11                                          21

Wednesday, November 2, 11
Web Testing

   • WebKit is king today
        – For desktop testing of your mobile app, both Safari (5 and up)
          and Google Chrome (13 and up) are really good and take you a
          long way.
   • There are emerging solutions to test your application in
     a mobile browser
        – Weinre, JSConsole, Firebug Lite…
   • There are also the standard native simulators
        – But they are so big, and so slow
        – And they are never quite accurate enough that you don’t need a
          physical device in the end anyway
   • And you’ll always have alert()!


  2011-10-25                         SenchaCon'11                          22

Wednesday, November 2, 11
But BlackBerry Does Web Testing

   • BlackBerry Ripple allows you to do device simulation and testing
     right on your desktop’s Google Chrome browser
        – Simulate device attribute such as screen res, skin etc…
        – Simulate device APIs and Sensors
        – Not 100% accurate, but small, fast, and conveniently browser-based

   • The BlackBerry stack supports remote WebInspector directly to
     debug a Web app running on-device
        – You can do anything (including stepping through JS) that you can
          normally do in WebInspector on a desktop WebKit browser.

   • Plus, plug you PlayBook on the USB port of your laptop, and you
     have IP connectivity
        – No wi-fi actually needed


  2011-10-25                         SenchaCon'11                              23

Wednesday, November 2, 11
Ripple: Ultimate Browser-based




  2011-10-25                SenchaCon'11   24

Wednesday, November 2, 11
A day in the life…

      Native Developer
               Writing Code               Test on Simulator                         Test on Device



      Desktop Web Developer
                   Writing Code                       Test in Desktop Browser



      Mobile Web Developer
                   Writing Code   Test in Desktop Browser       Test On Simulator   Test on Device



      Mobile Web Developer (with Ripple)
                   Writing Code                       Test in Ripple                         Test on




  2011-10-25                                   SenchaCon'11                                            25

Wednesday, November 2, 11
Setting up a device for Web testing

   • At some point though, you need to go on device!
   • Plug in your device through USB, or on a Wi-Fi network
     reachable from your dev machine (laptop/desktop)
        – A simple ipconfig /all (on Windows) shows you the device’s IP
          address when connected via USB
                                                 That’s actually the address of the
                                                 development machine


                                                 And that’s actually the address of
                                                 the device




   • Yeah, the device can call your web server on your dev
     machine, and vice-versa, just through USB (no Wi-Fi
     required).
  2011-10-25                      SenchaCon'11                                        26

Wednesday, November 2, 11
Setting up device security

   • Go to your device options
        – Go to the Security tab
        – Activate the development mode
        – Set up a password




  2011-10-25                    SenchaCon'11   27

Wednesday, November 2, 11
Enabling WebInspector

   • Go to the browser on you device
        – Go to Options
        – Go to the Privacy and Security tab
        – Enable Web Inspector

   • Information will be displayed as to how to connect to
     the browser




  2011-10-25                       SenchaCon'11              28

Wednesday, November 2, 11
Refresh

   • Web Apps run full screen, without a browser chrome
        – For testing, how do you refresh a page?
        – You have to build a “refresh widget” for testing only
               • Some funny gesture
               • Some semi-transparent button in a corner
        – location.reload(true) from WebInspector




  2011-10-25                           SenchaCon'11               29

Wednesday, November 2, 11
Web Inspector: Ultimate Web Dev Tool




  2011-10-25                SenchaCon'11   30

Wednesday, November 2, 11
BUILD, SIGN AND SUBMIT




  2011-10-25                  SenchaCon'11    31

Wednesday, November 2, 11
Signing

   • One of the weakest link in the developer experience
     today
        – Gotta register with AppWorld
        – Gotta register with the certificate auth to get a key (CSJ file)
        – Gotta sign your machine
               pushd "C:Program FilesRIMBlackBerry WebWorks PlayBookbbwpbin"
               ..blackberry-tablet-sdkbinblackberry-signer.bat -csksetup -cskpass totoxxx
               ..blackberry-tablet-sdkbinblackberry-signer.bat -register -csjpin titixxx -cskpass totoxxx
                                                                  C:PeekABooclient-RDK-1234567890.csj
               ..blackberry-tablet-sdkbinblackberry-keytool.bat -genkeypair -keystore sigtool.p12
                                                                   -storepass totoxxx -dname "cn=MyCo"
                                                                   -alias author
               popd




   • Not pretty and error prone, but you do it once and it’s
     done

  2011-10-25                                           SenchaCon'11                                            32

Wednesday, November 2, 11
BlackBerry WebWorks works

   • Overall developer experience is less than stellar
         – 3 things to download (Adobe AIR SDK, PlayBook SDK, WebWorks SDK)
               • Installers are very basic, but you should pay attention: RTFM!
         – Build is tedious (you have to create a ZIP file, build and deploy)
   del "c:PeekABooPeekABoo.zip"
   del "c:PeekABooPeekABoo.bar"
   "zip.exe" a -r "c:PeekABooPeekABoo.zip" "c:PeekABooWebContent*.*"

   "C:Program FilesRIMBlackBerry WebWorks PlayBookbbwpbbwp.exe“
      “C:PeekABooPeekABoo.zip" -gcsk totoxxx -gp12 totoxxx -buildId 101 -o "c:PeekABoo"

   "C:Program FilesRIMBlackBerry WebWorks PlayBookbbwpblackberry-tablet-sdkbinblackberry-deploy.bat“
      -installApp -password totoxxx -device 192.168.1.105 -package "c:projectsPeekABoo.bar"



   • But the result works as advertized: it’s an App!
         – It performs very well, and come on! It’s just a simple build script!




  2011-10-25                                         SenchaCon'11                                             33

Wednesday, November 2, 11
AppWorld

   • Register, and submit your app
        – Basic steps to upload your binary (BAR file)
        – Works OK

   • The only trap is that each time you submit a new
     binary, YOU MUST increment your build number or else,
     the world stops!
        – -buildId parameter for bbwp.exe in the build script




  2011-10-25                       SenchaCon'11                 34

Wednesday, November 2, 11
CONCLUSION




  2011-10-25                   SenchaCon'11   35

Wednesday, November 2, 11
Summary

   • THE MOBILE WEB IS A POWERFUL OPTION FOR DEVELOPING MOBILE APPS
   • Desktop WebKit browsers are really good for a lot of app dev
   • There is a next generation of browser-based debugging and
     testing tools
   • WebWorks SDK, code signing process and BlackBerry AppWorld are
     not easy
       – But come on, once the initial pain is over, it’s pretty easy




  2011-10-25                    SenchaCon'11                        36

Wednesday, November 2, 11
First time…




                                           © New Line Cinema

  2011-10-25                SenchaCon'11                       37

Wednesday, November 2, 11
And then… Never afraid again!




                                  http://www.snorgtees.com/friday-the-12th

  2011-10-25                SenchaCon'11                                 38

Wednesday, November 2, 11
BlackBerry Tooling URLs

   • Ripple
        – http://ripple.tinyhippos.com/
   • BlackBerry WebWorks
        – http://us.blackberry.com/developers/browserdev/
   • BlackBerry WebWorks Handhelds Downloads
        – http://us.blackberry.com/developers/browserdev/widgetsdk.jsp
   • BlackBerry WebWorks PlayBook Downloads
        – http://us.blackberry.com/developers/tablet/webworks.jsp
   • WebWorks Open Source on GitHub
        – https://github.com/blackberry




  2011-10-25                        SenchaCon'11                         39

Wednesday, November 2, 11
Thanks!

Wednesday, November 2, 11

Weitere ähnliche Inhalte

Andere mochten auch

Documenting with JSDuck
Documenting with JSDuckDocumenting with JSDuck
Documenting with JSDuckSencha
 
Community Code: The TouchForums App
Community Code: The TouchForums AppCommunity Code: The TouchForums App
Community Code: The TouchForums AppSencha
 
Community Code: SCircles
Community Code: SCirclesCommunity Code: SCircles
Community Code: SCirclesSencha
 
Community Code: The SenchaCon App
Community Code: The SenchaCon AppCommunity Code: The SenchaCon App
Community Code: The SenchaCon AppSencha
 
PHP Server-side Breakout
PHP Server-side BreakoutPHP Server-side Breakout
PHP Server-side BreakoutSencha
 
SenchaCon Closing Session by Michael Mullany
SenchaCon Closing Session by Michael MullanySenchaCon Closing Session by Michael Mullany
SenchaCon Closing Session by Michael MullanySencha
 
Ext JS 4: Advanced Expert Techniques
Ext JS 4: Advanced Expert TechniquesExt JS 4: Advanced Expert Techniques
Ext JS 4: Advanced Expert TechniquesSencha
 
Introducing Sencha Touch 2
Introducing Sencha Touch 2Introducing Sencha Touch 2
Introducing Sencha Touch 2Sencha
 
Application Security for RIAs
Application Security for RIAsApplication Security for RIAs
Application Security for RIAsSencha
 
Java Server-side Breakout
Java Server-side BreakoutJava Server-side Breakout
Java Server-side BreakoutSencha
 
Community Code: Macadamian
Community Code: MacadamianCommunity Code: Macadamian
Community Code: MacadamianSencha
 
Community Code: Xero
Community Code: XeroCommunity Code: Xero
Community Code: XeroSencha
 
Introducing Designer 2
Introducing Designer 2Introducing Designer 2
Introducing Designer 2Sencha
 
Sencha and Spring (Spring 2GX 2013)
Sencha and Spring (Spring 2GX 2013) Sencha and Spring (Spring 2GX 2013)
Sencha and Spring (Spring 2GX 2013) Sencha
 
Introducing Ext GWT 3.0
Introducing Ext GWT 3.0Introducing Ext GWT 3.0
Introducing Ext GWT 3.0Sencha
 
Migrating from Ext GWT 2.x to 3.0
Migrating from Ext GWT 2.x to 3.0Migrating from Ext GWT 2.x to 3.0
Migrating from Ext GWT 2.x to 3.0Sencha
 
WebGL Fundamentals
WebGL FundamentalsWebGL Fundamentals
WebGL FundamentalsSencha
 
Hacking Webkit & Its JavaScript Engines
Hacking Webkit & Its JavaScript EnginesHacking Webkit & Its JavaScript Engines
Hacking Webkit & Its JavaScript EnginesSencha
 
Community Code: Pega Mobile
Community Code: Pega MobileCommunity Code: Pega Mobile
Community Code: Pega MobileSencha
 
SenchaCon 2016: Building Enterprise Ext JS Apps with Mavenized Sencha Cmd - F...
SenchaCon 2016: Building Enterprise Ext JS Apps with Mavenized Sencha Cmd - F...SenchaCon 2016: Building Enterprise Ext JS Apps with Mavenized Sencha Cmd - F...
SenchaCon 2016: Building Enterprise Ext JS Apps with Mavenized Sencha Cmd - F...Sencha
 

Andere mochten auch (20)

Documenting with JSDuck
Documenting with JSDuckDocumenting with JSDuck
Documenting with JSDuck
 
Community Code: The TouchForums App
Community Code: The TouchForums AppCommunity Code: The TouchForums App
Community Code: The TouchForums App
 
Community Code: SCircles
Community Code: SCirclesCommunity Code: SCircles
Community Code: SCircles
 
Community Code: The SenchaCon App
Community Code: The SenchaCon AppCommunity Code: The SenchaCon App
Community Code: The SenchaCon App
 
PHP Server-side Breakout
PHP Server-side BreakoutPHP Server-side Breakout
PHP Server-side Breakout
 
SenchaCon Closing Session by Michael Mullany
SenchaCon Closing Session by Michael MullanySenchaCon Closing Session by Michael Mullany
SenchaCon Closing Session by Michael Mullany
 
Ext JS 4: Advanced Expert Techniques
Ext JS 4: Advanced Expert TechniquesExt JS 4: Advanced Expert Techniques
Ext JS 4: Advanced Expert Techniques
 
Introducing Sencha Touch 2
Introducing Sencha Touch 2Introducing Sencha Touch 2
Introducing Sencha Touch 2
 
Application Security for RIAs
Application Security for RIAsApplication Security for RIAs
Application Security for RIAs
 
Java Server-side Breakout
Java Server-side BreakoutJava Server-side Breakout
Java Server-side Breakout
 
Community Code: Macadamian
Community Code: MacadamianCommunity Code: Macadamian
Community Code: Macadamian
 
Community Code: Xero
Community Code: XeroCommunity Code: Xero
Community Code: Xero
 
Introducing Designer 2
Introducing Designer 2Introducing Designer 2
Introducing Designer 2
 
Sencha and Spring (Spring 2GX 2013)
Sencha and Spring (Spring 2GX 2013) Sencha and Spring (Spring 2GX 2013)
Sencha and Spring (Spring 2GX 2013)
 
Introducing Ext GWT 3.0
Introducing Ext GWT 3.0Introducing Ext GWT 3.0
Introducing Ext GWT 3.0
 
Migrating from Ext GWT 2.x to 3.0
Migrating from Ext GWT 2.x to 3.0Migrating from Ext GWT 2.x to 3.0
Migrating from Ext GWT 2.x to 3.0
 
WebGL Fundamentals
WebGL FundamentalsWebGL Fundamentals
WebGL Fundamentals
 
Hacking Webkit & Its JavaScript Engines
Hacking Webkit & Its JavaScript EnginesHacking Webkit & Its JavaScript Engines
Hacking Webkit & Its JavaScript Engines
 
Community Code: Pega Mobile
Community Code: Pega MobileCommunity Code: Pega Mobile
Community Code: Pega Mobile
 
SenchaCon 2016: Building Enterprise Ext JS Apps with Mavenized Sencha Cmd - F...
SenchaCon 2016: Building Enterprise Ext JS Apps with Mavenized Sencha Cmd - F...SenchaCon 2016: Building Enterprise Ext JS Apps with Mavenized Sencha Cmd - F...
SenchaCon 2016: Building Enterprise Ext JS Apps with Mavenized Sencha Cmd - F...
 

Ähnlich wie BlackBerry WebWorks APIs

Building your first windows store app in html5 js phonegap
Building your first windows store app in html5 js phonegapBuilding your first windows store app in html5 js phonegap
Building your first windows store app in html5 js phonegapShai Raiten
 
JavaOne 2011 - Going Mobile With Java Based Technologies Today
JavaOne 2011 - Going Mobile With Java Based Technologies TodayJavaOne 2011 - Going Mobile With Java Based Technologies Today
JavaOne 2011 - Going Mobile With Java Based Technologies TodayWesley Hales
 
Deploying on the cutting edge
Deploying on the cutting edgeDeploying on the cutting edge
Deploying on the cutting edgeericholscher
 
Building Mobile Apps in WordPress - WordCamp Toronto 2011
Building Mobile Apps in WordPress - WordCamp Toronto 2011Building Mobile Apps in WordPress - WordCamp Toronto 2011
Building Mobile Apps in WordPress - WordCamp Toronto 2011Trevor Mills
 
muCon 2014 "Building Java Microservices for the Cloud"
muCon 2014 "Building Java Microservices for the Cloud"muCon 2014 "Building Java Microservices for the Cloud"
muCon 2014 "Building Java Microservices for the Cloud"Daniel Bryant
 
Apache Stanbol 
and the Web of Data - ApacheCon 2011
Apache Stanbol 
and the Web of Data - ApacheCon 2011Apache Stanbol 
and the Web of Data - ApacheCon 2011
Apache Stanbol 
and the Web of Data - ApacheCon 2011Nuxeo
 
Apachecon 2011 stanbol_ogrisel
Apachecon 2011 stanbol_ogriselApachecon 2011 stanbol_ogrisel
Apachecon 2011 stanbol_ogriselNuxeo
 
Building Rich Internet Apps with Silverlight 2
Building Rich Internet Apps with Silverlight 2Building Rich Internet Apps with Silverlight 2
Building Rich Internet Apps with Silverlight 2Microsoft Iceland
 
LJC Mashup "Building Java Microservices for the Cloud && Chuck Norris Doesn't...
LJC Mashup "Building Java Microservices for the Cloud && Chuck Norris Doesn't...LJC Mashup "Building Java Microservices for the Cloud && Chuck Norris Doesn't...
LJC Mashup "Building Java Microservices for the Cloud && Chuck Norris Doesn't...Daniel Bryant
 
"BlackBerry Webworks : Apps for The Smartphone and Tablet"
"BlackBerry Webworks : Apps for The Smartphone and Tablet""BlackBerry Webworks : Apps for The Smartphone and Tablet"
"BlackBerry Webworks : Apps for The Smartphone and Tablet"Software Park Thailand
 
Laurent hasson blackberry
Laurent hasson blackberryLaurent hasson blackberry
Laurent hasson blackberryWeb Summit
 
Brian Hogg - Web Apps using HTML5 and JS
Brian Hogg - Web Apps using HTML5 and JSBrian Hogg - Web Apps using HTML5 and JS
Brian Hogg - Web Apps using HTML5 and JS#DevTO
 
The FT Web App: Coding Responsively
The FT Web App: Coding ResponsivelyThe FT Web App: Coding Responsively
The FT Web App: Coding ResponsivelyC4Media
 
WebWorks Development for BlackBerry PlayBook and Smartphones
WebWorks Development for BlackBerry PlayBook and SmartphonesWebWorks Development for BlackBerry PlayBook and Smartphones
WebWorks Development for BlackBerry PlayBook and SmartphonesKyle McInnes
 

Ähnlich wie BlackBerry WebWorks APIs (20)

HTML5 and Sencha Touch
HTML5 and Sencha TouchHTML5 and Sencha Touch
HTML5 and Sencha Touch
 
Building your first windows store app in html5 js phonegap
Building your first windows store app in html5 js phonegapBuilding your first windows store app in html5 js phonegap
Building your first windows store app in html5 js phonegap
 
Future of web_apps
Future of web_appsFuture of web_apps
Future of web_apps
 
JavaOne 2011 - Going Mobile With Java Based Technologies Today
JavaOne 2011 - Going Mobile With Java Based Technologies TodayJavaOne 2011 - Going Mobile With Java Based Technologies Today
JavaOne 2011 - Going Mobile With Java Based Technologies Today
 
Asml esitys geniem
Asml esitys geniemAsml esitys geniem
Asml esitys geniem
 
Deploying on the cutting edge
Deploying on the cutting edgeDeploying on the cutting edge
Deploying on the cutting edge
 
Building Mobile Apps in WordPress - WordCamp Toronto 2011
Building Mobile Apps in WordPress - WordCamp Toronto 2011Building Mobile Apps in WordPress - WordCamp Toronto 2011
Building Mobile Apps in WordPress - WordCamp Toronto 2011
 
muCon 2014 "Building Java Microservices for the Cloud"
muCon 2014 "Building Java Microservices for the Cloud"muCon 2014 "Building Java Microservices for the Cloud"
muCon 2014 "Building Java Microservices for the Cloud"
 
Apache Stanbol 
and the Web of Data - ApacheCon 2011
Apache Stanbol 
and the Web of Data - ApacheCon 2011Apache Stanbol 
and the Web of Data - ApacheCon 2011
Apache Stanbol 
and the Web of Data - ApacheCon 2011
 
Web works presso
Web works pressoWeb works presso
Web works presso
 
Apachecon 2011 stanbol_ogrisel
Apachecon 2011 stanbol_ogriselApachecon 2011 stanbol_ogrisel
Apachecon 2011 stanbol_ogrisel
 
Building Rich Internet Apps with Silverlight 2
Building Rich Internet Apps with Silverlight 2Building Rich Internet Apps with Silverlight 2
Building Rich Internet Apps with Silverlight 2
 
LJC Mashup "Building Java Microservices for the Cloud && Chuck Norris Doesn't...
LJC Mashup "Building Java Microservices for the Cloud && Chuck Norris Doesn't...LJC Mashup "Building Java Microservices for the Cloud && Chuck Norris Doesn't...
LJC Mashup "Building Java Microservices for the Cloud && Chuck Norris Doesn't...
 
"BlackBerry Webworks : Apps for The Smartphone and Tablet"
"BlackBerry Webworks : Apps for The Smartphone and Tablet""BlackBerry Webworks : Apps for The Smartphone and Tablet"
"BlackBerry Webworks : Apps for The Smartphone and Tablet"
 
Laurent hasson blackberry
Laurent hasson blackberryLaurent hasson blackberry
Laurent hasson blackberry
 
Brian Hogg - Web Apps using HTML5 and JS
Brian Hogg - Web Apps using HTML5 and JSBrian Hogg - Web Apps using HTML5 and JS
Brian Hogg - Web Apps using HTML5 and JS
 
The FT Web App: Coding Responsively
The FT Web App: Coding ResponsivelyThe FT Web App: Coding Responsively
The FT Web App: Coding Responsively
 
Node at artsy
Node at artsyNode at artsy
Node at artsy
 
Play framework
Play frameworkPlay framework
Play framework
 
WebWorks Development for BlackBerry PlayBook and Smartphones
WebWorks Development for BlackBerry PlayBook and SmartphonesWebWorks Development for BlackBerry PlayBook and Smartphones
WebWorks Development for BlackBerry PlayBook and Smartphones
 

Mehr von Sencha

Breathe New Life into Your Existing JavaScript Applications with Web Components
Breathe New Life into Your Existing JavaScript Applications with Web ComponentsBreathe New Life into Your Existing JavaScript Applications with Web Components
Breathe New Life into Your Existing JavaScript Applications with Web ComponentsSencha
 
Ext JS 6.6 Highlights
Ext JS 6.6 HighlightsExt JS 6.6 Highlights
Ext JS 6.6 HighlightsSencha
 
Sencha Roadshow 2017: BufferedStore Internals featuring eyeworkers interactiv...
Sencha Roadshow 2017: BufferedStore Internals featuring eyeworkers interactiv...Sencha Roadshow 2017: BufferedStore Internals featuring eyeworkers interactiv...
Sencha Roadshow 2017: BufferedStore Internals featuring eyeworkers interactiv...Sencha
 
Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd
Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd
Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd Sencha
 
Sencha Roadshow 2017: Best Practices for Implementing Continuous Web App Testing
Sencha Roadshow 2017: Best Practices for Implementing Continuous Web App TestingSencha Roadshow 2017: Best Practices for Implementing Continuous Web App Testing
Sencha Roadshow 2017: Best Practices for Implementing Continuous Web App TestingSencha
 
Sencha Roadshow 2017: What's New in Sencha Test
Sencha Roadshow 2017: What's New in Sencha TestSencha Roadshow 2017: What's New in Sencha Test
Sencha Roadshow 2017: What's New in Sencha TestSencha
 
Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...
Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...
Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...Sencha
 
Sencha Roadshow 2017: Modernizing the Ext JS Class System and Tooling
Sencha Roadshow 2017: Modernizing the Ext JS Class System and ToolingSencha Roadshow 2017: Modernizing the Ext JS Class System and Tooling
Sencha Roadshow 2017: Modernizing the Ext JS Class System and ToolingSencha
 
Sencha Roadshow 2017: Sencha Best Practices: Coworkee App
Sencha Roadshow 2017: Sencha Best Practices: Coworkee App Sencha Roadshow 2017: Sencha Best Practices: Coworkee App
Sencha Roadshow 2017: Sencha Best Practices: Coworkee App Sencha
 
Sencha Roadshow 2017: Mobile First or Desktop First
Sencha Roadshow 2017: Mobile First or Desktop FirstSencha Roadshow 2017: Mobile First or Desktop First
Sencha Roadshow 2017: Mobile First or Desktop FirstSencha
 
Sencha Roadshow 2017: Innovations in Ext JS 6.5 and Beyond
Sencha Roadshow 2017: Innovations in Ext JS 6.5 and BeyondSencha Roadshow 2017: Innovations in Ext JS 6.5 and Beyond
Sencha Roadshow 2017: Innovations in Ext JS 6.5 and BeyondSencha
 
Leveraging React and GraphQL to Create a Performant, Scalable Data Grid
Leveraging React and GraphQL to Create a Performant, Scalable Data GridLeveraging React and GraphQL to Create a Performant, Scalable Data Grid
Leveraging React and GraphQL to Create a Performant, Scalable Data GridSencha
 
Learn Key Insights from The State of Web Application Testing Research Report
Learn Key Insights from The State of Web Application Testing Research ReportLearn Key Insights from The State of Web Application Testing Research Report
Learn Key Insights from The State of Web Application Testing Research ReportSencha
 
Introducing ExtReact: Adding Powerful Sencha Components to React Apps
Introducing ExtReact: Adding Powerful Sencha Components to React AppsIntroducing ExtReact: Adding Powerful Sencha Components to React Apps
Introducing ExtReact: Adding Powerful Sencha Components to React AppsSencha
 
SenchaCon 2016: Keynote Presentation - Art Landro, Gautam Agrawal, Mark Brocato
SenchaCon 2016: Keynote Presentation - Art Landro, Gautam Agrawal, Mark BrocatoSenchaCon 2016: Keynote Presentation - Art Landro, Gautam Agrawal, Mark Brocato
SenchaCon 2016: Keynote Presentation - Art Landro, Gautam Agrawal, Mark BrocatoSencha
 
SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...
SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...
SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...Sencha
 
SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...
SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...
SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...Sencha
 
SenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web Apps
SenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web AppsSenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web Apps
SenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web AppsSencha
 
Ext JS Architecture Best Practices - Mitchell Simeons
Ext JS Architecture Best Practices - Mitchell SimeonsExt JS Architecture Best Practices - Mitchell Simeons
Ext JS Architecture Best Practices - Mitchell SimeonsSencha
 
SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...
SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...
SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...Sencha
 

Mehr von Sencha (20)

Breathe New Life into Your Existing JavaScript Applications with Web Components
Breathe New Life into Your Existing JavaScript Applications with Web ComponentsBreathe New Life into Your Existing JavaScript Applications with Web Components
Breathe New Life into Your Existing JavaScript Applications with Web Components
 
Ext JS 6.6 Highlights
Ext JS 6.6 HighlightsExt JS 6.6 Highlights
Ext JS 6.6 Highlights
 
Sencha Roadshow 2017: BufferedStore Internals featuring eyeworkers interactiv...
Sencha Roadshow 2017: BufferedStore Internals featuring eyeworkers interactiv...Sencha Roadshow 2017: BufferedStore Internals featuring eyeworkers interactiv...
Sencha Roadshow 2017: BufferedStore Internals featuring eyeworkers interactiv...
 
Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd
Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd
Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd
 
Sencha Roadshow 2017: Best Practices for Implementing Continuous Web App Testing
Sencha Roadshow 2017: Best Practices for Implementing Continuous Web App TestingSencha Roadshow 2017: Best Practices for Implementing Continuous Web App Testing
Sencha Roadshow 2017: Best Practices for Implementing Continuous Web App Testing
 
Sencha Roadshow 2017: What's New in Sencha Test
Sencha Roadshow 2017: What's New in Sencha TestSencha Roadshow 2017: What's New in Sencha Test
Sencha Roadshow 2017: What's New in Sencha Test
 
Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...
Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...
Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...
 
Sencha Roadshow 2017: Modernizing the Ext JS Class System and Tooling
Sencha Roadshow 2017: Modernizing the Ext JS Class System and ToolingSencha Roadshow 2017: Modernizing the Ext JS Class System and Tooling
Sencha Roadshow 2017: Modernizing the Ext JS Class System and Tooling
 
Sencha Roadshow 2017: Sencha Best Practices: Coworkee App
Sencha Roadshow 2017: Sencha Best Practices: Coworkee App Sencha Roadshow 2017: Sencha Best Practices: Coworkee App
Sencha Roadshow 2017: Sencha Best Practices: Coworkee App
 
Sencha Roadshow 2017: Mobile First or Desktop First
Sencha Roadshow 2017: Mobile First or Desktop FirstSencha Roadshow 2017: Mobile First or Desktop First
Sencha Roadshow 2017: Mobile First or Desktop First
 
Sencha Roadshow 2017: Innovations in Ext JS 6.5 and Beyond
Sencha Roadshow 2017: Innovations in Ext JS 6.5 and BeyondSencha Roadshow 2017: Innovations in Ext JS 6.5 and Beyond
Sencha Roadshow 2017: Innovations in Ext JS 6.5 and Beyond
 
Leveraging React and GraphQL to Create a Performant, Scalable Data Grid
Leveraging React and GraphQL to Create a Performant, Scalable Data GridLeveraging React and GraphQL to Create a Performant, Scalable Data Grid
Leveraging React and GraphQL to Create a Performant, Scalable Data Grid
 
Learn Key Insights from The State of Web Application Testing Research Report
Learn Key Insights from The State of Web Application Testing Research ReportLearn Key Insights from The State of Web Application Testing Research Report
Learn Key Insights from The State of Web Application Testing Research Report
 
Introducing ExtReact: Adding Powerful Sencha Components to React Apps
Introducing ExtReact: Adding Powerful Sencha Components to React AppsIntroducing ExtReact: Adding Powerful Sencha Components to React Apps
Introducing ExtReact: Adding Powerful Sencha Components to React Apps
 
SenchaCon 2016: Keynote Presentation - Art Landro, Gautam Agrawal, Mark Brocato
SenchaCon 2016: Keynote Presentation - Art Landro, Gautam Agrawal, Mark BrocatoSenchaCon 2016: Keynote Presentation - Art Landro, Gautam Agrawal, Mark Brocato
SenchaCon 2016: Keynote Presentation - Art Landro, Gautam Agrawal, Mark Brocato
 
SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...
SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...
SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...
 
SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...
SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...
SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...
 
SenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web Apps
SenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web AppsSenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web Apps
SenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web Apps
 
Ext JS Architecture Best Practices - Mitchell Simeons
Ext JS Architecture Best Practices - Mitchell SimeonsExt JS Architecture Best Practices - Mitchell Simeons
Ext JS Architecture Best Practices - Mitchell Simeons
 
SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...
SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...
SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...
 

Kürzlich hochgeladen

Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 

Kürzlich hochgeladen (20)

Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 

BlackBerry WebWorks APIs

  • 1. THE BLACKBERRY WEB PLATFORM SenchaCon’11 – Austin 2011-10-25 LDH (Laurent Hasson) Technical Director, Web Platform lhasson@rim.com @ldhasson 2011-10-25 SenchaCon'11 1 Wednesday, November 2, 11
  • 2. Agenda • BlackBerry loves the Web • Anatomy of an App • Simulation/Testing with Ripple and WebInspector • Build, Sign and Submit with WebWorks 2011-10-25 SenchaCon'11 2 Wednesday, November 2, 11
  • 3. BLACKBERRY LOVES THE WEB 2011-10-25 SenchaCon'11 3 Wednesday, November 2, 11
  • 4. BlackBerry Loves the Web • Industry leading webkit browser with best in class standards support • position: fixed, overflow: auto, webInspector shipped in Spring 2011 on PB, and late Summer 2011 on BB7 devices • Full Web Application platform across tablets and smartphones • Leading edge Web dev tools for inspection, debugging, emulation 2011-10-25 SenchaCon'11 4 Wednesday, November 2, 11
  • 5. But what’s a Web app? • Lots of controversies and differing opinions from very smart people on the Web – Should a mobile Web app be more Webby, or more Appy? • My take: users today are conditioned to the App Life Cycle – Download something – Install something – Have an icon on the home screen – The App takes the entire screen real estate – The App is integrated with the device  A site is a place you go to. An app is a thing you get. • The good news though is that users really don’t care how the app was built!!! – So use Web technologies for the job!! 2011-10-25 SenchaCon'11 5 Wednesday, November 2, 11
  • 6. Two Dimensions to App Experience Web App Contents Web Site Many ways to adapt Life Cycle 2011-10-25 SenchaCon'11 6 Wednesday, November 2, 11
  • 7. Say no to NIBS - The “Native Is Better” crowd are missing the point of the Web - It’s the scale of the market stupid! - It’s powerful, cross-platform, and an NIBS abundant skill set. - This is not to say that Web is better than Native - That would be silly - But the Web is absolutely competitive - Most types of apps can now be built very nicely using Web technologies - The gap is narrow today, keeps on getting narrower, and fast. * Native Is Better Syndrome 2011-10-25 SenchaCon'11 7 Wednesday, November 2, 11
  • 8. BlackBerry WebWorks • A BlackBerry WebWorks application is created using standard web technologies, provides full integration with native APIs and has a native application life cycle. • In market since 2009 on BB5. Now on BB5/6/7, and PlayBook and future QNX super phones • OSS Community http://www.github.com/blackberry BlackBerry WebWorks 2011-10-25 SenchaCon'11 8 Wednesday, November 2, 11
  • 9. ANATOMY OF THE MEDIA VIEWER 2011-10-25 SenchaCon'11 9 Wednesday, November 2, 11
  • 10. Overall application 2011-10-25 SenchaCon'11 10 Wednesday, November 2, 11
  • 11. Media Viewer DEMO 2011-10-25 SenchaCon'11 11 Wednesday, November 2, 11
  • 12. Folder Structure 2011-10-25 SenchaCon'11 12 Wednesday, November 2, 11
  • 13. Config.xml <widget xmlns="http://www.w3.org/ns/widgets” xmlns:rim="http://www.blackberry.com/ns/widgets" version="0.1.261" id="Viewer" xml:lang="en"> <name>Viewer</name> <description>This BlackBerry PlayBook web-based app browses media stored on the device.</description> <author rim:copyright="2011" email="jing@rim.com" href="http://blackberry.com/html5">Jim Ing</author> <rim:loadingScreen backgroundImage="blackberry_black.jpg" foregroundImage="blackberry_blue.jpg" onLocalPageLoad="true"/> <icon src="icon.png"/> <rim:orientation mode="auto"/> <content src="index.html"/> <rim:category name="Media"/> <rim:permissions> <rim:permit>access_shared</rim:permit> <rim:permit>read_device_identifying_information</rim:permit> </rim:permissions> <!-- Universal APIs: The following features are available on both Smartphone and Tablet OS --> <feature id="blackberry.app" required="true" version="1.0.0.0"/> <feature id="blackberry.app.event" required="true" version="1.0.0.0"/> <feature id="blackberry.system" required="true" version="1.0.0.0"/> <feature id="blackberry.system.event" required="true" version="1.0.0.0"/> <feature id="blackberry.utils" required="true" version="1.0.0.0"/> <feature id="blackberry.identity" required="true" version="1.0.0.0"/> <feature id="blackberry.invoke" required="true" version="1.0.0.0"/> <feature id="blackberry.io.file" required="true" version="1.0.0.0"/> <feature id="blackberry.io.dir" required="true" version="1.0.0.0"/> <access subdomains="true" uri="*"/> </widget> 2011-10-25 SenchaCon'11 13 Wednesday, November 2, 11
  • 14. Evil UA Sniffing app.isBlackBerrySmartphone = function () { var ua = navigator.userAgent.toLowerCase(); var isMIDP = (ua.indexOf("midp") >= 0); var isWebKit = (ua.indexOf("webkit") >= 0); var isBlackBerry = (ua.indexOf("blackberry") >= 0); return ((isMIDP || isWebKit) && isBlackBerry); }; app.isBlackBerryPlayBook = function () { var ua = navigator.userAgent.toLowerCase(); var isWebKit = (ua.indexOf("webkit") >= 0); var isTablet = (ua.indexOf("playbook") >= 0); return (isWebKit && isTablet); }; 2011-10-25 SenchaCon'11 14 Wednesday, November 2, 11
  • 15. Testing for BlackBerry Webworks if ( (window.blackberry === undefined) || (blackberry.io === undefined) || (blackberry.io.file === undefined)) { if (app.debug === true) { console.warn('WebWorks API not supported'); } } else ... 2011-10-25 SenchaCon'11 15 Wednesday, November 2, 11
  • 16. Getting files (1) var Dir = blackberry.io.dir; var path = ""; if (app.isBlackBerryPlayBook()) { path = eval('Dir.appDirs.shared.' + subfolder + '.path'); } else if (app.isBlackBerrySmartphone()) { path = 'file:///store/home/user/' + subfolder; } var items = Dir.listFiles(path); var props; for (var i = 0; i < items.length; i++) { try { props = blackberry.io.file.getFileProperties(path + '/' + items[i]); } catch (ex) { console.warn(ex.description + ' [' + items[i] + ']'); } 2011-10-25 SenchaCon'11 16 Wednesday, November 2, 11
  • 17. Getting files (2) if (props.fileExtension.match(patt)) { // expected media extensions if (items[i].indexOf(" ") === -1) {// skip filenames with spaces data.push({ "filePath": path, "fileName": items[i], "fileExt": props.fileExtension, "fileSize": props.size, "dateCreated": props.dateCreated, "dateModified": props.dateModified, "isHidden": props.isHidden, "isReadonly": props.isReadonly, "mimeType": props.mimeType }); } else { console.log('Skipped "' + items[i] + '" because it contains spaces.'); } } else { console.log('Skipped "' + items[i] + '" because it does not match "' + filetypes + '".'); } 2011-10-25 SenchaCon'11 17 Wednesday, November 2, 11
  • 18. Overlay var overlay = new Ext.Panel({ id: 'overlay', floating: true, modal: true, centered: true, padding: '0', dockedItems: overlayToolbar, scroll: false, hideOnMaskTap: false, hidden: true, html: '', }); 2011-10-25 SenchaCon'11 18 Wednesday, November 2, 11
  • 19. AliceJS overlay.show(); alice.toss({ id: "overlay", duration: 2000, origin: app.randAngle(-45,180)+'% '+app.randAngle(-45,180)+'%', random: 10 }); 2011-10-25 SenchaCon'11 19 Wednesday, November 2, 11
  • 20. TESTING AND SIMULATING 2011-10-25 SenchaCon'11 20 Wednesday, November 2, 11
  • 21. A day in the life… Native Developer Writing Code Test on Simulator Test on Device Desktop Web Developer Writing Code Test in Desktop Browsers Mobile Web Developer Writing Code Test in Desktop Browser Test On Simulator Test on Device 2011-10-25 SenchaCon'11 21 Wednesday, November 2, 11
  • 22. Web Testing • WebKit is king today – For desktop testing of your mobile app, both Safari (5 and up) and Google Chrome (13 and up) are really good and take you a long way. • There are emerging solutions to test your application in a mobile browser – Weinre, JSConsole, Firebug Lite… • There are also the standard native simulators – But they are so big, and so slow – And they are never quite accurate enough that you don’t need a physical device in the end anyway • And you’ll always have alert()! 2011-10-25 SenchaCon'11 22 Wednesday, November 2, 11
  • 23. But BlackBerry Does Web Testing • BlackBerry Ripple allows you to do device simulation and testing right on your desktop’s Google Chrome browser – Simulate device attribute such as screen res, skin etc… – Simulate device APIs and Sensors – Not 100% accurate, but small, fast, and conveniently browser-based • The BlackBerry stack supports remote WebInspector directly to debug a Web app running on-device – You can do anything (including stepping through JS) that you can normally do in WebInspector on a desktop WebKit browser. • Plus, plug you PlayBook on the USB port of your laptop, and you have IP connectivity – No wi-fi actually needed 2011-10-25 SenchaCon'11 23 Wednesday, November 2, 11
  • 24. Ripple: Ultimate Browser-based 2011-10-25 SenchaCon'11 24 Wednesday, November 2, 11
  • 25. A day in the life… Native Developer Writing Code Test on Simulator Test on Device Desktop Web Developer Writing Code Test in Desktop Browser Mobile Web Developer Writing Code Test in Desktop Browser Test On Simulator Test on Device Mobile Web Developer (with Ripple) Writing Code Test in Ripple Test on 2011-10-25 SenchaCon'11 25 Wednesday, November 2, 11
  • 26. Setting up a device for Web testing • At some point though, you need to go on device! • Plug in your device through USB, or on a Wi-Fi network reachable from your dev machine (laptop/desktop) – A simple ipconfig /all (on Windows) shows you the device’s IP address when connected via USB That’s actually the address of the development machine And that’s actually the address of the device • Yeah, the device can call your web server on your dev machine, and vice-versa, just through USB (no Wi-Fi required). 2011-10-25 SenchaCon'11 26 Wednesday, November 2, 11
  • 27. Setting up device security • Go to your device options – Go to the Security tab – Activate the development mode – Set up a password 2011-10-25 SenchaCon'11 27 Wednesday, November 2, 11
  • 28. Enabling WebInspector • Go to the browser on you device – Go to Options – Go to the Privacy and Security tab – Enable Web Inspector • Information will be displayed as to how to connect to the browser 2011-10-25 SenchaCon'11 28 Wednesday, November 2, 11
  • 29. Refresh • Web Apps run full screen, without a browser chrome – For testing, how do you refresh a page? – You have to build a “refresh widget” for testing only • Some funny gesture • Some semi-transparent button in a corner – location.reload(true) from WebInspector 2011-10-25 SenchaCon'11 29 Wednesday, November 2, 11
  • 30. Web Inspector: Ultimate Web Dev Tool 2011-10-25 SenchaCon'11 30 Wednesday, November 2, 11
  • 31. BUILD, SIGN AND SUBMIT 2011-10-25 SenchaCon'11 31 Wednesday, November 2, 11
  • 32. Signing • One of the weakest link in the developer experience today – Gotta register with AppWorld – Gotta register with the certificate auth to get a key (CSJ file) – Gotta sign your machine pushd "C:Program FilesRIMBlackBerry WebWorks PlayBookbbwpbin" ..blackberry-tablet-sdkbinblackberry-signer.bat -csksetup -cskpass totoxxx ..blackberry-tablet-sdkbinblackberry-signer.bat -register -csjpin titixxx -cskpass totoxxx C:PeekABooclient-RDK-1234567890.csj ..blackberry-tablet-sdkbinblackberry-keytool.bat -genkeypair -keystore sigtool.p12 -storepass totoxxx -dname "cn=MyCo" -alias author popd • Not pretty and error prone, but you do it once and it’s done 2011-10-25 SenchaCon'11 32 Wednesday, November 2, 11
  • 33. BlackBerry WebWorks works • Overall developer experience is less than stellar – 3 things to download (Adobe AIR SDK, PlayBook SDK, WebWorks SDK) • Installers are very basic, but you should pay attention: RTFM! – Build is tedious (you have to create a ZIP file, build and deploy) del "c:PeekABooPeekABoo.zip" del "c:PeekABooPeekABoo.bar" "zip.exe" a -r "c:PeekABooPeekABoo.zip" "c:PeekABooWebContent*.*" "C:Program FilesRIMBlackBerry WebWorks PlayBookbbwpbbwp.exe“ “C:PeekABooPeekABoo.zip" -gcsk totoxxx -gp12 totoxxx -buildId 101 -o "c:PeekABoo" "C:Program FilesRIMBlackBerry WebWorks PlayBookbbwpblackberry-tablet-sdkbinblackberry-deploy.bat“ -installApp -password totoxxx -device 192.168.1.105 -package "c:projectsPeekABoo.bar" • But the result works as advertized: it’s an App! – It performs very well, and come on! It’s just a simple build script! 2011-10-25 SenchaCon'11 33 Wednesday, November 2, 11
  • 34. AppWorld • Register, and submit your app – Basic steps to upload your binary (BAR file) – Works OK • The only trap is that each time you submit a new binary, YOU MUST increment your build number or else, the world stops! – -buildId parameter for bbwp.exe in the build script 2011-10-25 SenchaCon'11 34 Wednesday, November 2, 11
  • 35. CONCLUSION 2011-10-25 SenchaCon'11 35 Wednesday, November 2, 11
  • 36. Summary • THE MOBILE WEB IS A POWERFUL OPTION FOR DEVELOPING MOBILE APPS • Desktop WebKit browsers are really good for a lot of app dev • There is a next generation of browser-based debugging and testing tools • WebWorks SDK, code signing process and BlackBerry AppWorld are not easy – But come on, once the initial pain is over, it’s pretty easy 2011-10-25 SenchaCon'11 36 Wednesday, November 2, 11
  • 37. First time… © New Line Cinema 2011-10-25 SenchaCon'11 37 Wednesday, November 2, 11
  • 38. And then… Never afraid again! http://www.snorgtees.com/friday-the-12th 2011-10-25 SenchaCon'11 38 Wednesday, November 2, 11
  • 39. BlackBerry Tooling URLs • Ripple – http://ripple.tinyhippos.com/ • BlackBerry WebWorks – http://us.blackberry.com/developers/browserdev/ • BlackBerry WebWorks Handhelds Downloads – http://us.blackberry.com/developers/browserdev/widgetsdk.jsp • BlackBerry WebWorks PlayBook Downloads – http://us.blackberry.com/developers/tablet/webworks.jsp • WebWorks Open Source on GitHub – https://github.com/blackberry 2011-10-25 SenchaCon'11 39 Wednesday, November 2, 11