Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
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]