qnx, c/c++, qt, cascades, html5… so what’s now blackberry 10 application development? by kamel...
DESCRIPTION
This session is intended to introduce you to the different BlackBerry 10 SDKs showing different ways of developing a mobile app. For example through a pure C/C++ approach very convenient for Games and Libs developers. Or through a more comfortable way using a high level application development Framework supporting Qt and the Blackberry own Cascades UI framework. We will also show you how powerful the BlackBerry 10 mobile web development platform is.TRANSCRIPT
Re-designed. Re-engineered. Re-invented.
Integrated Social Beautiful
BlackBerry 10 SDKs
C++/Qt
Cascades ActionScript
Adobe® AIR® HTML5 BlackBerry®
WebWorks™
C/C++
Native SDK
Java
Android™
Runtime
BlackBerry 10 SDK Platform Support
THE QNX
NEUTRINO RTOS
Questionable reliability
Traditional monolithic architecture
• Model for most OSes available today
– Windows, Linux, Android
• OS contains tremendous amount of
functionality with unrestricted CPU privileges
• A fault in one OS component can damage any
other, leading to system-wide corruption
– System reliability is as good as your worst
driver developer
– Reboot is only recovery possible
App App
App App
File system
Driver Network stack
Monolithic OS
App App
Multimedia stack
Mission-critical reliability
QNX microkernel architecture
• Microkernel minimizes execution with
unrestricted “kernel” CPU privileges
• All processes run in isolated process space
– Includes drivers, file systems, stacks
– All QNX processes are “applications”
• Faults are contained so that they only affect the
faulty component
– Failed components can be dynamically
recovered while the system continues to
operate
App App
App App
File system
Driver Network stack
Micro- kernel
App App
Multimedia stack
Mission-critical reliability
Nuclear Reactors
Warehouse Control
Mining Control Canadarm Vision
Walmart HVAC
Windmills Motor Control PLC’s Process Control Cancer Therapy
Laser Eye Surgery Precision Milling
Integrated Social Beautiful
Apps can use the Invocation Framework to improve user’s flow
• Launching Core and 3rd party Apps
• Registering URIs and MIME types
• Cards and content viewers
13
Application Guidelines Invocation Framework
Invocation Framework Cards
Embeds a Screen from Target
Instead of launching the full app
No Active Frame presence
Supports peeking
A leap ahead of the competition
BlackBerry 10 Flow at its best!
A Card maintains its own process and security context
14
Invocation Framework Card Styles
Three styles
Picker
Composer
Previewer
Determines
Peek behavior
Transition style
15
Integrated Social Beautiful
Share Framework
17
BlackBerry 10 Foundations Architecture
Native & HTML5 Apps
HTML/CSS
JavaScript
WebKit JavaScript
C++
Cascades
QML
QNX Kernel
Platform APIs
Android Apps Adobe AIR Apps
Java
Android Runtime
.apk
Action Script
AIR Runtime
.swf
Network Storage
Qt (C++) BPS (C)
Audio/Video Graphics Push i18n …
Open GL
Open AL
C/C++
THE NATIVE SDK
Native SDK OSS & Developer Experience
Native SDK High Performance Gaming
Native SDK Open Industry Standards
Native SDK Open Source Support
THE CASCADES SDK
Integrated Social Beautiful
Native SDK OSS & Developer Experience
Mature C++ application framework
Good APIs (memory mgmt, Garded Pointers, Localization)
Signals and Slots
Many help classes
QML
QtGui Cascades
60 FPS!
App logic
Photos by rumpleteaser and whologwy Flickr
Cascades
UI in separate thread 28°
Scene Graph
Root
Container
Text: “Hello World”
Container
Hello World
RotationZ
Scale
Opacity
Events
Qt uses signals & slots paradigm
Cascades events are mapped to Qt signals
You can choose!
No difference between UI created in QML or C++
They can be combined Typically, UI in QML and business logic in C++
QML supports JavaScript for signal handling
C++ QML
import bb.cascades 1.0
Page {
content: Label {
text: "Hello World"
}
}
Cascades SDK Hello World
Page* root = new Page;
Label* label = Label::create()
.text("Hello World");
root->setContent(label);
Application::instance()->setScene(root);
Cascades SDK Hello World
Animations
Any Cascades UI element can be animated
Animations are “running” on the engine thread
Remember the client server setup?
Explicit & Implicit animations:
translation, rotation, scale, opacity, …
Data Binding
SQL
XML
JSON
Anything
• Tabs when content of relatively equal
importance.
Application Structure
• Drill-Down with back and peak to
structure content in a hierarchy.
• List: Easy sort
and filter
Screen views
• Grid: Quick
display
• Free-Form:
Canvas • Content: Focus
on single items
• Action Bar
Screen Structure
• Title Bar • Segmented
controls
• Action Menu • Context Menu • Application Menu
Application Menus
THE WEBWORKS SDK
The Promise of Web Tech
44
HTML5Test.com
45
http://html5test.com/compare/browser/bb07/rimtabletos20/bb10.html
Test your own smart phone at: http://html5test.com
ringmark
46
The first vendor mobile
browser to pass ringmark
ring 1!
A web-based test suite for
capabilities that modern
mobile web apps require.
Test your own smart
phone at: http://rng.io
Ring 1 e.g. : Capabilities of building
2D games, music and video apps,
camera apps, etc…
How did we do it?
47
• JavaScript/HTML/CSS Browser Application
• Framework for running Web code Web Platform
• Web rendering Engine, C++ WebKit
• QNX, system services BlackBerry 10 OS
How to get there?
Web Assets WebWorks Tools BlackBerry Applications
Remote Web Inspector
Best in class debugging solution.
Debug WebWorks applications on a simulator or device.
Optimize web applications.
49
Ripple Mobile Emulator
Tool for mobile web testing Chrome extension Emulate BlackBerry device capabilities Package and Sign Supported Platform APIs:
WebWorks for BlackBerry 10 Apache Cordova / PhoneGap WebWorks WebWorks for Tablet OS
50
51
Sencha Touch
BB10 Platform Partners
Thank you
52
KÁMEL LAJILI
Sr. Application Development Consultant
@KLAJILI