I'm looking for a list of cross platform framework which have support for building native libraries in C++. Most of my legacy code base is written in C++, and I'd like to deploy my applications with the native code on the phone instead of using a client/server model. Wrapping it with networking will introduce latency, reduce performance, and degrade the user experience.
I've looked at some of the basic ones like PhoneGap and Titanium, but I can't from their websites if they support native, or how well they support it. I've looked at JUCE which is a C++ framaework, but it's not clear how mature it is.
what i've found so far
Juce: open source, small
Moai: buggy documentation
Marmalade: stable, mature
wxWidgets: beta only
update
A couple of years later, and it looks like Qt has gotten to the point where it may be the top contender. Other platforms which have matured in that time include Unity, and Embarcadero.
Check MoSync, you can build mobile applications with C, C++, HTML5, JavaScript. Check their website to find bunch of technical information.
Related
I'm maintaining a plethora of apps for one of my clients all of which have native projects for each of the three main platforms. The apps are relatively simple in functionality. My client wants to always take advantage of the latest features in each platform for marketing opportunities. They also want to appear to be a native app (responsive, not laggy). I haven't followed cross-platform development very much lately, so that's why I'm reaching out to SO.
My initial idea is to write a C++ library that has all the functionality shared by the three platforms. Then, for each platform, I'll write some network, file access, and UI-code that connects the abstract library code to the concrete platform.
Of course, this is exactly what cross-platform systems aim to do. Would it be a waste of my time to write the above myself when this has already been done by platforms like PhoneGap? My concern is that I would be dependent on a third-party. If I write the code myself, I have full control, and I will always have access to the latest features.
Hope to get some pro's and con's.
Thanks!
Yet a third option (after Facebook's React Native and Microsoft's Xamarin) is Google's new Flutter and as the other answers suggests "then writing the Windows app purely natively". BTW, React Native does have Windows support the lack of which in Flutter could be a plus or a minus depending on how you look at it.
Have you considered using React Native for iOS and Android, then writing the Windows app purely natively?
There are tons of articles out there about pros and cons for React Native.
PhoneGap is just a web, written in HTML, CSS and JavaScript. React Native actually renders native components for iOS/Android.
There is also Xamarin. It supports multiple platforms and uses c#. The new features from the native languages all work great.
Is it Reccommended to use JNI and C++ Code to make a shared library code between IOS and Android ?
I'am asking this because i think it not just saves us plenty of wasted time for implementing same logic in both platforms but also we will have the speed of a C++ core Backing the logic-process of our modules.
Update :
I ask my question in another way :
is it recommended to share a C++ Library for core functions of Android And IOS versions of a similar app ? or it would be better to completely migrate the codes to a multiplatform language ?
Since I remember my needs back then, I know that hybrid apps were not an option, Also JNI is not used for making cross-platform apps but the best use is to drive hardware peripherals via native UNIX scripts for Android or run c++ code on Android. So if we omit PhoneGap, Appcelerator, Ionic etc we will be facing several cross-platform technologies that have attracted many developer attentions so far.
Xamarin:
The framework was founded by the same people who have created Mono, an Ecma standard-compliant, .NET Framework-compatible set of tools. Xamarin offers developers a single C# codebase that can be used to produce native apps for all major mobile operating systems.
Unlike many other frameworks, Xamarin has already been used by over 1.4 million developers from around the world. Thanks to Xamarin for Visual Studio, developers can take advantage of the power of Microsoft Visual Studio and all its advanced features, including code completion, IntelliSense, and debugging of apps on a simulator or a device. Xamarin Test Cloud makes it possible to instantly test apps on 2,000 real devices in the cloud. This is by far the best way how to deal with the heavy fragmentation of the Android ecosystem and released bug-free apps that work without any major issues.
But being honest I didn't enjoy my first time face-to-face meeting with Xamarin. There were so many bugs and also speed and performance problems were bothering.
React Native
React Native is developed by Facebook and used by Instagram, Airbnb, Walmart, Tesla, Baidu, and many other Fortune 500 companies. It is an open-source version of Facebook’s React JavaScript framework. Because React Native uses the same UI building blocks as regular iOS and Android apps, it’s impossible to distinguish a React Native app from an app built using Objective-C or Java. As soon as you update the source code, you can see the changes instantly manifest in an app preview window. Should you ever feel the urge to manually optimize certain parts of your application, React Native lets you combine native code with components written in Objective-C, Java, or Swift.
The ones I mentioned above are not the only options, but since now they are the most used frameworks between programmers. But beware that Flutter is being publicly announced by Google in Google IO and maybe it may be going to create a hit soon.
I am new to mobile development with a requirement to develop applications for Android and IOS. My programming background is in C#.
Which is the best language and framework to start developing mobile applications?
Is it better to use native development or use cross-platform frameworks?
Please suggest frameworks and languages with respect to ease of development, development support etc..
I am no expert in Cross Platform Mobile Development (in fact, I was just searching for a cross platform mobile development languages/frameworks), but you could take a look at Xamarin, especially as you have a C# Background.
You may also want to take a look at Apache Cordova (and Adobe Phonegap), they use HTML+CSS+JavaScript.
I recently found Flutter, the development language is Dart and it's an early stage OSS project (as of 2016 october) and Haxe. They both seem like active projects, so worth following the progress on GitHub.
If I had to choose and I already had skills in C#, I'd go with Xamarin.
I strongly recommend you give a try to Flutter... It just came out from Google... It's in Beta, but Google heavily used it until now in production mobile applications. It uses Dart, as a programming language and it's awesome. If you have a background in C# (or similar languages, like Java for example) you won't have any problems - it's quick to learn and there are a bunch of tutorials already.
Do a search on YouTube for Flutter, and also on medium...
Here's the website link: http://flutter.io
You can also download some sample applications with all the Android / iOs widgets you can use in a Flutter application. Here's the app for Android: https://play.google.com/store/apps/details?id=io.flutter.gallery&hl=en
The key difference between Flutter and React native for example is that there's no Javascript bridge... and it compiles to native code. You also write the code once, and it will work by default both on Android and iOs... Hack, you can even switch to iOs widgets on an Android phone.
It's AWESOME!!!
Microsoft has introduced his new Visual Studio, with compatibility to develop multi-platform applications for Android, iOS and windows.
This is a very good news, for developers, that a large and reliable company produced such a thing. It can make life easier, a lot.
But, as you know, there are always disadvantages when you get advantages. So I want to know:
1) What is the difference between developing native apps for each platform, and using this kind of tools? What is the disadvantage compared to using for example Objective-C or Java for iOS and Android separately?
2) Is there any dependencies in order to running developed apps on different OSs? Something like .NET framework?
3) Is there any performance cost? Or works just like native ones?
4) What kind of apps are supposed to be developed with such tools?
In my point of view , this not good idea to develop android or ios application in XAMARIN. First of all performance issue occurs. You can not achieve performance like native application.
There are some dependencies like Xamarin compiles C# to native code, but still relies on the Mono runtime to do a lot of its work.
Native, no cheating – this is native. But there is an overhead, it isn’t like ObjectiveC native. The apps are going to be larger – this minor stuff matters when you are trying to get the max oomph out of your very resource restrictive mobile device.
You still need a mac for ios:-)
A huge emphasis on better app patterns like MVC or MVVM, because user interface is still native. You can write about 70% reusable code using Xamarin, but the last 30% or more depending upon your app design and nature, has to be native.
Generally speaking, in my experience, I’ve had better luck finding support and code samples for native, than for Xamarin.
And like I said, you still need to know ObjectiveC and Java – even if you are using Xamarin.
And Visual Studio + Xamarin = $$$$$. Plus a Xamarin developed product, while superior than HTML5 and Packaged HTML5, is going to cost you more. You have to evaluate if your needs justify the cost.
However, in practical application, I don't think it is very useful. Consider this... If you are coding in C# then this code has to be translated into objective-C or Java, and that translation depends on the Xamarin SDK. If Apple releases 4,000 new APIs in the next release of iOS tomorrow, how long will it be before the Xamarin API allows you to call those native APIs? And multiplied by two if adding Java. If you can't wait, then you code what you can in C#, and then write native code for the rest, but now you are supporting three code bases, and the advantage of Xamarin flys out the window.
I provide some links of debate on this topic
http://willowtreeapps.com/blog/xamarin-or-native-development-tools-for-ios-android-projects/
Android Xamarin limitation
https://developer.xamarin.com/guides/android/advanced_topics/limitations/
https://www.linkedin.com/grp/post/121874-5848849341191569409
https://www.quora.com/Why-would-people-build-native-mobile-applications-for-Android-iOS-using-Java-Objective-C-when-they-could-use-Xamarin-C-for-all-platforms-if-license-cost-isnt-an-issue
Why I Don’t Recommend Xamarin for Mobile Development
I'm instructed to develop a project in such a way that it is available for iOS, Android and Blackberry OS platform all at once. A herculean task!! indeed...
I am searching for all the possible development platforms for this assignment. I came across Flex 4.5.1 and the initial thoughts are really positive. Somewhere in SO I read that flex applications suffer from code bloating problem. I dont want such solution; infact memory is an important concern for me.
I want to know which one of the following is the optimum approach:
Developing using OS specific SDK i.e. xCode for iPhone, Andriod SDK for Android.
Developing using Flex builder and ignore code bloating.
Using Flash Builder and developing application in ActionScript.
I would also love to know if there is any other platform / language / API available for me...
Thanks for your time,
Flash Player's ubiquitous delivery makes developing and packaging mobile applications easy; however, HTML5 / JavaScript platforms such as PhoneGap would also enable rapid cross platform delivery.
Flex is heavier than Pure ActionScript. Depending on what you're developing, Flash Professional or a pure ActionScript project in Flash Builder may meet needs in a very lean and performant manner.
few days back I also asked a similar question here on SO and unfortunately so far I have not got the answer I wanted. (question is still open and you can share your findings with me there..)
Regarding your questions about Flex 4.5.1, I would like to say it is very neat and nearly perfect programming platform and learning it is quite simple. The Support & training available from Adobe is just awesome. You can easily get confidence in just few weeks. See an Excellent Downloadable tutorial, I would suggest you follow it for initial weeks.
In Flex, We Program in .mxml files and ActionScripts(.as) ... *.mxml files are converted to ActionScript during compilation. To increase the efficiency you can directly program in ActionScripts once you understand how they actually work. (Which I am trying to learn now.)
I am not sure about C/ C++ but Flex definitely supports some other languages i.e. Java, PHP etc. For Java developers like me another surprisingly good thing is that Flex can be integrated with Spring also.
Share your findings about Flex..
There are a quite a few cross platform mobile development tools
phoneGap
Appcelerator
Rho mobile
Mosync
Sencha
Corona
WidgetPad
Each one has their own advantages and disadvantages. For example, the applications built using phoneGap uses a html view to show the UI while Appcelerator uses native UI components which offers better UI responsiveness. Some are free and some are not. So you need to decide on your requirements and choose a framework.
If you like HTML5/JavaScript and want to extend it with C++ then you should try MoSync, it gives you the flexibility to blend them all if you so like. You can find out more at mosync.com.