I have to create a mobile application which will be heavily using the visualizations using graphs,etc. Would it make sense to go for cross platforms like phonegap/cordova since we can then make use of native web functionalities to easily create the needed visualizations using libraries like D3, etc. or I should be going native. Can you guys please put up the pros and cons for the same for my use case.
If you can find out the inner complexities of your project then go from there. Go native if complex/bespoke systems are required. Go X-platform if simple project and of a less complex/bespoke nature. Although if you want to go X-platform with simple projects - why do it in the first place? Surely just a website would do?
I would only go native if there's an advantage in doing so - for example if you need 3D rendering via Unity or you want a native look, otherwise Cordova with HTML5 does a great job.
The answer will cover the app developement from prototyping to backend developement. I will provide an overview of the backend as a service platforms and apps cross platforms.
Tools to Accelerate Software Development
You should use platforms to speed up software development and reduce the total programming learning curve. The total time you will need to develop an application will depend on how complex you want the application to be and also if you will use frameworks to accelerate software development. You will need to learn to different programming skills:
Backend: Back end means the parts that do the work, but the final user is unaware of or cannot see. Ir represents up 80% of the total work and contain the API, databases, services, etc. There are several BaaS – Backend as a Service providers to speed up backend development. www.back4app.com can accelerate up 80% the backend development and it is a good option for developers looking for flexibility and control over the source code. Firebase provide similar results, but the users do not have access to the source code and are locked on the platform.
Frontend: Front end typically means the parts of the project a user interacts with. The interface can be mobile (Android, IOS, Windows, etc) or web. A good platform to speed up mobile frontend development is Xaramin and it can reduce up to 70% the total time to develop Android and IOS apps. The main advantage to use a cross platform are the reduced time to develop an application and also you are able to standardize the coding language. For example, with Xamarin you will use only C# to code.
Prototyping: For design and prototyping please try Marvel Apps. Free mobile & web prototyping (iOS, Android) for designers – Marvel
If you care about the Performance, Don't use
Cordova/Phonegap. I'll suggest React Native. If you are already familiar with Javascript, It will be easy for you to learn React Native.React Native have lots of plugins to create charts without writing Java code.
Try it once; You will love it.
If you want to know the generalised Pros and Cons of React Native, Check it in google. There are lots of resources available outside. Some of them are