• No results found

Conclusion

In document Cross Platform Mobile Development (Page 82-98)

Do products exist that support cross platform development?

Yes, we can’t argue with that. This research has found a long list of products that can be used for cross platform mobile development (table A-2). Depending on the application requirements each of the products may be a viable choice for the

development of the application to be. You will have to match the requirements to the development approach. There are several approaches and many options for each. As a developer (company) you would want to define a strategy for mobile app

development that takes different levels of complexity into consideration, and defines some guidelines for each of the approaches: Native, Hybrid, and Webapp

development. These guidelines could suggest the currently best product option. It is not a simple task, and it is guidelines that you should develop over time. There are many factors to consider, e.g. the competencies of the developer team. Having this strategy will not only help new projects get started, but can also guide the selection of new employees. The strategy can bring structure to the development.

As this research shows, the market is loaded with many options for mobile

development. Probably too many, and it can be overwhelming to choose or find the right one. Furthermore it seems, it is a hard game to sell tools and frameworks for mobile development. The players on market are shifting fast. I find that several have been on and now off the market e.g. CouchOne, WidgetPad, JQTouch, and Bedrock to name a few. Another concern is that many of the frameworks are still quite new, and presents a risk of vendor lock-in, a risk that have a huge effect, if the chosen product for mobile development (or the company behind) has to shut down.

Are developers using cross platform options, or are the same apps with same functionality programmed several times in different languages? Are apps developed specifically for each platform?

During this research, it has become clear that the answer is yes, yes, and yes. Mobile development is getting more mature, although immature still, and developers are starting to pursue ways of better development e.g. development with code reuse on several platforms. Native mobile development hasn’t had the right tools to make cross platform development feasible, but that is starting to change. Microsoft has lately seen the need for better tooling when it comes to cross platform development, and want to support the development for Android, iOS, and Windows Phone from one IDE, namely Visual Studio 2015 with C++ as the common denominator. A company such as Dropbox has also seen the advantages of having a single codebase for their apps, and have rewritten some of their apps for Android and iOS, and this using C++. Along the way, Dropbox haven’t had the necessary tools to handle the integration between C++ and Java and Objective-C respectively, and have therefore built tools, such as Djinni [Djinni] which is now open sourced, to ease the

development. But cross platform development does not seem to be on the

developers mind. At least not yet, and the common approach is to build the same app several times, if the app is supposed to target several platforms.

It is seen that the mobile developer community is starting to move against a more cross platform approach, e.g. by the initiative by one of the Dropbox developers, Steven Kabbes, who has started a project, mx3 [mx3], with the goal to showcase and collect cross platform mobile techniques. If we turn to Google, we see that Google Inbox [GoogleInbox] shares 70 % of the codebase between Android, iOS, and the Web. With Google Inbox, Java is the language, which for iOS is transpiled to

Objective-C using J2ObjC [J2ObjC], and for the Web Java-to-JavaScript is handled by the Google Web Toolkit SDK [GWT]. There are still a lot room for improvements when it comes to mobile development.

Conclusion on the Hypotheses

The hypotheses presented in chapter 2 are all evaluated to be valid.

Fig. 7-1 Conclusion on the Hypotheses

The options for cross platform mobile development are many, most likely to many.

The mobile development market is running fast, and products enter and exit the market. It is difficult, and not without risks, to choose a product for app development, and that is probably also why many developers tend to go with native development options provided by the mobile OS vendors, because that approach doesn’t have the risks of selecting a third party, even though code reuse then is not an option.

The quickly changing market is also a factor in why developers know so little about the options in the market. It takes a great deal of attention and resources to follow up on the options in the market. Just getting an overview is a considerable task.

H1

• It has been possible to find several languages that with different techniques are executable on all major platforms. With Xamarin, and the Mono engine, it is possible to build apps for the major platforms with the use of just the C# language. C++ is another language that is executable on all platforms, and is used for app development with the purpose of getting closer to a single codebase across platforms.

H2

• Using C# and the Xamarin platform it is possible to build the complete codebase with the one language, and therefore also libraries and frameworks, that target all major platforms, and also having the native look and feel. C++ can be used to build libraries for the major platforms as well. These libraries can then be utilized in the development of native apps. As C++ is only used to build libraries, it has no effect on the look and feel.

H3

• According to the studies concerning this paper the general developer do not know of the options for having a single app codebase when it comes to the native approach. Many are aware of the possibilities that the hybrid and webapp approach presents. When we ask the mobile developers, they know of some options for cross platform native development, but it is not recognized as viable yet, although many benefits are seen.

It is almost a part of the mobile developer’s culture to develop specifically for each platform, and it typically takes strong arguments to change such a culture. The developers already have a major task in keeping up with the often changes to Android, iOS and Windows Phone, and may not have the capacity to look beyond for options that can improve the overall development process.

One of the most popular and known options for cross platform mobile development, the Xamarin platform, was evaluated to be a good option for cross development showing some of the qualities wanted e.g. code reusability. Comparing Xamarin with native Android and iOS development showed that Xamarin is competitive, and is able to provide results equal to and in some cases better than the OS vendors provided tools.

The evaluation of Visual C++ resulted in a failure. Only a few of the stories were a success. The knowledge needed to build C++ applications for different platforms and CPU architectures was underestimated.

If we compare the approaches of Xamarin and Visual C++, then Xamarin has an advantage using the virtual machine approach compared to the cross-compilation approach of Visual C++. When it comes to Xamarin, it handles the target platform differences in the virtual machine, whereas with C++ you as a developer need to handle the platform specific building including the architectures to target.

The evaluation shows that it is not just a simple task to pursue a goal of a single codebase for all the platforms you target, and that you need to match the skills and resources with the options available.

This research is only evaluating a few of the products available for cross platform development, but it presents a framework for evaluation that can be built upon and used to evaluate the products that you consider as possible options for your

development.

New platforms are entering the device market, such as the Apple iWatch, Google Glass, Smart TVs and so on, the whole IoT. The ability to share a codebase, between all the platforms that you want to target, will have a huge effect on your work, because you can focus on developing the code right, once and for all.

References

(Ordered alphabetically)

[Android Studio] http://developer.android.com/tools/studio/index.html [AndroidSQLite1]

http://www.techotopia.com/index.php/An_Android_Studio_SQLite_Database_Tutorial [AndroidSQLite2] http://www.vogella.com/tutorials/AndroidSQLite/article.html [AndroidTwitter] https://dev.twitter.com/twitter-kit/android

[ApacheHttpClient] https://hc.apache.org/httpcomponents-client-ga/index.html

[Appcelerator2014Q3] http://www.appcelerator.com/resource-center/research/appcelerator-2014-q3-mobile-report/

[AppceleratorGartner2014] http://www.appcelerator.com/resource-center/research/gartner-mq-2014/

[Appcelerator-IDC2014] http://www.appcelerator.com/enterprise/resource-center/research/appcelerator-2014-q3-mobile-report/

[Asthana2014] http://blogs.msdn.com/b/vcblog/archive/2014/11/12/cross-platform-mobile-development-with-visual-c.aspx

[C++] https://isocpp.org/std/the-standard

[C++Builder] http://www.embarcadero.com/products/cbuilder

[Crawford2013] http://sealedabstract.com/rants/why-mobile-web-apps-are-slow/

[cURL] http://curl.haxx.se/

[Deployd] http://docs.deployd.com/docs/getting-started/what-is-deployd.html

[Dignan2015] http://www.zdnet.com/article/apple-wwdc-2015-ios-android-enter-service-pack-phase/

[Djinni] https://github.com/dropbox/djinni

[Dropbox1] http://oleb.net/blog/2014/05/how-dropbox-uses-cplusplus-cross-platform-development/

[Dropbox2] http://channel9.msdn.com/Events/CPP/C-PP-Con-2014/015-A-Deep-Dive-into-2-Cross-Platform-Mobile-Apps-Written-in-CPP

[Dropbox3] http://channel9.msdn.com/Events/CPP/C-PP-Con-2014/Practical-Cross-Platform-Mobile-CPP-Development-at-Dropbox

[EmbarcaderoMacPA]

http://docwiki.embarcadero.com/RADStudio/XE6/en/Mobile_Tutorial:_Set_Up_Your_Develop ment_Environment_on_the_Mac_%28iOS%29

[EmbarcaderoWinSetupAndroid]

http://docwiki.embarcadero.com/RADStudio/XE6/en/Mobile_Tutorial:_Set_Up_Your_Develop ment_Environment_on_Windows_PC_%28Android%29

[EmbarcaderoWinSetupiOS]

http://docwiki.embarcadero.com/RADStudio/XE6/en/Mobile_Tutorial:_Set_Up_Your_Develop ment_Environment_on_Windows_PC_%28iOS%29

[EventsC++] https://msdn.microsoft.com/en-us/library/hh755799.aspx

[EventsNativeC++] https://msdn.microsoft.com/en-us/library/ee2k0a7d(v=vs.71).aspx [fabric.io] https://dev.twitter.com/fabric/ios

[Gartner2014] http://www.gartner.com/technology/reprints.do?id=1-20TPY1B&ct=140903&st=sb

[GoogleInbox] http://arstechnica.com/information-technology/2014/11/how-google-inbox-shares-70-of-its-code-across-android-ios-and-the-web/

[GoogleLocationServices] https://developer.android.com/training/location/receive-location-updates.html

[GWT] http://www.gwtproject.org/

[Hartman2011] Gustavo Hartmann, Geoff Stead, Asi DeGani. Cross-platform mobile development. Tribal, 2011

[HTML5] http://www.w3.org/TR/html5/

[IDC] http://www.idc.com/prodserv/smartphone-os-market-share.jsp [InfoQ2013] http://www.infoq.com/news/2013/07/state-mobile-2013

[iOS build issue] https://connect.microsoft.com/VisualStudio/feedback/details/1370422/cant-build-c-on-ios

[iOSGCD] http://www.raywenderlich.com/4295/multithreading-and-grand-central-dispatch-on-ios-for-beginners-tutorial

[iOSSQLite] http://www.appcoda.com/sqlite-database-ios-app-tutorial/

[J2ObjC] http://j2objc.org/

[JavaThreading] http://docs.oracle.com/javase/tutorial/essential/concurrency/runthread.html [JNI] http://docs.oracle.com/javase/8/docs/technotes/guides/jni/

[Kantar] http://www.kantarworldpanel.com/global/smartphone-os-market-share/

[Magenic1] http://magenic.com/Blog/Post/4/Mobile-Development-Platform-Performance [Magenic2] http://magenic.com/Blog/Post/59/Mobile-Development-Platform-Performance-Part-2-Native-Cordova-Classic-Xamarin-Xamarin-Forms

[MSOffice1] https://isocpp.org/blog/2014/10/office-cross-platform

[MSOffice2] http://channel9.msdn.com/Events/CPP/C-PP-Con-2014/024-Microsoft-w-C-to-Deliver-Office-Across-Different-Platforms-Part-I

[MSOffice3] http://channel9.msdn.com/Events/CPP/C-PP-Con-2014/030-Microsoft-w-C-to-Deliver-Office-Across-Different-Platforms-Part-II

[mx3] https://github.com/libmx3/mx3

[NewtonSoft] http://www.newtonsoft.com/json

[Otto] http://www.vogella.com/tutorials/JavaLibrary-EventBusOtto/article.html

[Plaisted2013] David A. Plaisted, "Source-to-Source Translation and Software Engineering,"

Journal of Software Engineering and Applications, Vol. 6 No. 4A, 2013, pp. 30-40. doi:

10.4236/jsea.2013.64A005.

[QT] http://doc.qt.io/qt-5/qtlocation-index.html

[RexStJohn2015] http://rexstjohn.com/is-react-native-cross-platform-snake-oil/

[Titanium1] http://en.wikipedia.org/wiki/Appcelerator#Titanium [Twitcurl] https://github.com/swatkat/twitcurl

[VC++ iOS] https://msdn.microsoft.com/en-us/library/dn707598(v=vs.140).aspx

[VisionMobile2014Q3] http://www.visionmobile.com/product/developer-economics-q3-2014/

[VisionMobile2015Q1] http://www.visionmobile.com/product/developer-economics-q1-2015-state-developer-nation/

[VS2015] http://channel9.msdn.com/Events/Visual-Studio/Connect-event-2014/311 [Wikipedia-1]

http://en.wikipedia.org/wiki/Multiple_phone_web-based_application_framework

[Wikipedia-VM] http://en.wikipedia.org/wiki/Virtual_machine [Xam.Plugin.Geolocator]

https://github.com/jamesmontemagno/Xamarin.Plugins/tree/master/Geolocator [XamariniOSBuild]

https://developer.xamarin.com/guides/ios/getting_started/installation/windows/offline.pdf [Xcode] https://developer.apple.com/xcode/

Appendix A – A research in technologies, products and vendors

Researched vendors

This is the complete lists of researched vendors in the mobile app development market.

*included #HelloWorld $Prototype

2VizCon Too sparse information and documentation to motivate further research

Adobe Air *

Alpha Software *

AML Only Android

Andanza Technologies Only Spanish information

AnyPresence *

Apigee Only API platform, not app

Appcelerator *

Appery.io *

AppFurnace *

AppGyver *

Apple $ Only iOS

Application Craft *

appMobi Too sparse information and documentation to motivate further research

Apportable Too sparse information and documentation to motivate further research, Only iOS and Android

appsFreedom *

Appspresso Not maintained and website gone

Appticles *

Backbase *

Bedrock Out of business

Bizmatica Too sparse information and documentation to motivate further research

bMobilized *

Bootstrap *

Canappi Too sparse information and documentation to motivate further research

Capriza Too sparse information and documentation to motivate further research

Catavolt Only for data analysis in the manufacturing industry

ClickSoftware *

Codename One *

Convertigo *

Cordova *

Corona *

CouchOne Out of business

Dojo *

DSI *

DudaMobile *

Embarcadero *#

Enyo *

Facebook (React Native) *

FeedHenry *

FieldSync Standard solution adaptable for your business data. Not for general development

freedomone mobile Apparently out of business

GameSalad *

Globo *

goMobi *

Good Technology Standard solution adaptable for your business data. Not for general development

Google $ Only Android

Grapple Only media house open for consulting

Gumby *

Helium Too sparse information and documentation to motivate further research

Hipcricket Targeted advertising and marketing with no information about general development

HP *

i-exceed *

IBM *

Icinetic *

Infor No information about general development

iPFaces Website gone

iUI Apparently not maintained

Jembe Too sparse information and documentation to motivate further research

JMango360 Apparently limited to commerce

Jo *

jQuery *

JQTouch Out of Business

July Systems *

Kinvey *

Kivy *

Kony *

Mad Mobile Apparently limited to commerce

Magic Software *

Marmelade *

Mendix *

Microsoft *#$

MicroStrategy *

Midnight Coders Apparently limited to handle the connection (integration) between e.g. mobile applications and different backends

Mobify Apparently limited to commerce

MobileIron Standard solutions adaptable for your business data. Not for general development

Mobl *

Modo Labs Apparently limited to server-side middleware Modomodo Apparently limited to marketing

MoFuse *

MooFwd *

Moovweb Apparently just for transforming desktop sites into mobile experiences

MoSync *

MotherApp Only implementor, open for consulting

Movilizer *

Neosperience Apparently limited to commerce

Netbiscuits Apparently limited to mobile analytics and detection

Next *

Nomalys Apparently limited to front Salesforce, SugarCRM and Microsoft Dynamics on mobile devices

NSBasic *

Openstream Too sparse information and documentation to motivate further research

Oracle *

Paradise Apps *

Pegasystems *

PhoneGap *

Photon Too sparse information and documentation to motivate further research

Phunware (former Digby) Targeted marketing with no information about general development

Pro Gamma *

Progress Software *

QT *

QuickConnectFamily Apparently not maintained for three years Retriever Communications *

Resco Apparently toolkit is limited to charting

RhoMobile *

RoboVM *

Rocket Software *

RubyMotion *

RunRev *

salesforce.com High coupling with salesforce.com (backend)

SAP *

Sencha *

ShieldUI Only a components toolkit for web based development

Sita Apparently not for general development

Skeleton *

Spring Mobile Solutions Standard solutions adaptable for your business data. Not for general development

StackMob Acquired by PayPal and closed

Tabris *

Telerik *

Tibco Software Apparently limited to server-side middleware Tigerspike Apparently only consulting and development with no

products for mobile development

Unity *

Usablenet Apparently a company that implements mobile sites that have an in-house platform, which has very limited

availability externally.

Velti Apparently limited to advertising and marketing

Verivo Software *

Volantis Acquired by Antenna Software, which was later acquired by Pegasystems

Webalo Standard solutions adaptable for your business data. Not for general development

WebApp.net *

WidgetPad Out of business

Winksite Apparently just a mobile website builder including hosting

Xamarin *#$

Xui *

Zebra Technologies (former Motorola Solutions)

Too sparse information and documentation to motivate further research

Zurb *

Table A-1 Vendors researched

Cross Platform Development Options

This is the list of cross platform mobile development options for that is found to be currently on the market.

Language Product URL Type Approach License

JS Adobe Air http://www.adobe.com/dk/

products/air.html

Framework VM Proprietary

HTML5, CSS3,

Framework Hybrid Commercial

HTML5, JS,

Platform Native, hybrid, webapps

Platform VM [Titanium1] Open source HTML5, JS,

Native languages

appery.io https://appery.io/ Platform Hybrid, webapps Commercial

HTML5, CSS3, JS

AppFurnace http://appfurnace.com/ Platform Hybrid Commercial HTML5, CSS3,

Framework Hybrid Proprietary HTML5, CSS3,

Platform Webapps Commercial

Code-free AppsFreedo m

http://www.appsfreedom.co m/

Platform Webapps Commercial

HTML5 Appticles http://www.appticles.com Platform Hybrid, webapps Commercial HTML5, CSS3,

JS

Backbase http://www.backbase.com/ Platform Hybrid, webapps Commercial HTML5, CSS3,

JS

bMobilized https://bmobilized.com/ Framework Webapps Commercial HTML5, CSS3,

JS

Bootstrap http://getbootstrap.com/ Framework Webapps Open source C++ C++ Builder http://www.embarcadero.co Platform Native Commercial

XE7 m/products/cbuilder

C++ Clang http://clang.llvm.org/ Compiler Cross-compilation Open sources

Platform Hybrid Commercial

Java Codename

One

http://www.codenameone.c om/

Platform VM Commercial

HTML5, CSS3, JS

Convertigo http://www.convertigo.com /

Platform Hybrid Open source

GPL License or Enterprise License HTML5, JS Cordova http://cordova.apache.org/ Framework Hybrid Open source Lua Corona http://coronalabs.com/ Scripting

language

Platform Commercial HTML5, CSS3,

JS

Dojo http://dojotoolkit.org/ Framework Webapps Open source Code-free DSI Mobile

Platform

http://www.dsiglobal.com/p roducts/mobile-platform/

Platform Hybrid, webapps Commercial HTML5, CSS3,

JS

dudaMobile https://www.dudamobile.co m/

Platform Webapps Commercial

C++, Object

Platform Native Commercial

HTML5, CSS3, JS

Enyo JS http://enyojs.com/ Framework Webapps Open source HTML5, JS,

Native languages

FeedHenry http://www.feedhenry.com/ Platform, Framework

Native, hybrid, webapps

Commercial

Code-free Gamesalad http://gamesalad.com/ Platform Cross-compilation Proprietary HTML5, CSS3,

JS

Globo http://www.globoplc.com/ Platform Hybrid Commercial HTML5, CSS3,

JS

goMobi http://gomobi.info/ Platform Webapps Commercial HTML5, CSS3,

Framework Webapps Open source HTML5, CSS3,

Platform Webapps Commercial

HTML5, JS,

Platform Native using VM, hybrid, webapps

http://appzillon.com/en/ Platform Hybrid, webapps Commercial Java j2objc http://j2objc.org/ Translator Source translation Open source

HTML5, JS Jo http://joapp.com/ Framework Webapps Open source

HTML5, JS JQuery Mobile

http://jquerymobile.com/ Framework Webapps Open source

Code-free July Systems http://julysystems.com/mob

ile-development-products/july-mx/

Platform Native using VM, hybrid, webapps

Commercial

Java JUniversal http://juniversal.org/ Translator Source translation Open source HTML5, JS,

Native languages

Kinvey http://www.kinvey.com/ Platform Native, hybrid, webapps

Commercial

Python Kivy http://kivy.org/ Framework Cross-compilation Open source HTML5, JS,

Native languages

Kony http://www.kony.com/ Platform Native, hybrid, webapps

Platform Native using VM, webapps

Commercial

C++ Marmalade https://www.madewithmar malade.com/

Framework Cross-compilation Commercial Code-free Mendix https://www.mendix.com/ Platform Webapps Commercial Code-free MicroStrate

gy Mobile Apps

https://www.microstrategy.

com/us/mobile

Platform Hybrid Commercial

Mobl Mobl http://www.mobl-lang.org/ Platform Webapps Open source

Mobl Mobl http://www.mobl-lang.org/ Platform Webapps Open source

In document Cross Platform Mobile Development (Page 82-98)

Related documents