Hoe multiplatform moet je willen gaan?

Iedere mobile developer heeft wel een voorkeur. Of het nu iOS, Android of misschien wel Windows Phone is, je zal het snel genoeg merken. Binnen Mobile Solutions bij Sogeti is dit niet anders, van iOS hatende Android liefhebbers tot echte Apple fanboys we hebben ze allemaal!

Een developer ontwikkelt daarom ook graag alleen maar voor zijn ‘eigen’ platform. Maar er zijn ook weer veel verschillende gebruikers, ook allemaal met hun eigen liefde voor een platform wat een developer bijna dwingt om een nieuw platform en een nieuwe taal onder de knie te krijgen. Dit moet toch makkelijker kunnen zou je zeggen?

Let me introduce you to… Multiplatform oplossingen.

Wat is een multiplatform oplossing? Een multiplatform oplossing is een software pakket, te vergelijken met bijvoorbeeld de Eclipse + Android SDK combinatie, waarmee apps geschreven kunnen worden. Nu denk je misschien ‘ja dat kan ik met Eclipse en Xcode ook!’ maar dan vergeet je toch iets. Met een multiplatform oplossing kan je een app met één keer code schrijven, op meerdere platformen uitbrengen. Hoe mooi dit ook klinkt, het heeft ook zo zijn nadelen. Bijvoorbeeld:

Niet alle functionaliteiten van een specifiek apparaat kunnen gebruikt worden

  • Het kan langzamer zijn
  • Het is moeilijker om platform specifieke richtlijnen te gebruiken

Vooral dit laatste punt is iets wat veel mensen stoort, zo krijg je al snel Android apps die lijken op iOS apps. Een mooi voorbeeld hiervan vind ik de app Scoupy:

Zie je het op de achtergrond? De Android app heeft een tabbar zoals iOS die standaard gebruikt, en ook bovenaan zie je een segment control. Erg jammer als je het mij vraagt, aangezien Android van zichzelf heel mooie en gebruiksvriendelijke interfaces kan maken.

Snelheid en functionaliteit

Multiplatform apps willen ook nog wel eens langzaam zijn, of niet alle apparaat specifieke onderdelen gebruiken. Zo ben ik tijdens mijn onderzoek bij Sogeti multiplatform oplossingen tegengekomen die 5 à 10 minuten aan het builden waren, of nog niet eens een kaartje konden weergeven op Android! Dit is natuurlijk onacceptabel, en maakt het ontwikkeltraject niet heel veel sneller.

Even terug naar de code. Je schrijft 1x code, en die draait op misschien wel 4 verschillende platformen? Hoe kan dat snel en geoptimaliseerd zijn? Nou heel simpel eigenlijk, gewoon niet. Tussen jou code en het platform zit altijd een vertaalslag, en het is aan de oplossing om ervoor te zorgen dat dit zo soepel en snel mogelijk gaat.

Kunnen we dan echt niet sneller ontwikkelen?

Jawel, ik denk dat dat wel kan. Een mooi voorbeeld hiervan is Xamarin, beter bekend als MonoTouch en Mono for Android. Eerder was ik hier heel sceptisch over, maar als je even er over na gaat denken is dit misschien wel de slimste keuze als je snel een app voor meerder platformen wil maken.

In plaats van 1 code-base heb je een codebase voor ieder platform apart. Ja inderdaad, één voor ieder platform. Terug bij af? Dacht het niet. Omdat zowel voor ieder platform een aparte code-base bestaat, is het erg gemakkelijk om platform specifieke interfaces te ontwerpen, en ook sensoren optimaal te gebruiken.

Maar omdat alles geschreven wordt in C# kan je ook erg veel logica code binnen de apps delen. Denk hierbij aan netwerk communicatie, data verwerken, model classes en (een deel van) de security. Dit geeft je best of both worlds. En je kan veel code (vaak rond de 60%) delen en toch platform specifieke wijzigingen maken, klinkt goed niet? Het geeft Windows gebruikers zelfs de mogelijkheid om iOS apps te schrijven!

Het enige nadeel wat ik heb kunnen vinden, voor een hobby developer kan het aardig prijzig worden. Met prijzen vanaf $299,- per platform per jaar, maar in een professionele omgeving denk ik dat dit mooi in kan schuiven.

Ik heb in het kort de voor en nadelen van multiplatform oplossingen genoemd, en dit zijn slechts een klein deel van alle bevindingen die ik heb gedaan. Geïnteresseerd in wat ik nog meer ontdek? Blijf vooral mijn blog in de gaten houden, en deel ook op Twitter, Facebook en Google+!

Ruud Puts - Stagiair Mobile