The demand for mobile solutions has been constantly growing over the last few years. Today more people use their mobile device than their desktop. The challenge for companies is how to build a mobile solution that meets their needs but doesn’t kill their budget.
In this blog, I will provide a “brief” overview of some options for mobile development. I’m using the word “brief” because this subject matter can easily span several books. In the future, I will post more details about each option. For now, I will try to keep it brief!
As you can see below, there are several options that are available when developing a mobile application. But not every option can easily fulfill an application’s needs. Taking the time to determine the requirements of the application and the target audience (public, business partners, and/or employees) helps to determine which approach is best for development.
The landscape for mobile development has changed. Today there are more ways to build a mobile application beyond just writing Objective-C or Java. These options can be broken down into the following categories:
- Mobile Web
Each one of these options has its pros and cons and each requires a certain skillset. Let’s review each option in a little more detail.
Mobile Web is a good platform for the initial marketing of your product(s) or business. Today new data shows that 88% of the time users are using native mobile apps and not using their mobile web browser.
- Quick to develop and update
- Do not need to submit to the app store for approval
- Need to have a good bandwidth to access the site
- Advanced features, such as gestures and animation, can be slow
- Limited access to functionality on the device (e.g.: CameraRoll, Touch ID, etc.)
- Can be slow for large amounts of data and complex business logic
Note: Apache Cordova was originally called PhoneGap and was created by Nitobi Software. Adobe acquired Nitobi. Adobe kept the name PhoneGap but released an open source version of the software with the name Apache Cordova. Adobe PhoneGap uses Cordova but also provides addition development tools beyond the basics of Cordova.
One of the most popular hybrid frameworks out there is Ionic. It uses Cordova with Angular JS to allow for rapid development of mobile apps. It provides out of the box CSS themes to allow the application to have the look and feel of a native application. Some popular applications built with Ionic are: Untapped, iPic, Nationwide, JustWatch and more.
We at Trilix categorize Native mobile applications in three ways:
- Xamarin by Microsoft
- Pure native
- No; because hybrids use HTML to create the UI components in a browser.
Note: I use the word “most” because there are some architectural details that prevent me from saying all the UI processing happens in their own thread. It’s how a bridging technology works. More on that in a future post.
Here is a list of some real-world application examples written with these frameworks:
- React Native:
- Microsoft Skype
- See more
- Daily Nanny
- School Bell Weather
- See more
- Fast development time
- Native look and feel
- Native speed for Gestures, animation and large data lists
- Large number of add-on modules for direct access to phone features (Maps, touch ID, etc.).
- Similar skillsets used for web site development.
- Android development can be funky at times
- Larger app size.
- Need to rely on the community or yourself for add-on modules
Xamarin, from Microsoft, uses .Net, XAML, C# and F# to develop IOS and Android applications. On IOS, the code is compiled to ARM assembly language (ARM is one step away from machine code). On Android, the code is compiled to IL (Intermediate language) and a Mono VM (Virtual Machine) is shipped with the application. The Mono VM is like the CLR on Windows.
Note: Xamarin started out as MonoTouch and was acquired by Microsoft in 2016.
There are 2 flavors of UI development with Xamarin.
- IOS/Xamarin.Android: Each platform UI component has a corresponding C# wrapper. This allows you to use similar native UI calls in C#. With this approach, you can get around 70% code sharing between the platforms. Note: I use the word “similar” because Xamarin names the apis slightly different than their native counterparts (more about this in a future post).
- Forms: Xamarin took native UI calls for each platform and created a generic wrapper for each one that allows the developer to write once/run everywhere. With Xamarin.Forms you can get around 98% of code sharing between the platforms. Note: I used 98% because depending on the application, you may still need to write native code to get the job done. For a list of some real-world application examples, check out the Xamarin customer showcase.
- Full hardware support (no add-ons or plugins needed)
- Backed by Microsoft
- Native look and feel
- Native speed for Gestures, animation and large list
- App size can be large
- Not everyone knows XAML
- Some of the advance tools (profiler, inspector) cost extra
- Android needs to run Java/ART (Android runtime) side-by-side with the MonoVM
Pure Native means using the language and IDE from the vendors that produce the platform.
The biggest challenge with Pure Native application development is time and skillsets. You have to duplicate your work for each platform and used a different language for each platform.
- Access to all features as the platform
- Smallest code size
- Best performance
- Increased development time because you must recode for each platform
- Difficult to find developers who can develop on both platforms