We have decided on developing a mobile application, but what type of application ?
There has been an ongoing debate with legitimate pros and cons of developing a Native app or a mobile web app or a Hybrid app.
What are the differences between these types of apps?
Native apps are built using the development tools and languages (XCode and Objective C for iOS apps, Eclipse, Android Studio and Java for Android, Visual Studio and C# for Windows) that the respective platforms support and so run only on their targeted platforms.
Like in all language wars, there is no one answer for all the questions.
It depends on what your application is offering, what is the expectation of the users and what are your core development strengths.
- Native apps have the best performance and use the last available hardware resource to improve performance.
- Applications will work in offline mode.
- The apps are distributed through platforms App store providing better visibility to the prospective users.
- Your application will have access to the latest API’s, releases on that platform.
- The apps are built in languages the platform supports and so, has access to IDEs which provide the best tools to develop, debug the project fast. iOS app can be built in objective C on XCode which has all the tools to debug, design the interface, and check the performance using Instruments etc.
- Linkedin is one example which shifted over to Native from HTML5.
- And there is Facebook too, which took a U-turn.
- You need huge budgets to support all the platforms that have considerable markets. You will need to maintain multiple teams, one team per platform you want to support. So basically each team will replicate the same functionality in their platform.
- App updates needs to be downloaded by users and so you end up maintain several versions of Apps on your web server if not properly designed.
- Availability of developers for ramping up is another concern. When objective C suddenly revived after release of iPhones, there are not enough good developers ready. May be the developers can be trained , but it is not feasible for small and medium head count companies and even in bigger companies where the training is feasible, the developers trained are not going to be at the same level of expertise they were on the technologies they are working on.
HTML 5 Mobile web app
- HTML5 mobile app is similar to a normal web app, except that they are designed to work at smaller screens.
- The distribution of these apps is very easy. You just deploy the web app on your web server and users access it from their browsers.
- There are some very good mobile UI frameworks like JQuery Mobile, Sencha Touch and of course my favorite mgwt which provides several widgets for mobile.
- These apps can probably reach out all platforms since they run on browsers and all the modern smart phones have a browser.
- The development and testing of these apps is easier as they are similar to normal web apps where you have tooling support.
- These apps don’t have access to the native functionality.
- Performance doesn’t match with native apps.
- These apps don’t work in offline. Actually works in offline mode, but that doesn’t match what native apps provide.
- Hybrid apps are faster to develop since most of the development is done is web technologies which are cross platform and do very small amount of native coding, only when access to native layers is required. So only small portion of the code needs to be re-implemented for other platforms .This saves development time and cost and you can concentrate on developing new features rather than replicating the same features on each platform.
- You are near to ‘Write Once, Run Anywhere’, the strategy that made Java such a dominant force.
- The tools for building Hybrid apps are not mature enough when compared to their counterparts on native apps. The situation is changing rapidly and soon there can be some good tools which support development of cross platform Hybrid apps.
- These applications can be deployed in platform specific app stores.
- Hybrid apps provide good and bad of both native apps and HTML5 web apps.
- They can access the native layers.
- These apps can work in offline mode.
- Netflix is one cool example which runs the same code base against all the devices.
- Gartner predicts by 2016 more than 50 % of the apps deployed will be Hybrid apps.
- Hybrid apps, even though are packaged natively are not native apps. They execute on the platforms web engine, Webkit in case of Android and iOS which is another layer between the user and the application and so the performance can’t match the native apps.
- Since Hybrid apps are normally built using standard web technologies, there will be huge pool of developers available for ramping up. This is not the case with native apps.
If you are building productivity apps , Utility apps or Enterprise apps, Hybrid apps are for you.
If you are building games or photos, videos related app then Native apps are the way to go.
If you are building apps which need to work in real time, which doesn’t need access to the native layer and is not performance stressed, then html5 mobile web apps are the way to go.
So the decision needs to be done based on what type of application you are building, what is the development cost and time that can be offered.
This guide will introduce you to the world of Software Architecture!
This 162 page guide will cover topics within the field of software architecture including: software architecture as a solution balancing the concerns of different stakeholders, quality assurance, methods to describe and evaluate architectures, the influence of architecture on reuse, and the life cycle of a system and its architecture. This guide concludes with a comparison between the professions of software architect and software engineer.