MOBILE DEVELOPMENT ARCHITECTURE
Introduction To Mobile Apps/Native Apps:-
When it comes to mobile platforms, its unarguable there are just two big player: android and ios. Several other technology like tizen, blackberry or windows phone are either dead or have been around for a while with no perspective of reaching any significative market share.
A quick look at this stagnant duopoly will easily lead to a concept that developers have not many option to create mobile apps. This affirmative can’t be more fallacious , through its possible to quickly spot a fistful of programming language being used out their : C/C++, JAVA, KOTLIN, OBJECTIVE-C, SWIFT, JAVA SCRIPT, TYPE SCRIPT, C#, RUBY etc.
The same happiness to mobile development frameworks. Unless you are not a developer or have not lived in this planet in the last ten year, you definitely have heard about cordova/phonegap, react native, yamarin, ionic, native script or flutter just two name a few of course platform solution for mobile apps.
Native Apps:-
To start, let’s go straight to the metal. Our first architectural tier is native apps.
Ios:-
Starting on the ios side, just because its simpler, there’s only apple ruling the world originally developer needs to learn objective-c aproprietary object oriented variation of c with some inspiration from small talk and API(application programming interface)
Android:-
On the side there is a number of different manufacture, although the vast majority of them really upon arm processor generally speaking android apps lay on virtual machine instants to help to deal with potential under laying specificties. That why the language of choice was java not only the most popular language in the world for almost two decades( with few position swaps with c) but also notable for its java virtual machine empowering developers to complete there code down to an intermediate bytecode to be read and run by the jvm.
With android native development kit(NDK). Its also possible to develop critical parts of the app directly in native code, writing in C/C++. In this case having to be aware of under laying platform quirks.
Kotlin is a language unveiled by jetbrains In 2011. When it first came out despite it flexibility and conciseness ,it wasn’t more than yet another jvm language with more successful competitor like scala, clojure or groovy. However after its first major release in 2016. It rapidly started to stand out form the crowd, especially after google’s announcement of it becoming officially supported on android platform at google I/O 2017. Its agreed that kotlin is becoming google’s first class language and a total java replacement is expected even more after us federal appeals court has reverted the endless lawsuit from oracle accusing google of having violated java copyrights.
Native components:-
Developing in this tier, you can also leverage all native API and in particular the native components, saving your apps to reinvent the wheel.
Native app advantage:-
1. Best performance and top user engagement.
2. Bledding edge native futures.
3. Notably good IDES Android studio/xcode.
4. Modern high level language kotlin/swift.
5. Very low level apporch with NDK.
Native app disadvantage:-
1. Two code base to maintain.
2. Require installation( expect android instant apps)
3. Hard to seo.
4. Very expensive to get user to download the app.
· Mobile development tiers- native apps
ANDROID DEVICES:- IOS DEVICES:-
GOOGLE APPLE
SAMSUNG
HTC
MOTROLA
HUWAI
LG
XIAOMI
· If you are focus on android native apps then choosing language java/kotlin with also ndk.
· If you are focus on ios native apps then choosing language objective-c/swift.
Introduction to web apps:-
On the other side of the spectrum web apps are founded run by the browser you don’t write code targeting the platform, but any browser running on the top of that.
In this tier we can find an insane number of contenders jumping at each others throat but using an arsenal consisting of the same weapons: html, css and java script. Web frameworks and libraries, even when leveraging css pre-compilers like less or sass, even java script pre-compiled language like type script or flow even symbiosis like jsv or elm, leaving alone tools like babble used to transpiles to java script with different configurable levels of conformance with ecma script yearly specification (ES6/ES7/ES8…..) at the end of the day they all are html css and java script rendered and run by the browser, there’s no direct acess to native api’s like camera, vibration battery status or file system but some of them can be achieved via web api’s.
The big issue with web api’s is their maturity level. Many of them are not ubuiqusly available and not rare there are different on implementation especially across mobile browser.
Web apps advantages:-
· Shared code between platforms and also desktop browser.
· Do not require previous installation. Just navigation and use.
· Tons of framework and libraries to go with.
· Best for seo.
Web apps disadvantages:-
· Lower performance.
· Hard to get a native user experience.
· Require internet connection.
· Not available on official app store.
Framework & web component:-
Angular, react and vue are probably the most popular web framework as of 2018. To be precise react is consider just a library due to its flexible and less opinion to angular which is strongly opinionated framework while vue lives at some point in between them.
Angular js, was presented to the world in 2010 by google. It started rapidly to shine, due to its inversion of paradigm in comparison with other libraries from that time, like j query the most popular back then instead of directly talk to html elements to manipulate the ui state, with angular js, templates were magically update whenever the java script model was updated.
As it became more popular, it also grew in purpose turning into a complete and opinionated framework that took spa( single page apps) seriously this growth ware responsible for some api bloats and performance issues.
React was created by facebook to slove their own needs on the presentation layer.it introduced many aspects that suddenly became very popular like virtual dom, one way data flow originally named flux, especially popular through an implementation library called redux and a mixture of html and java script called jsx.
Only in 2016 after long debates and unexpected big changes, google lunched the version two of its popular framework. That was renamed to only angular, instead of angular js but many people already called the first version without the js suffix it got called angular 2.that was a naming problem as they also announced a policy of releasing new version every 6 months.
IMHO, that was a mammoth mistake I’ve watched this film before. You got a massive popular product that appears to have reached its pleatua and started to be more criticize than praised. If you decided to rebuilding it form the ground up, never by any means, just changes its major version. How will people trust that you will not repeated it every new major version release? Version 2 is supposed to likely present breaking changes but it doesn’t mean it can be totally revamped.
Angular is a spectacular web framework and I really feel passionate above it. However it’s a completely new beast. It has not much to do with angular js. from a birds-eye views. I belive this caused a serious stamped and contributed substancely to react popularity.
Vue is the only one of probably the three most popular web frameworks that is not backed by a big company. Actually, it was started by a formerly google developer and due to its formidable simplicity and tiny footprint got attention from a massive and effervescent community.
Although they are more complete solution, they all work on top of concept of web components. There’s open specification about them currently in progress in W3C and some interesting implementation like:- polymer, stencil and x-tag.
Web apps:-
Native apps, web, hybrid is there a best way to develop for android and ios platforms.
Context of progressive web apps:-
However for mobile things are a little bit difference. The first point to considered is how easy it is to download and install an apps.
Desktop came before the internet, so they are naturally decentralized in terms of software installation process. There’s no unique store where you can find everything you would be probably looking for. I know there are some solution, package management system like RPM,APTGET,BREW,CHOCOLETY or even store like apple app store for MACOS and MICROSOFT’S UWP.



0 Comments