Key Trends Shaping the Future of Infrastructure.pdf
Qt everywhere
1. Qt everywhere
- visions of application development
on Nokia platforms
Pekka Kosonen
Head of Technology Development, Nokia
25.9.2009 http://overtheair.org
2. What’s on the menu today?
For appetizers - motivation
we’ve got the volumes, productity, distribution channels and
customers are just waiting to give their money to you!
Main course will be served in 10 minutes
1. Simple and powerful Cross Platform Offering with Qt
2. Add in a twist of web services with Ovi APIs
3. Do you like money? Distribute to Ovi Store
4. Pop the hood - What has Qt eaten?
For dessert
5. Swing both ways (Qt and Web)? -> Go hybrid!
Coffee and cognac later on…
3. About this presentation
This presentation is describing a new, radically
focused, holistic developer story based on actual
roadmapped developments for starting from late 2009.
It shows where Nokia is heading.
This presentation is NOT a product vision nor
promise, nor does it directly propose changes to our
products or roadmaps.
4. The importance of the
developer to Nokia
Nokia’s success with it’s
devices and services
strategy comes from
3rd party innovation!
2009 Q2
Nokia’s market share
continued to grow
from 42 to 45%!
Source: SA, Canalys, August 2009
6. What do you developers want?
Can I make money by selling my
app to many people? Is my development efficient?
If I get stuck, will someone help
Can my app have cutting edge me out?
features?
7. 2009 : The audience has spoken.
Developers around the world have spoken and the results cant be
surprising for anyone - developing for Nokia platforms sucks.
“Is the Nokia store supposed to challenge Apple?
You know what folks, you had your chances. If
you want to impress me, if you want me to start
developing for your platforms again, get your
houses in order. Once things change -
then we can talk again.”
http://venturebeat.com/2009/04/12/mobile-app-developers-fire-back-nokia-sucks/
8. 2010 : Back to the track –
The Cross Platform Promise
Increase Total Commit to
Addressable Market Open Source
Combine the Best of Lower Entry Barriers
Both Worlds for Developers
8
9. Why Qt?
What is Qt about?
• QuickTime player? Programming language? A platform? Yet another runtime?
• A new Japanese car model?
Qt is Cross-platform application framework
• Differentiated user experience across hardware platforms
• Hybrid development: convergence of web and native applications
• Cross-platform software across desktops and mobile devices. Qt supports
major desktop OSs already and will extend it’s reach to Nokia platforms.
• Qt is not a runtime – no perf issues or sandbox restrictions. You can stand out
with your native development skills to fulfill the use cases offered by Qt.
• Qt Mobility APIs will bring in the easy to use APIs for mobile use cases.
Shorter time to market
• Productive APIs and comprehensive documentation with great examples
• Delivering functionality faster and maximizing efficiency by placing focus on
innovation
• All the great tools offered free of charge - commercial services available as well
9
10. Today : Qt is used already used
everywhere!
From embedded devices By companies
to desktop applications from many industries
11. Significant development benefits with Qt
true stories behind the scenes
Development Time Savings Better Code Maintainability
• CS Virtual Reality, a leading provider of virtual reality • European Space Agency
solutions in military/defense, space imaging and • From days to hours
aerospace • ”With Qt, the process of issuing a new release has gone
• 50% time savings from taking a few days to taking a few hours”
• “We developed GUIs 1.5 times faster with Qt compared
to basic development techniques”
Faster Learning Curve
• Siemens
Project Cost Savings • Very quick technology induction
• DFS Deutsche Flugsicherung, air traffic control in • “In fact, one person who joined the team was a student
Germany with no experience at all. Within 2&1/2 months, the
• Millions of Euros saved student was implementing MFC controls as Qt widgets.“
• ”Developing the system in-house on Qt saved DFS an
estimated 1 million Euros, and as many of 104 man
months of development time ”
Reduced Personnel Requirements
• Digital Film Tools, three Emmy awards and hundreds of
feature films on its resume
Code Size Reductions • Scalability without need to hire more staff
• National Instruments • ”We are able to write a single set of source code for all
• 54% less code platforms. There’s no way we could have written native
• “When we rewrote the app using Qt, it went from code for all operating systems without hiring additional
650,000 lines of source code to fewer than 300,000 people. ”
lines, making it much easier to manage“
12. Qt: a cross-platform application and
UI development framework
http://qt.nokia.com
13. Nov 2009 : get your Qt app
running on more than
+ 130 000 000 smartphones!
- Not to mention that Qt runs on all
major desktop OSs as well
14. Appetizers are over - Motivated? Time for the main course
It’s web and Qt for Nokia
15. Nokia + Ovi Developer Story | 15
Simplified offering | Based on Qt
The future offering will be based on Qt, the development tool globally
used to build desktop apps – you may already know it.
With the simplified
toolchain you can tackle
f.ex Maemo and Symbian
based devices
16. Nokia + Ovi Developer Story | 16
Simplified | Develop on PC, Mac, Linux
The new offering is the only native mobile dev environment to work on
Mac, Windows and Linux. Develop your way.
The offering will be based
on Qt, the development
tool used to create
applications such as
Skype, Adobe Photoshop
Elements and Google
Earth.
The tools will allow
developers to use
Windows, Mac OS X and
Linux for their mobile
development work.
17. Qt Creator: Cross Platform IDE
• Lightweight cross-platform IDE for Qt
• An advanced C++ code editor
• Integrated, context sensitive help system
• Integrated visual debugger (based on gdb)
• Integrated source code management
• Project and build management tools
• Qt developer tools integrated
• Benefits
• New developers get up and running faster
• Boosts developer productivity
• Tailored to the needs of Qt developers
19. Nokia + Ovi Developer Story | 19
Ovi API | Ovi features opened
Nokia selects the best Ovi service features opened for developers – such as 3D
mapping, hybrid positioning, push information and social networking
First Ovi APIs to be opened soon
Closed beta : Ovi Maps
Put maps in your apps.
Coming : Push Information APIs
Real-time relevant context to your applications
We are constantly planning what features to open up – let us
know what inspires you.
* Branding TBD
20. Nokia + Ovi Developer Story | 20
Simplified | Device & Service API
Nokia will bring the most powerful device and Ovi service features into a
single offering, so that your apps can do more than anywhere else
21. Let us sell your app through Ovi store to
hundreds of millions of users!
22. Nokia + Ovi Developer Story | 22
One Store | Distribute to masses
Ovi Store offers unparalleled reach for distribution and sales to over 200
million Nokia device owners (end 2009) around the globe.
Global distribution to S40, S60 on
over 200 million Symbian, Maemo
handsets
70% / 30% revenue
share* Promotion of key
apps in
packaging,
Credit card and advertising and
opertator billing POS
* 70% of Gross sales, net of refunds and returns, less applicable taxes and, where applicable, fixed operator billing cost
23. Distribute your Qt application to
Ovi store
– reached through more than
100 Nokia device models
25. Qt Modules
• Qt provides native look-and-feel in all platforms
• Cross-platform Qt consists of 12 modules
• A little bit less than 700 API classes, all modules depend on QtCore
• Enables pure Qt applications, but
• Possibility to use platform APIs
• Possibility to embed native
elements, including UI widgets
• Development Tools included like Qt Creator, Qt Designer, Qt Assistant, Qt
Linguist
QtOpenGl QtSvg QtWebKit QtXmlPatterns Qt3Support
QtGui QtSql QtXml QtNetwork QtScript Phonon
QtCore
26. Qt GUI Classes
• Extends QtCore with GUI functionality QtOpenGl QtSvg QtWebKit QtXmlPatterns Qt3Support
• UI application base class
• UI components : set of widgets and dialogs
QtGui QtSql QtXml QtNetwork QtScript Phonon
• Widget layout management and classes for UI Events
• All the UI components usually needed QtCore
• Not enough?
• Customized components can be done and integrated
with Qt Creator
• Provides rich set of GUI components
and supporting functionality
• Model-View-Controller (MVC) Item views
• Styles – ensuring native or custom look
and feel on target platforms
• Font-aware layout system
• Accessibility classes
• Canvas component with Widget support
27. Qt – Modules (Network)
• Classes for writing TCP/IP clients and servers QtOpenGl QtSvg QtWebKit QtXmlPatterns Qt3Support
• Makes network programming
easier and portable QtGui QtSql QtXml QtNetwork QtScript Phonon
• Support for QtCore
• Lower level protocols (TCP and UDP)
and higher level application protocols (FTP and HTTP)
• Seamless integration with progress widgets and any IO device
• Host Name resolving services and URL parsing, SSL support and much more
QHttp http;
connect(http, SIGNAL(done(bool)), this, SLOT(done(bool)));
http->get(
“http://overtheair.org/amazingApi.jsp?action=doGreatThings”);
void MyClass::done(bool error)
{ QString data = http->readAll(); //handle data }
28. Qt – Modules (Sql)
QtOpenGl QtSvg QtWebKit QtXmlPatterns Qt3Support
• Provides database integration to Qt applications
• Divided to three layers
QtGui QtSql QtXml QtNetwork QtScript Phonon
1. UI Layer
• Provides classes to link the data from database to
data-aware widgets QtCore
• Designed to work with Qt's model/view framework
2. API layer
• Provides Qt’s abstracted database-independent SQL
API
3. Driver layer
• Provides low-level bridge between the specific
databases and the SQL API layer QSqlDatabase db =
• Uses driver plugins to communicate with the
different databases QSqlDatabase::database("sales");
• Several drivers are supplied with Qt QSqlQuery query
("SELECT Lastname,
City FROM Names", db);
29. Qt – Modules (XML)
QtOpenGl QtSvg QtWebKit QtXmlPatterns Qt3Support
• QtXml
• Provides C++ implementation of SAX and DOM
style XML parsers QtGui QtSql QtXml QtNetwork QtScript Phonon
• Provides a stream reader and writer for XML
documents QtCore
• XSLT support
• QtXmlPatterns
• XQuery support for Qt
QXmlStreamReader xml;
• Simple SQL-like query language for traversing
xml.addData( data );
XML documents
while (!xml.atEnd())
• Can select and aggregate XML elements of
interest and transform them for output as {
XML or in some other format xml.readNext(); ...
// do processing
}
30. Qt – Modules (Phonon)
QtOpenGl QtSvg QtWebKit QtXmlPatterns Qt3Support
• Multimedia framework for audio and video content
• Support playback of the most common formats
• Media can be read from files or streamed over a QtGui QtSql QtXml QtNetwork QtScript Phonon
network
• Just FW, backend provides the actual functionality
QtCore
• Windows: DirectX and DirectShow 9 or higher
• Linux: GStreamer
• Mac: QuickTime
• Based on three basic concepts
• Media objects
Phonon::VideoPlayer *player =
• Manages media sources
new Phonon::VideoPlayer(
• Media control: start, stop, pause etc
Phonon::VideoCategory,
• Sinks parentWidget);
• Outputs media (video rendering to widget, audio to player->play(url);
sound card)
• Paths
• Used to connect media objects and sinks
• Enables media graphs
31. Qt – Modules (WebKit)
QtOpenGl QtSvg QtWebKit QtXmlPatterns Qt3Support
• Classes for displaying and editing Web
content QtGui QtSql QtXml QtNetwork QtScript Phonon
• Web content can be enhanced with native
controls QtCore
• Based on open-source WebKit engine
• Ported to use Qt
• Rendering
• Text Handling
• Network Access
• Integrated part of WebKit project, uses
WebKit’s platform abstraction
• Qt Style API to engine: QWebView *view = new QWebView(parent);
view->load(QUrl("http://qt.nokia.com/"));
• QWebView, QWebPage and QWebFrame
view->show();
32. Plus Qt Mobility APIs for Mobile Development
• First release planned Q4/2009 Mobile Extensions for Qt for Symbian
• Experimental Symbian-specific APIs for
accessing Symbian platform functionality
• Planned content • Available for technology preview at
Forum Nokia to invite feedback
• Service Framework • Feedback is used to guide the new Qt
APIs for Mobile Development
• Contacts API • Support for Access point Manager,
• Location API Location, Sensor, Camera, Contacts, Media
• System Information API
• Messaging API
• Bearer Management
• Context Framework
33. Did you like the meal? Let’s have something sweet to end with...
Choose hybrid and get the best of both
worlds
34. Interact with Web Services
• QtWebKit allows
• Intuitive use of network resources
• Exposing QWidget to HTML and QObject to JavaScript
• Calling JavaScript from Qt and vice versa
JS
Qt
OS specific
APIs
• Based on the Open Source WebKit engine
35. Hybrid - combining the best of both worlds
So you can run JS and HTML inside Qt application…
WRT Widget Qt application
Webkit QWebView running webkit
Widgets HTML,
CSS, Same HTML, CSS,
JavaScript JavaScript
Platform
Services
Native APIs
Platform
Services
implementation Accessing Native APIs through JS
36. Webview Demo
• Pure JS content run on top of Webkit
• Demonstrates different applications & look and feel
• In the demo there’s BBC News, games like
Rock-Paper-Scissors, Tic-Tac-Toe, Calculator and Bubble
• Anything from web can be pulled to the hybrid container
• Statistics:
• 300 lines of Qt code
• Size of .sis file: 20 kB
• Development time: approx. 5 hours
Browser/ Standalone
Web runtime
Application *) Qt C++ Hybrid
Application
Services written in
Qt C++, Declarative HTML, CSS,
UI, Access to Qt JavaScript
Cool guys swing both ways
Go hybrid with Qt and Web!
38. Nokia + Ovi Developer Story | 38
Nokia native dev offering, redefined
1= Nokia cross-platform SDKs that you’ll love – with a
money back guarantee (as it’s free)
2= Ovi APIs. Amazing features in your apps –
take the Ovi social network to be a part of
your solution
3= Ovi Store. Sell your app to hundreds of millions
39. http://qt.nokia.com/
Thank you very ma
ny!
Questions?
pekka.kosonen@n
okia.com
39