Download final paper

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Cross-platform application development
E. Kerkkonen*
*
Oulu University of Applied Sciences, School of Engineering, Oulu, Finland
[email protected]
Abstract
Purpose of this paper is survey different software
development methods suitable for cross-platform
applications. On the market today there are lots of
different mobile devices with different software and
hardware specifications and developing an application
for each of them can be a lot of work. Using a
cross-platform solution can have a lot of appeal, since
writing application once and deploying it everywhere
could significantly reduce its time to market. However
common solutions tend to have their advantages and
disadvantages, which are discussed here.
Keywords: software development, cross-platform
software
1
Introduction
Today different software platforms are more versatile
than ever, each with different programming guidelines.
In software development same software features are
often developed for more than one hardware or software
platform and developers are looking for easiest solutions
for accomplish that. Although cross-platform solutions
have never been really successful on desktop side, with
few notable exceptions, developer targeting mobile
platforms has many interesting options to choose from
[2][10]. Cross-platform support can be considered as
part of application architecture and development
requirements and there are several established
development practices that aim to reduce development
time to market in cross-platform applications.
2
Mobile platforms
Platform fragmentation is serious problem for software
developers. Mobile devices today have very different
characteristics of hardware. Most have multi-touch input,
keyboard or both. Manufactures also have different user
interface conventions that developer has to adapt.
Typical mobile device hardware spec on the market
today can include: [3] [4]










Bluetooth
High resolution display
W-Fi
GPS
Touchscreen
Keyboard
Cellular
Camera
Several different sensors
Near Field Communication
Ideal cross-platform solution would provide support
for all available technologies without need of custom
implementations.
However
platform
native
development is rarely consistent with other platforms.
Listed below is popular mobile platforms and some
available implementation languages for application
development [5] [6] [7] [8].





iPhone
o
Objective-C/C/HTML5
Android
o
Java/C/C++/HTML5
Symbian
o
C/C++/Java//HTML5
Tizen
o
HTML5
Windows Phone
o C#/C++/Silverlight/HTML5
For programmers targeting multiple platforms this
means learning new languages, frameworks and
developer tools for each platform. Also user
expectations for application behavior are different.
Views and controls behave differently on Window
Phone compared to iPhone user experience. Problem is
that developer can be very familiar with one platform,
but has limited knowledge about other platforms.
Cross-platform toolkits can to provide solution for this.
3
Cross-platform software
Application can be considered cross-platform if it can
be run in multiple platforms without any changes [1].
Difference from rewriting application for each platform
is that no new implementation is made. Usually
rewriting program for each platform is the easiest
solution, however it is probably also the most time
consuming. Another option is to write part of application
in language that can be compiled or interpreted in
intended targeted platforms. On some cases hybrid
solution can also be used.
Software design often is about compromises and
priorities. Rewriting application can be the most time
consuming task, but ultimately provides good user
experience and performance. If development time and
portability are higher priority, cross-platform toolkits are
option worth considering. Common solutions are
application frameworks, virtual machines, scripting
languages and/or web solution.
3.1
Application frameworks
Native application framework is a reusable set of
libraries. Cross-platform framework allows reuse of
single code base by separating platform dependent code
form platform common code. Qt is a good example of
this.
Qt is a cross-platform application and UI framework.
Using Qt, you can write web-enabled applications once
and deploy them across desktop, mobile and embedded
operating systems without rewriting the source code [9].
With Qt native application can developed using C and
C++.
Advantages:
 Good performance and portability
 Support for native user interfaces
 Ready wrappers to network management,
databases and graphics etc.
 Ability to implement custom solutions if
existing ones don’t work well enough
Disadvantages:


Additional configuration management
Chosen framework may not be available for
all targeted devices
Because good performance of native software it’s
common way to build low level components that other
applications connect to.
3.2
Virtual machines
Virtual machine is special purpose program that
interprets low-level byte code presentation [11] of the
program into native executable code each time the
application is run.
Java Platform, Micro Edition (Java ME) provides a
robust, flexible environment for applications running on
mobile and other embedded devices: mobile phones,
personal digital assistants (PDAs), TV set-top boxes,
and printers. Java ME includes flexible user interfaces,
robust security, built-in network protocols, and support
for networked and offline applications that can be
downloaded dynamically. Applications based on Java
ME are portable across many devices, yet leverage each
device's native capabilities [12].
Advantages:
 Application be run on any platform virtual
machine is ported
 Often supports garbage collection and other
memory management techniques
Disadvantages:
 Higher memory usage
 Slower performance even with advanced
compiler techniques
 Hard to emulate native graphical user
interfaces
3.3
Web applications
Today many popular programs are web based and
used in both desktop and mobile platforms. Web
applications run in a web browser where they are
interpreted by different scripting engines. Web
applications are usable everywhere compliant browser is
installed. Architecture of typical web application is
client/server based including database storage. Html5,
including CSS and JavaScript, is the most promising
web platform for desktop and mobile environment.
Advantages:
 Accessible everywhere
 Provides similar experience across platforms
 Bypasses approval process many application
ecosystems have
Disadvantages:
 Hard to emulate native graphical user
interfaces
 Completely dependent on suitable browser.
 Potential differences between browsers
 Data is retrieved from network which can be
slow
 Offline use

3
Results and Discussion
It is no technical challenge to develop cross-platform
applications. Problem is that user expectations are
different and it’s a difficult problem to meet them.
Application has to be consistent with platform standards;
use systems provided controls and reliably implement
device specific features.
One option is to use cross-platform solution for each
application, but develop user interface separately. That
way some part of code base could be reused. If that is
not enough, web based solutions are available for
virtually every modern mobile platform.
4
Conclusions
Developing, maintaining, publishing and marketing
separate native apps can be a big task to take.
Advantages of cross-platform development are often
clear, but disadvantages have to be weighted and
determined what amount cross-platform components
is required or is complete rewrite a right choice.
5
Acknowledgments
This paper has been written for course “Seminar of
Wireless Future” held at Oulu University of Applied
Sciences in May 201
References
[1]
http://www.webopedia.com/TERM/C/cross_platform.ht
ml
[2]
http://www.java.com/en/download/faq/whatis_java.xml
[3]
http://www.nokia.com/gb-en/products/phone/700/
[4]
http://www.apple.com/iphone/specs.html
[5]
http://developer.apple.com/
[6]
http://developer.android.com/index.html
[7]
http://qt-project.org/wiki/Support_for_Symbian
[8]
http://www.tizen.org/
[9]
http://qt.nokia.com/
[10]
http://standards.ieee.org/develop/wg/POSIX.html
[11]
www.ibm.com/developerworks/ibm/library/it-haggar_b
ytecode/
[12]
http://www.oracle.com/technetwork/java/javame/index.
html
[13]