The 3 most popular frameworks are:
- Native (iOS, Android)
- Apache Cordova
- Code runs faster
- New features are integrated more quickly and easily
- Hardware-related features such as gestures, multi-touch events, and geo-location tracking are much easier to implement with native technologies
- Easier design of animations and UI intensive apps
- Higher development costs
- Creating a separate application for each platform; writing code from scratch each time
- A higher time frame to deliver a project
- Near native performance
- C# awesomeness shared across all platforms (LINQ, Async/Await is always a plus!)
- Re-use almost 80% of code
- Programmatically share UI across all platforms or optionally design UI in their native environments (the preferred option)
- Can handle many native API's such as geo-location and multi-touch
- Some software overhead due to linking of codes and referencing between .NET and target platforms
- Limited tutorials for certain features
- Longer loading times
- Supports 7 Platforms (Apple, Android, Windows, Blackberry, Symbian, Bada, webOS)
- It's Open Source
- Usually the cheapest option
- Shorter development time
- Look and feels very much like a website
- A lot of CSS work will be required to get the look and feel of a native application
- Limited native API functionality
- Slower performance
- Lack of documentation and tutorials
After analyzing the pros and cons of each platform, which framework comes out on top in this race?
- WHEN TO CHOOSE XAMARIN?
If you're familiar with .NET, Xamarin is a great option because C# is an awesome language and you get to use it for both client and server. Xamarin is even able to manage large scale projects even when time is a factor. Though complex UI is better in an native environment, Xamarin provides the option to use iOS Storyboards and Android layouts to get as close of a native UX as possible!
- WHEN TO CHOOSE CORDOVA?
If you're a web developer, Cordova is a great option as it utilizes familiar tools with addition to some native API functionality. Cordova is best when used for smaller projects and when development time plays a major role. Generally the development costs are low. Cordova does well when not requiring heavy native API functionality or and willing to sacrifice some native UI design.
- WHEN TO CHOOSE NATIVE?
If you're familiar with native languages such as Swift or Java, then going native is your best option. Their are plenty of advantages of doing native when it comes down to performance. Native projects are also best for large scale projects, but are very time consuming and can be very expensive.