Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 1 year ago.
Improve this question
I want to build an application for all platforms but I wonder!
What is the difference between ionic-Framework and Xamarin.Forms and,
Which is better to build an application for all platforms?
In the hands of skilled engineers, Ionic and Xamarin are both exceptional cross-platform development assets, which, compared with building native apps for two or more platforms, will save your business both time and money. Any decision about which one to use, though, should be subject to rigorous assessment of your needs, budget, and development objectives.
If app quality is a priority, you’re integrating with a lot of preexisting .NET architecture, and/or you need to build apps for a wide variety of platforms and versions, Xamarin will almost certainly be the best fit.
For smaller or less frequent projects on restricted budgets, Ionic will provide you with a fast and effective route to functional if unspectacular mobile apps for iOS and Android devices.
Depending on your resources, and whether you will develop apps in-house or with the help from external development companies, you might even wish to utilize both of these popular frameworks. Neither one is particularly costly to implement, especially since Microsoft started bundling Xamarin for free with the Visual Studio Community edition and Xamarin Studio (for Mac).
I think it mainly depends on what you want to do in your application.
If all you want to do is pushing some data and images (e.g. create a shop platform) i don't see any reason, why ionic wouldn't do the job and probably you'd see results a bit faster, as you don't need to struggle with a lot of native adaptions (such as file system access, etc...), though I don't think that choosing xamarin would set you back in terms of X months more.
However if it comes to using native features, such as camera, gps, sensors, whatever you will probably be limited to what the ionic api offers and I don't know how long the turnaround times will be until new features which may appear in the future are getting implemented into the framework.
Performancewise I am honestly sceptical if that mix of html, css and javascript/jquery will be anything comparable to what xamarin can get you to, as Xamarin actually produces an app which can compete with apps written natively.
I am not sure how deep you can get "under the hood" with ionic, though I know that with xamarin, you can actually go very deep and develop features that can use the native code of your target platform.
Actually by looking at the user base (or better to say the amount of questions here on stack overflow) one might be tempted that ionic has more questions than xamarin.forms, however that doesn't take into account that actually any question about xamarin, xamarin.forms, xamarin.android, xamarin.ios and c# might hold relevant answers and support for your upcoming problems. However to be fair, also ionic has quite an impressive amount of q&a answers posted here, so i would say that is a draw.
My conclusion would be: If you need to create a data-pushing app fast, you could use ionic, however if you need performance, native methods and want to be able to use particular native features, Xamarin would hold that door open for you.
Disclaimer: I have been developing apps with xamarin forms for about 5 years now and have never used the ionic framework at all and therefore my knowledge about ionic is limited to what I read on summaries. Probably my answer might omit particular benefits that ionic might offer and I really hope that a more experienced ionic developer might have something beneficial to add.
However, If you were asking about my personal advice, My answer would be: Use Xamarin
We had to answer this question about 18 months ago. For us the core question was if the app also needed to be deployed to a web environment. In our case we needed to support the same functionality in a native iOS/Android app, as well as a website (for the features that the web can handle). In that scenario Ionic is the clear winner.
If you don't have to worry about web, then I think Xamarin is a great option. I'd also be checking out Google's flutter too, which is a newer cross-platform option (again assuming no web needed).
Related
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 3 years ago.
Improve this question
So how is it compared to React Native or NativeScript?
I know the differences but I was looking for an answer from someone with real experience usng Flutter.
Does it worth to learn it? Why should I learn this instead of Java?
How is the learning curve?
Are there many apps using Flutter?
NativeScript is quite handy for testing generating also a QR code for different devices to test direclty. How is testing using Flutter?
I heard that update from an old version is not painful at all like it happened to me with Ionic from 1-2, 2-3 and 3-4. Is that true?
And the most important one for me:
- How often do you get stuck coding with Flutter and how difficult is to find documentation?
Definitely yes, What I say, Flutter is like yeah for the developers of Hybrid and Native app developers.
Flutter is too good for the developers of the mobile application as he/she needs to code for the app for once and he can run that code on both IOS and Android platform.
Flutter uses Dart Language, which is originally developed by Google so it’s really good for the developers to learn and understand its concepts.
There are several applications developed using Flutter (Google Ads,Alibaba...)
More : https://itsallwidgets.com/
There are some features that make Flutter a best one among other hybrid app development frameworks.
Plugins
Hot reload feature
Material design components support
Widget is everything
Themes support for IOS / Android
Reach set of libraries and so on.
There are many more features that make you love a flutter.
Here are my thoughts:
Does it worth to learn it? Why should I learn this instead of Java?
Dart (the programming language) and Flutter (the UI Framework) are targeting universal apps. Meaning your code will be compiled for both iOS and Android. You don't have to go for both platforms but you can. Java on the other hand is used for Android development only. There is no way you can deliver an iOS native App when programming Java. (At least no way that would be popular).
The best thing about Flutter I personally find is that it is the first hybrid technology that really works. Meaning the performance is stunning. The framework as such is absolutely powerful. Dart is awesome for reactive programming and all of that stuff. I am in the middle of a client project and I can say this is just a pleasure to work with Flutter.
I personally would even use Flutter when I have to target only one platform. At least for most of my projects.
How is the learning curve?
Guess this also depends on your overall programming experience and if you have already written Apps in general. I did get nice results pretty quickly since there are so many tutorials already. For example on YouTube you can find a dedicated Flutter Channel. In addition to that there are plenty of YouTubers that really explain everything in detail.
NativeScript is quite handy for testing generating also a QR code for
different devices to test direclty. How is testing using Flutter?
Well you are able to read QR codes with flutter. There is a nice Medium article about that.
I heard that update from an old version is not painful at all like it
happened to me with Ionic from 1-2, 2-3 and 3-4. Is that true?
That is pretty much a general problem when using frameworks. Even a general problem in coding as such. We're in Flutter 1.x right now. Nobody really knows what will happen with Flutter 2.0. Also in addition to that you are pretty much generating native code for iOS and Android. Which means that you might run into native issues besides the one with Flutter. I am currently struggling with Android X which is a non-Flutter related problem. You just cannot be sure how things like that will turn out in the future.
How often do you get stuck coding with Flutter and how difficult is to
find documentation?
This was also one of my questions when I started writing Flutter code. There are so many options like NativeScript and others. They often promise to be so damn easy and flexible but at the end of the day when you need that little bit more in a specialised UI you're stuck. Flutter did not let me down till today. Of course there will be moments which seem to be a dead end. But as far as I can tell the community especially here on StackOverflow knows the answer to almost everything.
Also there is a YouTuber channel called Fluttery which kinda proves that Flutter is pretty much limitless in terms of UI. It opens your eyes that many things are possible. :)
Hope that helps a bit. At the end of the day you have to decide. Not others.
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 9 years ago.
Improve this question
I am looking into the possibility of doing some mobile app development, firstly for Iphone and then later possibly for Windows phone and Android. I am familiar with .NET development and am wondering about what options to consider. I have read a little about Mono Touch and Phone Gap, what are the advantages and disadvantages of these and are there any other better options anyone could recommend? Or is it really necessary to learn Objective C for Iphone, and Silverlight for Windows phone etc?
Have a look at Appcelerator Titanium. Its a pretty decent cross platform app creator for iPhone and Android.
However, the problem is that Android and iPhone (and Windows Phone) are different platforms. For instance, iPhone has navigation controllers with title bars and Android doesn't. Thus you can put buttons in the title bar on iPhone, but not on Android. Eventually you get to the point where you're writing specific code for each platform, even though you're supposed to be writing once and deploying to many places.
Personally the overlap isn't worth the time saved. It makes the code base much more complicated and less maintainable. Plus you can't do as much with those cross platform tools as you can if you do everything natively.
Lastly, who doesn't want to learn a new skill? Why do something the easy/quick way when you could learn how to make iphone, android and windows phone apps natively, which may help you in the future with freelance work or indeed your career.
Here's a tutorial on setting up a cross-platform solution in C# and Xamarin tools. It doesn't cover ios, but it's extendable in that direction.
How to Create a Cross-Platform Solution for Android, WP8 and WinRT
Hope that helps.
PhoneGap or Titanium is good platform for fast development very simple applications. But when you need to go deeper, you will find a lot of pitfalls. And the most important that all this cross-platformed frameworks, based on JavaScript, that they are VERY SLOW!
So for my opinion, the best solution for development cross-platform application is Mono (MonoTouch and MonoDroid). With Mono, you can develop for iOS, Android and WP7. And you business and data-logic remains unchanged. UI-layer you have to write different for each platform. But I think it's even better, because each platform has its own approach. In addition, you get really fast speed with Mono, as it is translated into native code.
But it is not free.
Using a cross platform framework will make your app look non-native on every device, this can be ok if you want to brand your whole app.
This will mean you can only make a standard app and won't be able to take advantage of the nice stuff each os has to provide.
I would go for iPhone -> Android -> Web Mobile -> Windows Phone. In that order.
Porting from iphone to Android has it's caveats but is pretty straight forward as similar design patterns were used. Windows Phone is a bit more industrial in it's design and you might not be able to get your head round the differences.
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 3 years ago.
Improve this question
Currently, I plan to port a Java desktop application, to the Android platform. Besides official Android SDK, I also take a look on, as it will be a plus, if it is able to run in iphone with minimal effort.
http://www.rhomobile.com/
http://www.phonegap.com/
appcelerator.com
Those cross platform frameworks seem nice. However, I was wondering, what are the limitation on those frameworks?
Will they still have the same look and feel as native Android application? (Or a native iPhone application)
Is there any difference in the speed and responsiveness of the application?
Are they able to provide same set of GUI components as in Android SDK? (Or iphone's)
Limitation access to I/O, network resource, hardware?
Ability to use threading?
From my experience (my background being native mobile app development), we get a lot more control with native apps vs framework based apps. That advantage has greatly reduced in android and iphone platforms, however there are a few other things to condsider:
If it is a one off app then you are
better off working with the
frameworks you mentioned, they
provide all the features you asked
about and for a beginner, are a bit
faster to develop.
If you are going to do multiple apps
then it makes sense to have a custom
framework for your needs. In this
case you can reuse parts of your
Java desktop app and absorb them
into your framework. You will
probably need to create iphone and
android/java versions.
If you create your own framework,
you can also incorporate other
software development best practices
like CI more easily when compared to
off the shelf frameworks.
The UI components are different for
Android and iphone and you are
better off having them different as
they have quite different
sensibilities and interaction. So it
may not be a good idea to aim for
one to one mapping.
Speed, performance etc are not an
issue, same for threads support.
Hope these points help in your decision making process.
This post will be immensely useful for you :)
Comparison between Corona, Phonegap, Titanium
As for threading - since both PhoneGap and Titanium (I cannot speak to RhoMobile) allow you to hook into native code from JavaScript (and the reverse) I see no reason why you cannot multi-thread an application using one of these technologies.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 3 years ago.
Improve this question
[2015 update: I think it's safe to say that Flash is rapidly dying. Don't go there. Gotta say though, during its brief moment to shine, Flex was actually a really lovely datavis technique.]
I'm interested in developing for the iPad and iPhone, but I'd prefer not to learn Apple's whole development stack (and good golly, I sure don't want to go back to manual memory management). Oh, sure, I could learn it, but I don't have that level of commitment to the environment at this point. I've got professional experience with Flex already, so I'm intrigued by Adobe's move to make Flash/Flex compile to the iPhone and iPad. My question is: how promising of a development path will Adobe's Slider be? Are we likely to see Slider publicly available in a reasonable timeframe (Adobe: "An early mobile branch of the Flex framework is expected to be available in 2010")? Are we likely to see reasonable performance? Are there development hurdles that haven't become clear yet? Heck, is it all just vaporware? There's pretty limited information available so far, as far as I've seen, but I'm interested in people's predictions, even if they're speculative.
Hopefully you'll see some info on Slider soon that will give you a better sense of the timeframe. Flex 4 will be released soon and once that happens you should start to hear more concrete info about Slider.
One thing to keep in mind is that Slider will be based on the Flex 4 architecture. To give you an idea of how that performs you can check out James Ward's blog post - http://www.jamesward.com/2010/02/21/flex-performance-on-mobile-devices/ - he's got a couple of videos that show a Flex 4 list running on a Nexus One.
This isn't iPad/iPhone, and Flex is NOT something Adobe recommends for mobile, but this basic example works pretty well. And it should give you an idea of how Slider might look/behave.
=Ryan
ryan#adobe.com
Interestingly, Apple's new developer agreement calls into question whether apps built with Flash/Flex will be allowed:
3.3.1 — Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited).
Adobe's cross-compilation tech is not vaporware (for Flash, anyways-- haven't seen as much re: Flex). And they would be unlikely to invest so much in it if they thought it would get torpedoed on day one. That said, you must draw your own conclusions about your long-term reliance on it, and your interest in building on a non-native toolchain, both in terms of what you can get out of the environment, and the support channels you'll need to use (e.g. not Apple) when stuff doesn't work.
Some people seem to be successfully using Mono touch, which shares (some) similarities.
There are two issues with this:
Steve Jobs says he isn't going to support Flash on iPhone or iPad.
Adobe's next rev is going to allow you to develop in Flex and port to iPhone app format.
Do the math.
If you want to start iPhone, iPa or Mac OSX development, I'd suggest learning Objective-C. It'll probably take less time than waiting for (official) Flash support on those devices ...
Take it the other way around, would you use Objective-C to develop a Flash or a Flex app?
Flex can now compile iOS applications (and so run on the ipad and iphone)
http://gregsramblings.com/2011/06/20/finally-its-here-flex-on-ios-android-and-blackberry-playbook/
http://gregsramblings.com/2011/04/26/convincing-developers-that-adobe-flex-rocks-on-android-ios-and-playbook/
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
Given the landscape in which mobile applications exist is currently changing, i expect the "best" answer to this question to change as well, but for right now, which are the best operating systems/frameworks upon which to build mobile apps today.
I'm thinking in terms of cost, learning curve and market penetration.
Android
Cost: 0
Learning curve: More or less 0 if you know Java
Market penetration: HUGE
Android phone sales is expected to rise 900% this year, and the market isn't limited to phones. Some mini computers are going in that direction as well, choosing Android as their OS.
You need to define the end-result requirements for the application.
Part of the answer depends on what mobile hardware you will be running. And, whether or not you need to use unique abilities of your hardware (touch-screen, barcode scanner, gps, special buttons, VOIP, etc.) or if a simple input/output screen framework is sufficient.
That might drive your decision towards a local application or something more remote like a web application or terminal services. (There are, of course, local applications that use remote services also. Do you need to consider multiple front-ends?)
In addition, where are your development strengths? What are your language proficiencies? As you mentioned, mobile application development can have a steep startup curve for learning and for setting up your initial development/debugging/deployment environment. Is that worth it, or can you leverage desktop or web development experience and deploy remotely?
Once you make these decisions and determine your development environment and target, then you can take the next step to look at frameworks and methodologies specific to your needs.
This just in -
Today's Code Project Insider included this InfoWorld article -
"How to choose a mobile
development platform"
In terms of market share, at this point you won't get better visibility and hit ratio than you will get with the iPhone. There are plenty more Blackberrys than iPhones, but the number of people who buy and download apps on the iPhone are much much higher.
However, the cost are pretty high if you want to start developing for the iPhone.
You have to get a Mac if you want to do any sort of iPhone development. That'll set you back at the ~1k on the low end.
You'll have to pay for the iPhone Developer account for $99/year
Learning the iPhone SDK, which is in Objective-C, will be similar to C/C++ if you already know it.
That said, who knows what kind of splash the Palm Pre will make. So market share will be unknown, and I'm not sure of cost, but if you know HTML/Javascript, you're set.
In terms of Android, while it's a nice platform, market share is still barely a drop in the bucket. It is written in Java, and it has a lot of nice APIs, but until you have a lot more people with Android devices in their hands, it's kind of moot.
Blackberry would be a good platform to develop on if not for the iPhone. The SDK is in Java and from what I hear have decent tools to get the job done. The advantage here is that you'll have a lot of potential for consumer facing apps and potential for enterprise apps (because every business has too many of these :)
So, it depends on how much you want to spend and what kind of apps you're going with. Learning curve, I think, shouldn't be an issue because each of these platforms has their own SDK you'll have to learn anyway, so you're starting at about the same level for each of these platforms.
My picks are (in order):
iPhone
Blackberry
??
That said, that is the current view of mobile app development. It's always good to keep updated and at least have a notion of the other platforms so you could potentially branch out.
As you wrote, the environment is constantly changing, but if you plan to make your app the most portable as possible, in my humble oppinion you need to start developing with Java Micro Edition (J2ME). One of the best IDEs for the job is Netbeans.
Depends on the device I suppose. I don't think there is one common way to write something that will work on every device.
The big ones would be:
Windows Mobile: C++ or .NET Compact Framework (JavaME if you install the Java Runtime manually)
iPhone: C++ (i think). IIRC it doesnt support Java yet.
Android: JavaME
Blackberry: JavaME
Other non-smart/PDA devices: Probably C++?