NFC chip in smarphones

Mobile app development, kies ik voor native, React Native, Xamarin of Cordova

Nog steeds native apps aan het ontwikkelen? Er zijn tegenwoordig meer mogelijkheden om direct voor iOS en Android te ontwikkelen. Zo is React Native sterk in opkomst en heeft ook Xamarin een sterke positie als mobile app development platform verworven naast andere bekende tools als Cordova, PhoneGap en Ionic. Na dit artikel kun je beter een keuze maken tussen welk ontwikkelplatform het beste aansluit bij de wensen voor jouw app.


Native & hybrid apps

Voor we echt wat kunnen vertellen over de verschillende ontwikkelplatformen voor mobiele apps moeten we eerst wat meer vertellen over het verschil tussen native apps en hybrid apps. In essentie zijn hybride apps, websites ingesloten in een mobiele app. De website wordt in de app getoond via een webview. Een webview is vergelijkbaar met de browser op de smartphone. Een hybride app wordt gemaakt met behulp van webtechnieken zoals HTML5, CSS en JavaScript. Onafhankelijk van waar de app draait – iOS, Android, Windows Phone – wordt dezelfde code uitgevoerd. Met behulp van tools als Cordova, PhoneGap of Ionic is het mogelijk native functies als de camera, GPS, acceleratiemeter en meer te gebruiken.

Native apps daarentegen worden specifiek voor het platform ontwikkeld waarvoor ze bedoeld zijn. Zo worden native apps voor iOS ontwikkeld in Swift of Objective-C en voor Android in de programmeertaal Java. Code van iOS kan niet hergebruikt worden voor Android en vice versa. Het voordeel is wel dat alle functies van het platform direct beschikbaar zijn zonder enige beperking voor de ontwikkelaar.

Native vs hybrid mobile apps

Mobile App Development: welk ontwikkelplatform of tool

Naast native ontwikkelen zijn er de afgelopen jaren veel crossplatform ontwikkeltools ontstaan, waarmee direct apps ontwikkeld kunnen worden voor meerdere platformen zoals Android en iOS. De voordelen zijn helder: niet twee keer ontwikkelen scheelt tijd, ontwikkelcapaciteit en dus geld. In deze vergelijking onderscheiden we 5 categorieën ontwikkelplatformen naast native mobile app development:

  1. Cordova based (o.a. PhoneGap, Ionic)
  2. React Native
  3. Xamarin
  4. DIY
  5. Low code / rapid application development platforms

Alle bovengenoemde ontwikkelplatformen voor mobiele apps vragen een andere set aan skills van de developer. Keuze voor het juiste ontwikkelplatform is cruciaal voor de lange termijn strategie voor de app.

Welke mobile app development optie is het best?

Elk alternatief voor native app development heeft zijn eigen voordelen en bijbehorende filosofie. Er is niet één ontwikkelplatform dat direct aangewezen kan worden als beste. Het hangt vooral af van een groot aantal factoren. De meest belangrijke factoren hiervoor zijn:

  • Doelgroep
    Alleen een app voor iOS of Android? Dan is native de “way to go”. De beste performance en altijd direct de beschikking over de laatste functies van het platform.
  • Eisen en wensen app
    Een app met data in lijsten kan met elk ontwikkelplatform gerealiseerd worden. Specifieke app functies zoals video/fotobewerking, augmented reality of 3D kunnen een reden zijn om te kiezen voor native of een platform dat hier de juiste componenten voor heeft.
  • Lange termijn strategie van app/organisatie
    Moet de app in de toekomst beschikbaar komen op meerdere platformen of is de verwachting dat de skill set van ontwikkelaars gaat veranderen in de toekomst, dan kun je daar met een keuze voor een ontwikkelplatform nu al op anticiperen.
  • Huidige skill set van ontwikkelteam
    Wellicht wel de belangrijkste reden: wat zijn de skills van je huidige ontwikkelteam? Heb je een team van web developers dan is React Native een natuurlijke fit. Veel C# kennis, dan heeft Xamarin wellicht de beste kaarten.
    Besteed je de ontwikkeling volledig uit, kies dan het ontwikkelplatform dat het beste past bij de wensen van de app. Maar houd ook rekening met de toekomst, is het de bedoeling de app in de toekomst zelf te beheren of door te ontwikkelen? Vraag je af wat voor soort ontwikkelaars je in de toekomst gaat aannemen. De markt voor goede ontwikkelaars is namelijk beperkt.

1. Cordova based mobile app development

Een hybride app ontwikkelen met behulp van eenvoudige JavaScript, HTML5 en CSS is één van de populairste en makkelijkste manieren om een app te ontwikkelen. Voor web developers is dit een veilige keuze, ze kennen de techniek – JavaScript, HTML, CSS – al en met behulp van een framework zoals Cordova, PhoneGap of Ionic creëren ze eenvoudig een app.

Hoe krijgt de app toegang tot de hardware van de telefoon?

Cordova is de basis achter o.a. PhoneGap en Ionic. Cordova zorgt ervoor dat je via een JavaScript API vanuit de app kan communiceren met functies van de smartphone zoals de camera, accelerometer of GPS. Zodra de app klaar is kun je met Cordova een app builden die vervolgens geïnstalleerd kan worden op de smartphone of tablet.

De filosofie achter Cordova is “write once, run everywhere”. Dit is direct het grootste voordeel: één codebase die werkt op alle platformen. En ben je een web developer dan hoef je geen nieuwe technieken te leren. Een nadeel is wel dat de app minder goed presteert dan een native app, denk hierbij aan snelheid waarmee de app reageert op input maar ook aan animaties wanneer je naar een ander scherm gaat in de app. Dit komt omdat de applicatie via een webview draait op de hardware van het toestel en niet rechtstreeks zoals bij een native app.

2. Mobile app development met React Native

React Native is relatief nieuw maar een perfecte optie om snel applicaties te ontwikkelen voor meerdere platformen. React Native is een open source framework wat is ontwikkeld door Facebook om met behulp van JavaScript native apps te ontwikkelen voor iOS en Android. Ondanks dat React Native relatief nieuw is, wordt het al gebruikt door een aantal grote spelers zoals: Facebook, Instagram, Airbnb, Tesla en SoundCloud. Ook is het populair in de community als je het vergelijkt met Xamarin en PhoneGap.

React Native is gebaseerd op JavaScript maar de basiskennis van een web developer moet worden vergroot met o.a. React & JSX. Gelukkig ligt dit wel in het verlengde van zijn huidige kennis.

React Native vergeleken met Cordova/PhoneGap/Ionic

Zoals eerder aangegeven zijn Cordova/PhoneGap/Ionic hybride apps. Code op basis van HTML en JavaScript wordt getoond in een webview (geïntegreerde browser). Bij React Native werkt dit anders, de interface (UI) wordt geschreven in JavaScript React componenten (JSX) en elk React Native UI component is gekoppeld aan een native UI component in iOS of Android. De JavaScript componenten worden dus omgezet naar native componenten voor het onderliggende platform.

React Native TabBarForIOS

TabBarForIOS React Native UI Component resultaat in iOS (links) en Android (rechts)

 

Uiteindelijk krijg je hiermee een native app, wat meerdere voordelen heeft zoals een betere performance en een platform specifieke herkenbare interface (UI). Dit toont meteen een nadeel aan, niet elk UI component is beschikbaar in iOS of Android. Daarom zal je soms extra code moeten ontwikkelen voor één van de twee platformen. Hierdoor is ongeveer 85% tot 100% van de code herbruikbaar. De filosofie van React Native wijkt dan ook af van Cordova: “Learn once, write everywhere and achieve maximum code reusability”.

3. Mobile app development met Xamarin

Xamarin is een andere ontwikkeltool voor crossplatform ontwikkeling van mobiele apps. Net als React Native levert ook Xamarin een native app op. Met Xamarin is het mogelijk native apps te ontwikkelen in C# voor Android, iOS, Windows en Mac. De filosofie van Xamarin is in grote lijnen gelijk aan React Native. Het grootste verschil is dat voor Xamarin een totaal andere ontwikkeltaal wordt gebruikt, namelijk C# van Microsoft. Ook hier is het hergebruik van code niet 100%. Door de inzet van Xamarin.Forms is hergebruik wel te maximaliseren. Xamarin.Forms vertaalt interface componenten naar elke platform. Voor ongeveer 90% van de native UI componenten is een variant in Xamarin.Forms beschikbaar.

2016 is het jaar dat Xamarin is overgenomen door Microsoft. Dit heeft ze geen windeieren gelegd en het gebruik van Xamarin is sindsdien flink toegenomen en nieuwe functionaliteit wordt in verhoogd tempo toegevoegd. Xamarin is sindsdien ook open source geworden en er zijn gratis ontwikkeltools beschikbaar (community edition). Xamarin is dan ook een voor de hand liggende keuze voor organisaties die gebruik maken van een Microsoft infrastructuur en al C# ontwikkelaars in dienst hebben.

4. Mobile app development met DIY tools

Do It Yourself (DIY) tools zijn niet geschikt voor innovatieve of geavanceerde applicaties maar kunnen zeer bruikbaar zijn voor bijvoorbeeld een eenvoudige restaurant of evenementen app. Op basis van een template kan eenvoudig een app geconfigureerd worden, vaak gebeurd dit online via een website. Eén van deze DIY app development platforms is het Nederlandse AppMachine.

Een DIY platform biedt o.a. uitkomst voor designers. Waar ze vroeger altijd afhankelijk waren van developers om hun app te realiseren, kunnen ze nu eenvoudig zelf mobiele apps ontwikkelen met een unieke look maar beperkte functionaliteit. Verwacht hier dus ook niet de volgende Uber mee te ontwikkelen.

5. App development met low code platforms

Als we breder kijken dan alleen mobile app development, dan zijn ook low code development platforms interessant. De laatste jaren worden low code platformen steeds vaker ingezet voor het ontwikkelen van (mobiele) applicaties. Deze ontwikkelplatformen nemen het “echte” ontwikkelwerk uit handen en het is mogelijk om snel business applicaties te ontwikkelen. Een voorbeeld hiervan is Mendix. Het platform leent zich perfect om snel innovatieve applicaties te ontwikkelen. Dit beperkt zich niet alleen tot mobiele applicaties, ook web applicaties kunnen met een druk op de knop gerealiseerd & gepubliceerd worden.

Stukje advies voor mobile app development

Er is niet één perfecte manier voor het ontwikkelen van jouw mobiele app. Zoals eerder gezegd hangt de keuze af van veel zaken. Als je al ontwikkelaars in dienst hebt zal dit grotendeels de keuze bepalen. Voor een web developer is overgang naar React Native een natuurlijke en heb je wel de voordelen van een native app. Als de organisatie gebruik maakt van C#, zal Xamarin waarschijnlijk een streepje voor hebben.

Als Gillz vinden wij een app die snel aanvoelt en een herkenbare interface (UI) heeft belangrijk. Daarom gaat onze voorkeur uit naar React Native of Xamarin. Native ontwikkeling kan daarnaast nog steeds een goede keuze zijn wanneer snelheid maar ook maximaal gebruik van nieuwe functies in het platform voorop staan.

Wil je van gedachten wisselen over welke ontwikkelmethode het beste past bij jouw wensen? Bel of mail Bob.


Bob van der Panne - Commericeel Directeur
Meer weten?

Sparren over de mogelijkheden of een kostenindicatie? Mail Bob van der Panne of bel 06 18 488 698.