SlideShare a Scribd company logo
1 of 30
An Introduction to
      webOS
      Kevin Decker
      Enda McGrath
Overview

•   webOS Overview
•   Application Architecture
•   Mojo Framework
•   Development
•   App Catalog
What is webOS?
SDK: HTML

• HTML, CSS, JS
• Tracking HTML5 standards
• Open Stack
  •   Linux
  •   WebKit
  •   v8
  •   http://opensource.palm.com
PDK: Plugin Development Kit

•   C/C++
•   Posix, OpenGL, SDL, PDL
•   when you need speed & low level access
•   full screen or hybrid
Application Architecture

• Stages
  • Scenes
    • Widgets
  • Dashboards
• Mojo Framework
Stages & Scenes
HTML




<div id="activate-button" class="palm-button">Activate</div>
<div id="destroy-button" class="palm-button negative">Destroy!</div>
JavaScript



ActivateAssistant.prototype.setup = function() {
    this.controller.listen(
        "destroy-button", Mojo.Event.tap, this.destroy.bind(this));
};
 
ActivateAssistant.prototype.destroy = function(event) {
    console.log("destroying with event " + event);
};
Rendered
Mojo Development Framework

• Common UI elements
• JavaScript APIs
• Loosely follows Model View Controller (MVC)
  Pattern
• Customizable
Widgets
• Buttons
   • Button, Radio, toggle
• Containers
   • Drawer, Scroller
• Dialogs
   • Alert, Error, Custom
• Indicators
   • Progress Bars, Spinner
• Lists
   • Basic, Custom, Filter
• Menus
• Pickers
   • Date, Number, Time, File, Contact
• Selectors
   • Checkbox, List, Slider
• Text Input
   • Filter, Text, Password, Rich
• Viewers
   • Image View, WebView
Example - Textfield Widget HTML




     <div id="text-field" x-mojo-element="TextField"></
Example - Textfield Widget Javascript


      var attributes = {
    modelProperty: 'original',
    focusMode: Mojo.Widget.focusSelectMode,
    maxLength: 30,
};
this.model = {
    original: 'initial value',
    disabled: false
};
 
Service APIs

• Asynchronous dbus communication to lower
  layers
• JSON parameters
• Subscriptions
• Comprehensive Set
Service APIs

• Hardware
  • Accelerometer, GPS, Display, Connection Manager, Camera,
    Power
• Application Services
  • Alarms, Contacts, Calendar, Photos, Download/Upload
• Application Actions
  • Email, Maps, Phone, Video, Browser, Document Viewers,
    Messaging
Example - Connection Manager

       ConnectionManagerAssistant.prototype.handleButtonPressed = function(){
    this.controller.serviceRequest('palm://com.palm.connectionmanager', {
        method: 'getstatus',
        parameters: {subscribe:true},
        onSuccess: this.handleOKResponse,
        onFailure: this.handleErrResponse
    });
};

ConnectionManagerAssistant.prototype.handleOKResponse = function(response){
    Mojo.Log.info(Object.toJSON(response));
};
ConnectionManagerAssistant.prototype.handleErrResponse = function(response){
    Mojo.Log.info(Object.toJSON(response));
};
Development
webOS SDK

•   Standard HTML Development Process
•   Optional Eclipse Plugin
•   Command-line SDK tools
•   OS X, Linux, Windows support
The webOS Emulator

• VirtualBox
• x86 build of webOS
• most things identical
• not all hardware features supported (camera,
  multitouch)
• simulate events
Simulating Events

root@qemux86:/# luna-send -n 1 palm://com.palm.pmradiosimulator/set_incomingcall {"number":"14086177000"}
** Message: serviceResponse Handling: 2, { "returnValue": true, "Code": 0, "Text":"Virtura ate your number" }

root@qemux86:/# luna-send -n 1 palm://com.palm.pmradiosimulator/set_position {"lat":"37.3","long":"-122"}
** Message: serviceResponse Handling: 2, { "returnValue": true, "Code": 0, "Text":"Virtura ate your fix" }
Palm Inspector

• WebKit Inspector Based
  • Connects to Emulator
• HTML Object View/Change
• Console
Emulator Host Mode

• Embedded web server
• Use your desktop browser
• Good for inspecting HTML
• ssh -p 5522 -L 5581:localhost:8080 root@localhost
• http://localhost:5581/Apps
Ares
Ares

•   visual IDE and GUI builder: WYSIWYG
•   runs in the browser
•   makes the same apps as the command line SDK
•   works with local emulator, debugging, logging
•   works with real devices
•   makes most coding tasks much faster
Ares vs Mojo

•   slightly different style of coding
•   Mojo widgets contained in lightweight wrappers
•   not all widgets are supported (more coming)
•   code is more concise
Ares Demo
App Catalog

•   App Catalog built into all devices
•   70/30 revenue split (Developer/Palm)
•   Multiple Catalogs
•   Multiple Countries
•   Free submission

• PDK Hotapps Promotion
    • $1 Million in prizes
    • Downloads (Free apps) and Revenue (Paid Apps)
International Apps

• Translating is strongly encouraged, not required
• Metadata for each language (title, description,
  screenshots, etc.)
• Set prices for each country
Links

•   http://developer.palm.com
•   http://ares.palm.com
•   http://ares.palm.com/AresDebug/
•   http://palmhotapps.com

More Related Content

What's hot

Instant and offline apps with Service Worker
Instant and offline apps with Service WorkerInstant and offline apps with Service Worker
Instant and offline apps with Service WorkerChang W. Doh
 
Real World Lessons in Progressive Web Application & Service Worker Caching
Real World Lessons in Progressive Web Application & Service Worker CachingReal World Lessons in Progressive Web Application & Service Worker Caching
Real World Lessons in Progressive Web Application & Service Worker CachingChris Love
 
HTML5 Web Workers-unleashed
HTML5 Web Workers-unleashedHTML5 Web Workers-unleashed
HTML5 Web Workers-unleashedPeter Lubbers
 
Web versus Native: round 1!
Web versus Native: round 1!Web versus Native: round 1!
Web versus Native: round 1!Chris Mills
 
Empowering the "mobile web"
Empowering the "mobile web"Empowering the "mobile web"
Empowering the "mobile web"Chris Mills
 
APIs, now and in the future
APIs, now and in the futureAPIs, now and in the future
APIs, now and in the futureChris Mills
 
The Complementarity of React and Web Components
The Complementarity of React and Web ComponentsThe Complementarity of React and Web Components
The Complementarity of React and Web ComponentsAndrew Rota
 
APIs for modern web apps
APIs for modern web appsAPIs for modern web apps
APIs for modern web appsChris Mills
 
Single Page WebApp Architecture
Single Page WebApp ArchitectureSingle Page WebApp Architecture
Single Page WebApp ArchitectureMorgan Cheng
 
Drupal and diversity of Single sign-on systems
Drupal and diversity of Single sign-on systemsDrupal and diversity of Single sign-on systems
Drupal and diversity of Single sign-on systemsAlex S
 
Room with a Vue - Introduction to Vue.js
Room with a Vue - Introduction to Vue.jsRoom with a Vue - Introduction to Vue.js
Room with a Vue - Introduction to Vue.jsZachary Klein
 
Uniface Lectures Webinar - Building Responsive Applications with Uniface: Dev...
Uniface Lectures Webinar - Building Responsive Applications with Uniface: Dev...Uniface Lectures Webinar - Building Responsive Applications with Uniface: Dev...
Uniface Lectures Webinar - Building Responsive Applications with Uniface: Dev...Uniface
 
Nuxt.JS Introdruction
Nuxt.JS IntrodructionNuxt.JS Introdruction
Nuxt.JS IntrodructionDavid Ličen
 
Building single page applications
Building single page applicationsBuilding single page applications
Building single page applicationsSC5.io
 
jQuery and AJAX with Rails
jQuery and AJAX with RailsjQuery and AJAX with Rails
jQuery and AJAX with RailsAlan Hecht
 
Authenticating and Securing Node.js APIs
Authenticating and Securing Node.js APIsAuthenticating and Securing Node.js APIs
Authenticating and Securing Node.js APIsJimmy Guerrero
 
Getting Started with HTML 5 Web workers
Getting Started with HTML 5 Web workersGetting Started with HTML 5 Web workers
Getting Started with HTML 5 Web workersFlumes
 

What's hot (20)

Instant and offline apps with Service Worker
Instant and offline apps with Service WorkerInstant and offline apps with Service Worker
Instant and offline apps with Service Worker
 
Real World Lessons in Progressive Web Application & Service Worker Caching
Real World Lessons in Progressive Web Application & Service Worker CachingReal World Lessons in Progressive Web Application & Service Worker Caching
Real World Lessons in Progressive Web Application & Service Worker Caching
 
HTML5 Web Workers-unleashed
HTML5 Web Workers-unleashedHTML5 Web Workers-unleashed
HTML5 Web Workers-unleashed
 
Web versus Native: round 1!
Web versus Native: round 1!Web versus Native: round 1!
Web versus Native: round 1!
 
Empowering the "mobile web"
Empowering the "mobile web"Empowering the "mobile web"
Empowering the "mobile web"
 
APIs, now and in the future
APIs, now and in the futureAPIs, now and in the future
APIs, now and in the future
 
The Complementarity of React and Web Components
The Complementarity of React and Web ComponentsThe Complementarity of React and Web Components
The Complementarity of React and Web Components
 
APIs for modern web apps
APIs for modern web appsAPIs for modern web apps
APIs for modern web apps
 
Single Page WebApp Architecture
Single Page WebApp ArchitectureSingle Page WebApp Architecture
Single Page WebApp Architecture
 
Drupal and diversity of Single sign-on systems
Drupal and diversity of Single sign-on systemsDrupal and diversity of Single sign-on systems
Drupal and diversity of Single sign-on systems
 
Room with a Vue - Introduction to Vue.js
Room with a Vue - Introduction to Vue.jsRoom with a Vue - Introduction to Vue.js
Room with a Vue - Introduction to Vue.js
 
Uniface Lectures Webinar - Building Responsive Applications with Uniface: Dev...
Uniface Lectures Webinar - Building Responsive Applications with Uniface: Dev...Uniface Lectures Webinar - Building Responsive Applications with Uniface: Dev...
Uniface Lectures Webinar - Building Responsive Applications with Uniface: Dev...
 
Nuxt.JS Introdruction
Nuxt.JS IntrodructionNuxt.JS Introdruction
Nuxt.JS Introdruction
 
Building single page applications
Building single page applicationsBuilding single page applications
Building single page applications
 
Lazy load Everything!
Lazy load Everything!Lazy load Everything!
Lazy load Everything!
 
Web Components
Web ComponentsWeb Components
Web Components
 
jQuery and AJAX with Rails
jQuery and AJAX with RailsjQuery and AJAX with Rails
jQuery and AJAX with Rails
 
Authenticating and Securing Node.js APIs
Authenticating and Securing Node.js APIsAuthenticating and Securing Node.js APIs
Authenticating and Securing Node.js APIs
 
Getting Started with HTML 5 Web workers
Getting Started with HTML 5 Web workersGetting Started with HTML 5 Web workers
Getting Started with HTML 5 Web workers
 
Vue presentation
Vue presentationVue presentation
Vue presentation
 

Viewers also liked

Evolucion de la wed
Evolucion de la wedEvolucion de la wed
Evolucion de la wedsantiago0797
 
Web Operating System Overview
Web Operating System OverviewWeb Operating System Overview
Web Operating System OverviewMadhu Bala
 
Intro To webOS
Intro To webOSIntro To webOS
Intro To webOSfpatton
 
La evolución de la web
La evolución de la webLa evolución de la web
La evolución de la webgycgb15
 
Developing Applications for WebOS
Developing Applications for WebOSDeveloping Applications for WebOS
Developing Applications for WebOSChuq Von Rospach
 
Light tree
Light tree Light tree
Light tree Priya K
 

Viewers also liked (11)

webOS Introduction
webOS IntroductionwebOS Introduction
webOS Introduction
 
Evolucion de la wed
Evolucion de la wedEvolucion de la wed
Evolucion de la wed
 
Web OS
Web OSWeb OS
Web OS
 
Windows dna
Windows dnaWindows dna
Windows dna
 
Web Operating System Overview
Web Operating System OverviewWeb Operating System Overview
Web Operating System Overview
 
Intro To webOS
Intro To webOSIntro To webOS
Intro To webOS
 
La evolución de la web
La evolución de la webLa evolución de la web
La evolución de la web
 
Developing Applications for WebOS
Developing Applications for WebOSDeveloping Applications for WebOS
Developing Applications for WebOS
 
Rain technology
Rain technologyRain technology
Rain technology
 
Cloud operating systems
Cloud operating systemsCloud operating systems
Cloud operating systems
 
Light tree
Light tree Light tree
Light tree
 

Similar to An Introduction to webOS

Groovy & Grails eXchange 2012 vert.x presentation
Groovy & Grails eXchange 2012 vert.x presentationGroovy & Grails eXchange 2012 vert.x presentation
Groovy & Grails eXchange 2012 vert.x presentationStuart (Pid) Williams
 
Android lessons you won't learn in school
Android lessons you won't learn in schoolAndroid lessons you won't learn in school
Android lessons you won't learn in schoolMichael Galpin
 
Made for Mobile - Let Office 365 Power Your Mobile Apps
Made for Mobile - Let Office 365 Power Your Mobile AppsMade for Mobile - Let Office 365 Power Your Mobile Apps
Made for Mobile - Let Office 365 Power Your Mobile AppsSPC Adriatics
 
Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...
Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...
Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...Anupam Ranku
 
qooxdoo - Open Source Ajax Framework
qooxdoo - Open Source Ajax Frameworkqooxdoo - Open Source Ajax Framework
qooxdoo - Open Source Ajax Frameworkecker
 
Disrupting the application eco system with progressive web applications
Disrupting the application eco system with progressive web applicationsDisrupting the application eco system with progressive web applications
Disrupting the application eco system with progressive web applicationsChris Love
 
How to generate customized java 8 code from your database
How to generate customized java 8 code from your databaseHow to generate customized java 8 code from your database
How to generate customized java 8 code from your databaseSpeedment, Inc.
 
Silicon Valley JUG - How to generate customized java 8 code from your database
Silicon Valley JUG - How to generate customized java 8 code from your databaseSilicon Valley JUG - How to generate customized java 8 code from your database
Silicon Valley JUG - How to generate customized java 8 code from your databaseSpeedment, Inc.
 
Building Real-World Dojo Web Applications
Building Real-World Dojo Web ApplicationsBuilding Real-World Dojo Web Applications
Building Real-World Dojo Web ApplicationsAndrew Ferrier
 
Mobile Web Development with HTML5
Mobile Web Development with HTML5Mobile Web Development with HTML5
Mobile Web Development with HTML5Roy Clarkson
 
Developing High Performance Web Apps - CodeMash 2011
Developing High Performance Web Apps - CodeMash 2011Developing High Performance Web Apps - CodeMash 2011
Developing High Performance Web Apps - CodeMash 2011Timothy Fisher
 
Intro to node and mongodb 1
Intro to node and mongodb   1Intro to node and mongodb   1
Intro to node and mongodb 1Mohammad Qureshi
 
Tech io spa_angularjs_20130814_v0.9.5
Tech io spa_angularjs_20130814_v0.9.5Tech io spa_angularjs_20130814_v0.9.5
Tech io spa_angularjs_20130814_v0.9.5Ganesh Kondal
 
Firefox OS - The platform you deserve - Athens App Days - 2013-11-27
Firefox OS - The platform you deserve - Athens App Days - 2013-11-27Firefox OS - The platform you deserve - Athens App Days - 2013-11-27
Firefox OS - The platform you deserve - Athens App Days - 2013-11-27Frédéric Harper
 
HTML5 Hacking - Yahoo! Open Hack Day
HTML5 Hacking - Yahoo! Open Hack DayHTML5 Hacking - Yahoo! Open Hack Day
HTML5 Hacking - Yahoo! Open Hack DayTed Drake
 
Angular mobile angular_u
Angular mobile angular_uAngular mobile angular_u
Angular mobile angular_uDoris Chen
 

Similar to An Introduction to webOS (20)

20120306 dublin js
20120306 dublin js20120306 dublin js
20120306 dublin js
 
Groovy & Grails eXchange 2012 vert.x presentation
Groovy & Grails eXchange 2012 vert.x presentationGroovy & Grails eXchange 2012 vert.x presentation
Groovy & Grails eXchange 2012 vert.x presentation
 
Android lessons you won't learn in school
Android lessons you won't learn in schoolAndroid lessons you won't learn in school
Android lessons you won't learn in school
 
Made for Mobile - Let Office 365 Power Your Mobile Apps
Made for Mobile - Let Office 365 Power Your Mobile AppsMade for Mobile - Let Office 365 Power Your Mobile Apps
Made for Mobile - Let Office 365 Power Your Mobile Apps
 
Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...
Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...
Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...
 
qooxdoo - Open Source Ajax Framework
qooxdoo - Open Source Ajax Frameworkqooxdoo - Open Source Ajax Framework
qooxdoo - Open Source Ajax Framework
 
Disrupting the application eco system with progressive web applications
Disrupting the application eco system with progressive web applicationsDisrupting the application eco system with progressive web applications
Disrupting the application eco system with progressive web applications
 
How to generate customized java 8 code from your database
How to generate customized java 8 code from your databaseHow to generate customized java 8 code from your database
How to generate customized java 8 code from your database
 
Silicon Valley JUG - How to generate customized java 8 code from your database
Silicon Valley JUG - How to generate customized java 8 code from your databaseSilicon Valley JUG - How to generate customized java 8 code from your database
Silicon Valley JUG - How to generate customized java 8 code from your database
 
Building Real-World Dojo Web Applications
Building Real-World Dojo Web ApplicationsBuilding Real-World Dojo Web Applications
Building Real-World Dojo Web Applications
 
Mobile Web Development with HTML5
Mobile Web Development with HTML5Mobile Web Development with HTML5
Mobile Web Development with HTML5
 
Developing High Performance Web Apps - CodeMash 2011
Developing High Performance Web Apps - CodeMash 2011Developing High Performance Web Apps - CodeMash 2011
Developing High Performance Web Apps - CodeMash 2011
 
Intro to node and mongodb 1
Intro to node and mongodb   1Intro to node and mongodb   1
Intro to node and mongodb 1
 
Tech io spa_angularjs_20130814_v0.9.5
Tech io spa_angularjs_20130814_v0.9.5Tech io spa_angularjs_20130814_v0.9.5
Tech io spa_angularjs_20130814_v0.9.5
 
20120802 timisoara
20120802 timisoara20120802 timisoara
20120802 timisoara
 
2015 5-7-slide
2015 5-7-slide2015 5-7-slide
2015 5-7-slide
 
Firefox OS - The platform you deserve - Athens App Days - 2013-11-27
Firefox OS - The platform you deserve - Athens App Days - 2013-11-27Firefox OS - The platform you deserve - Athens App Days - 2013-11-27
Firefox OS - The platform you deserve - Athens App Days - 2013-11-27
 
HTML5 Refresher
HTML5 RefresherHTML5 Refresher
HTML5 Refresher
 
HTML5 Hacking - Yahoo! Open Hack Day
HTML5 Hacking - Yahoo! Open Hack DayHTML5 Hacking - Yahoo! Open Hack Day
HTML5 Hacking - Yahoo! Open Hack Day
 
Angular mobile angular_u
Angular mobile angular_uAngular mobile angular_u
Angular mobile angular_u
 

Recently uploaded

My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfngoud9212
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfjimielynbastida
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Unlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsUnlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsPrecisely
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsAndrey Dotsenko
 

Recently uploaded (20)

My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdf
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdf
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Unlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsUnlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power Systems
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 

An Introduction to webOS

  • 1. An Introduction to webOS Kevin Decker Enda McGrath
  • 2. Overview • webOS Overview • Application Architecture • Mojo Framework • Development • App Catalog
  • 4. SDK: HTML • HTML, CSS, JS • Tracking HTML5 standards • Open Stack • Linux • WebKit • v8 • http://opensource.palm.com
  • 5. PDK: Plugin Development Kit • C/C++ • Posix, OpenGL, SDL, PDL • when you need speed & low level access • full screen or hybrid
  • 6. Application Architecture • Stages • Scenes • Widgets • Dashboards • Mojo Framework
  • 8. HTML <div id="activate-button" class="palm-button">Activate</div> <div id="destroy-button" class="palm-button negative">Destroy!</div>
  • 9. JavaScript ActivateAssistant.prototype.setup = function() {     this.controller.listen(         "destroy-button", Mojo.Event.tap, this.destroy.bind(this)); };   ActivateAssistant.prototype.destroy = function(event) {     console.log("destroying with event " + event); };
  • 11. Mojo Development Framework • Common UI elements • JavaScript APIs • Loosely follows Model View Controller (MVC) Pattern • Customizable
  • 12. Widgets • Buttons • Button, Radio, toggle • Containers • Drawer, Scroller • Dialogs • Alert, Error, Custom • Indicators • Progress Bars, Spinner • Lists • Basic, Custom, Filter • Menus • Pickers • Date, Number, Time, File, Contact • Selectors • Checkbox, List, Slider • Text Input • Filter, Text, Password, Rich • Viewers • Image View, WebView
  • 13. Example - Textfield Widget HTML <div id="text-field" x-mojo-element="TextField"></
  • 14. Example - Textfield Widget Javascript var attributes = {     modelProperty: 'original',     focusMode: Mojo.Widget.focusSelectMode,     maxLength: 30, }; this.model = {     original: 'initial value',     disabled: false };  
  • 15. Service APIs • Asynchronous dbus communication to lower layers • JSON parameters • Subscriptions • Comprehensive Set
  • 16. Service APIs • Hardware • Accelerometer, GPS, Display, Connection Manager, Camera, Power • Application Services • Alarms, Contacts, Calendar, Photos, Download/Upload • Application Actions • Email, Maps, Phone, Video, Browser, Document Viewers, Messaging
  • 17. Example - Connection Manager ConnectionManagerAssistant.prototype.handleButtonPressed = function(){     this.controller.serviceRequest('palm://com.palm.connectionmanager', {         method: 'getstatus',         parameters: {subscribe:true},         onSuccess: this.handleOKResponse,         onFailure: this.handleErrResponse     }); }; ConnectionManagerAssistant.prototype.handleOKResponse = function(response){     Mojo.Log.info(Object.toJSON(response)); }; ConnectionManagerAssistant.prototype.handleErrResponse = function(response){     Mojo.Log.info(Object.toJSON(response)); };
  • 19. webOS SDK • Standard HTML Development Process • Optional Eclipse Plugin • Command-line SDK tools • OS X, Linux, Windows support
  • 20. The webOS Emulator • VirtualBox • x86 build of webOS • most things identical • not all hardware features supported (camera, multitouch) • simulate events
  • 21. Simulating Events root@qemux86:/# luna-send -n 1 palm://com.palm.pmradiosimulator/set_incomingcall {"number":"14086177000"} ** Message: serviceResponse Handling: 2, { "returnValue": true, "Code": 0, "Text":"Virtura ate your number" } root@qemux86:/# luna-send -n 1 palm://com.palm.pmradiosimulator/set_position {"lat":"37.3","long":"-122"} ** Message: serviceResponse Handling: 2, { "returnValue": true, "Code": 0, "Text":"Virtura ate your fix" }
  • 22. Palm Inspector • WebKit Inspector Based • Connects to Emulator • HTML Object View/Change • Console
  • 23. Emulator Host Mode • Embedded web server • Use your desktop browser • Good for inspecting HTML • ssh -p 5522 -L 5581:localhost:8080 root@localhost • http://localhost:5581/Apps
  • 24. Ares
  • 25. Ares • visual IDE and GUI builder: WYSIWYG • runs in the browser • makes the same apps as the command line SDK • works with local emulator, debugging, logging • works with real devices • makes most coding tasks much faster
  • 26. Ares vs Mojo • slightly different style of coding • Mojo widgets contained in lightweight wrappers • not all widgets are supported (more coming) • code is more concise
  • 28. App Catalog • App Catalog built into all devices • 70/30 revenue split (Developer/Palm) • Multiple Catalogs • Multiple Countries • Free submission • PDK Hotapps Promotion • $1 Million in prizes • Downloads (Free apps) and Revenue (Paid Apps)
  • 29. International Apps • Translating is strongly encouraged, not required • Metadata for each language (title, description, screenshots, etc.) • Set prices for each country
  • 30. Links • http://developer.palm.com • http://ares.palm.com • http://ares.palm.com/AresDebug/ • http://palmhotapps.com

Editor's Notes

  1. Thank every for coming Thank Solstice for setting this up Today: Intro to the webOS platform. Background: Palm Developer Relations Team: Goal is to provide resources to devs in form of training, support, and examples.
  2. goal: Provide a high level overview of the webOS architecture, SDK, and ecosystem
  3. What is the webOS? The webOS is Palm&apos;s mobile operating system. It was designed from the ground up to be a mobile operating system for devices with a touch screen and a physical keyboard. It can scale to different screen sizes and hardware capabilities while presenting a uniform platform to you, the software developer.
  4. - Use standard web technologies - HTML5 = New web specs, NOT strictly HTML5 spec - Storage - Geolocation - CSS3 - Etc - Allows of cool UIs such as this one
  5. Other option:- Faster - Use of standards: Easy porting SDL : Input controls and 2D surface APIs PDL : Palm Specific APIs PDK apps can be either pure PDK running as full screen, such as most of our 3D games, or hybrid apps where you mix some native code with an HTML based Mojo app.
  6. application architecture difference between a webos app and a web app. no webserver. everything is local. you implement state changes and program logic in javascript locally. you don&apos;t call back to a server somewhere.
  7. cards, stages, and scenes the webos uses the &apos;card&apos; as the core ui metaphor. with a few exceptions, every app is shown as a card. the user switches between apps much as you would deal a deck of cards, flipping from one card to another. this is a very tangable metaphor that everyone can grasp very quickly. from an application point of view you have stages and scenes. a stage is a card. a scene is a view within that card. you only see one scene at a time. if this was a webpage then the stage would be the browser window or tab, and the scene would be a page on your site. the user can navigate from scene to scene, or page to page. some apps actually have more than one stage, meaning they have more than one card visible. a good example of this is the email app. there is one card for viewing your mail. it has multiple scenes: one for the list of inboxes, one for the list of mails in your inbox, and one for the mail you are currently useing. the mail app also has secondary stages for when you compose an email. in this case it shows a full separate card so that you can write an email but still switch back to the inbox to read another email before you are done. I&amp;#x2019;m not going to cover it in this session, but there is also another kind of stage called a dashboard. This is a little indicator at the bottom of the screen that lets you know you have a message or alert or some other notification. This can be expanded into a full dashboard, which is a wide but short window across the bottom that gives the user more info and the ability to take action. Usually this will open up the full app that created the notification, or it may provide the user with other controls, such as the music player which lets you pause or switch tracks.
  8. Very simple scene
  9. You then wire up the widgets using JavaScript. This code will turn the &amp;#x2018;destroyPlanet&amp;#x2019; function into an event listener with the bindAsEventListener function. Then it attaches the listener to the button using the &amp;#x2018;listen&amp;#x2019; function on the scene controller.
  10. Here&amp;#x2019;s what that view looks like without adding any more code or CSS.
  11. The framework defines a variety of widgets for common UI flows. Further more these can be customized directly through CSS and Javascript.
  12. The webOS has lots of APIs for all sorts of things so I&amp;#x2019;ve divided them into four sections. First is direct monitoring of the hardware. Pretty much every piece of hardware in the phones has an API for it, such as the accelerometer and the GPS radio. Next are platform services. This are services apis for things that aren&amp;#x2019;t really hardware but let you request features from the operating system. This is stuff like the current state of the network, power settings, and direct embedding of video streams. Next are application services. This are simply APIs provided to your app to interact with the user&amp;#x2019;s data on the device, with the appropriate privacy safeguards. Finally we have application actions. These are apis that let you request another application to do something for you, usually by opening that application in a particular state. For example, with the Email API you don&amp;#x2019;t directly send an email. Instead you ask the email app to open up a new message with the recipient and subject you provide.
  13. The webOS has lots of APIs for all sorts of things so I&amp;#x2019;ve divided them into four sections. First is direct monitoring of the hardware. Pretty much every piece of hardware in the phones has an API for it, such as the accelerometer and the GPS radio. Next are platform services. This are services apis for things that aren&amp;#x2019;t really hardware but let you request features from the operating system. This is stuff like the current state of the network, power settings, and direct embedding of video streams. Next are application services. This are simply APIs provided to your app to interact with the user&amp;#x2019;s data on the device, with the appropriate privacy safeguards. Finally we have application actions. These are apis that let you request another application to do something for you, usually by opening that application in a particular state. For example, with the Email API you don&amp;#x2019;t directly send an email. Instead you ask the email app to open up a new message with the recipient and subject you provide.
  14. The webOS has lots of APIs for all sorts of things so I&amp;#x2019;ve divided them into four sections. First is direct monitoring of the hardware. Pretty much every piece of hardware in the phones has an API for it, such as the accelerometer and the GPS radio. Next are platform services. This are services apis for things that aren&amp;#x2019;t really hardware but let you request features from the operating system. This is stuff like the current state of the network, power settings, and direct embedding of video streams. Next are application services. This are simply APIs provided to your app to interact with the user&amp;#x2019;s data on the device, with the appropriate privacy safeguards. Finally we have application actions. These are apis that let you request another application to do something for you, usually by opening that application in a particular state. For example, with the Email API you don&amp;#x2019;t directly send an email. Instead you ask the email app to open up a new message with the recipient and subject you provide.
  15. We provide a variety of tools to assist with development, SDK command line, Eclipse plugin, Emulator, Ares.
  16. We do have an eclipse plugin and our Ares visual tool, but I&apos;m going to just use the core SDK with command line tools to show you what&apos;s really going on. It&apos;s sort of like in math class where your teacher taught you how to add and subtract before showing you how to use the calculator to do it faster. The command line tools also make it very easy to automate your development workflow using ant files, hudson, and other build systems. commandline tools our command line tools are written in [java? python? bash?] so they should run everywhere. The whole SDK is designed to be platform independent and usable from open source tools, which is why we chose VirtualBox as our emulator.
  17. The webOS emulator is an instance of the open source project VirtualBox. It&apos;s an x86 build of our whole OS, so it really is very close to a real device except for the different hardware. Not all hardware features are supported, such as the camera. For some hardware like GPS you can simulate events using command line tools. This comes in very handy when building unit tests for your software. [a note on virtual box: you must have version xxx]
  18. In addition to the key strokes for simple accelerometer events you can also simulate some radio features from the command line. For example you can fake an incoming phone call like this. And you can fake a GPS fix like this. You can also use the luna-send command to control the GPS Auto Drive feature. This lets you use a fake GPS route out of a csv file. It&amp;#x2019;s good for simulating the full GPS experience. Even if you have a real device to test on this can be useful for unit tests of edge cases.
  19. As of 1.4.1 we added a mini webserver to the emulator. This lets you browse your apps from another webbrowser over an SSH tunnel. This is great for debugging. Just create a tunnel and then open our desktop browser to this page. Does not work will all applications.
  20. As of 1.4.1 we added a mini webserver to the emulator. This lets you browse your apps from another webbrowser over an SSH tunnel. This is great for debugging. Just create a tunnel and then open our desktop browser to this page. Does not work will all applications.
  21. Ares is our new visual IDE and gui builder. It lets you build webOS apps with a drag and drop gui builder. It&amp;#x2019;s entirely webbased but uses the real emulator locally on your computer. It can even deploy straight to your USB connected phone. It really makes coding webOS apps easier and faster.
  22. There are a few differences between Ares and regular Mojo apps. Ares wraps the mojo widgets in lightweight containers and handles a lot of the boilerplate code for you. You can drop down to regular Mojo APIs if you want to, which sometimes you have to do for the widgets that Ares hasn&amp;#x2019;t wrapped yet.
  23. Now let&amp;#x2019;s look at an example of Ares open ares, create a simple one stage application with a header and the same &amp;#x2018;activate&amp;#x2019; and &amp;#x2018;destroy&amp;#x2019; buttons. make the destroy button have the negative class. change orientation to show how stuff resizes automatically run the app in the preview show property sheet, add event handler to the button which prints to the log. show the logging, undo/redo, jslint. run the app in the emulator use the &amp;#x2018;email&amp;#x2019; non visual component to create a new message when the activate button is pressed
  24. app catalog rules and structure submission process
  25. extras: sources of graphics and icons tools to use: cssedit, jedit, netbeans &amp; eclipse