06. juni - 2011

Apps for mobile plattformer

Vi har sett på utvikling av applikasjoner for de tre plattformene Windows Phone 7, Android og Apple iPhone. Vårt mål var å kunne utvikle for samtlige plattformer ved bruk av ett programmeringsspråk (C#). De fleste oppdragsgivere ønsker applikasjoner for alle de nevnte plattformer, og dette vil forhåpentligvis bidra til en effektivisering av utviklingsprosessen. For iPhone og Android er henholdsvis MonoTouch og MonoDroid benyttet.

Windows Mobile 7

For utviklere med bakgrunn i Visual Studio er dette helt klart den enkleste plattformen å komme i gang med. Det kreves Visual Studio 2010 (eller Visual Studio Express), i tillegg må Windows Phone Developer Tools CTP være installert.

Selve utviklingen foregår ved bruk av Silverlight og C# (Visual Basic er foreløpig ikke støttet). Utviklingsmiljøet viser en split-screen med en grafisk presentasjon til venstre og tilhørende XAML-kode til høyre. Man kan dra GUI-elementer fra verktøykassen og over på designflaten og/eller editere direkte i XAML.

Emulatoren tar litt tid å starte opp første gang, men deretter går det relativt kjapt både å laste over og å kjøre den kompilerte applikasjonen.

iPhone

Utvikling for iPhone må foregå på en Mac og krever Apple’s API selv om man benytter MonoTouch. For applikasjonsuvikling har vi benyttet MonoDevelop som er et fullt brukbart verktøy selv om det ikke er like sofistikert som Visual Studio.

Brukergrensesnittet kan designes vha. Interface Builder, som er samme verktøy som benyttes hvis man utvikler utelukkende med bruk av XDevelop fra Apple, eller man kan lage dette helt eller delvis programmatisk. Interface Builder er godt integrert med MonoDevelop og åpnes ved å dobbeltklikke på xib-filer i prosjektet.

MonoTouch mapper de underliggende klassene fra Apple’s API, noe som gjør det relativt lett å benytte dokumentasjonen fra Apple.

Emulatoren starter raskt og er svært responsiv, generelt sett er dette nok den beste av de tre.

Android

MonoDroid installeres som en plug-in til Visual Studio. I tillegg må Android SDK og Java SDK installeres. Skal man benytte f.eks Google Maps må også Google API’s installeres.

Brukergrensesnittet defineres vha. XML (kan også gjøres programmatisk), men det er ingen forhåndsvisning av resultatet. Dette betyr at man ikke ser utseendet på applikasjonen før den er startet i emulatoren, noe som forvansker utviklingen. Det finnes tredjepartsverktøy for GUI-design, men vi har ikke sett på disse. XML-definisjonen av brukergrensesnittet er den samme som om Java/Eclipse benyttes for utvikling.

Som for MonoTouch mapper MonoDroid de underliggende klassene, dvs. Android-dokumentasjonen kan benyttes. Det er imidlertid bare selve Android APIet som er tilgjengelig, klasser i Google API som f.eks. MapActivity må instansieres vha. Javakode og aksesseres vha. Java interop. Disse klassene vil ikke kompileres sammen med resten av prosjektet, eventuelle feil i koden vil derfor ikke rapporteres av kompilatoren men i form av en exception når prosjektet deployes til emulatoren.

Emulatoren er svært treg, både når det gjelder oppstart, opplasting av applikasjoner og respons.

Generelt

Det er relativt lett å komme i gang med utvikling både for iPhone og Android ved bruk av MonoTouch/Monodroid, den første ”Hello World” applikasjonen tar ikke mange minutter å lage.

MonoDroid virker noe tregt, umodent og mangelfullt, noe som forhåpentligvis vil bli (i hvertfall delvis) rettet opp i neste versjon. MonoTouch virker mere utviklet og det finnes allerede en rekke applikasjoner i appstore som er skrevet ved bruk av dette. Det finnes også flere bøker om MonoTouch.

Fordelene ved bruk av MonoTouch/Monodroid er at man benytter C# og, for MonoDroid, Visual Studio. Dette betyr, hvis man har bakgrunn fra Visual Studio og C#, at man uansett plattform benytter et programmeringsspråk og rammeverk man er kjent med. Man kan i tillegg flytte mye kode, f.eks. bakgrunnsprosessering, mellom prosjektene så lenge dette er ren C# og ikke plattformavhengig.

Tidsbruket ved porting fra en plattform til en annen avhenger av kompleksiteten i det grafiske brukergrensesnittet siden dette vil måtte skrives om fra bunnen av.

Oppkjøp av Novell – Hva skjer med Mono?

Novell ble for en stund siden kjøpt opp av Attachmate. Som en følge av dette vil Novell ikke lenger supportere utviklingen av Mono og utviklerne har fått oppsigelse. Selve Mono-prosjektet er imidlertid open source og vil fortsatt eksistere og videreutvikles.

Hovedarkitekten bak Mono, Miguel de Icaza, har startet et nytt selskap med navn Xamarin. De satser på å videreføre de kommersielle produktene (MonoTouch og MonoDroid) i tillegg til å bidra med videreutviklingen av selve Mono. De hadde visstnok i lang tid vurdert å bryte ut av Novell uansett.

Litt tidlig å si hvilken praktisk betydning dette vil ha for app-utvikling med MonoDroid/MonoTouch, men vi gjetter at det nye selskapet vil være levedyktig og levere minst like gode løsninger som da de var en del av Novell.