Snart kan der skrives iPhone-programmer i C#
Open source-implementeringen af Microsofts .NET-platform, Mono, er på vej til iPhone og iPod Touch.
Det skriver udviklerne af Mono på projektets hjemmeside om den nye version med navnet MonoTouch, som pt. er i beta og efter planen er klar til endelig frigivelse i september.
Det betyder, at det bliver muligt at skrive applikationer til iPhone i det populære programmeringssprog C# og forhåbentlig få dem optaget i Apples AppStore.
Hidtil har iPhone-udviklere været bundet til frameworket Cocoa og sproget Objective C, som normalt ikke anses for at være det nemmeste programmeringssprog at danse med - især ikke for uerfarne programmører.
»MonoTouch giver udviklere mulighed for at skabe C#- og .NET-baserede applikationer, der kører på iPhone og benytter iPhones API'er. Udviklere kan bruge iPhone-simulatoren til at teste deres applikationer, samt bruge MonoTouch på den endelige enhed og lægge applikationer på Apples AppStore til distribution,« skriver Mono-udviklerne.
MonoTouch er blevet snittet til på et par punkter for at kunne opfylde to afgørende krav fra iPhonens side. Det ene er, at iPhone ikke understøtter JIT-engines (Just-In-Time, hvor kode oversættes til maskinkode på runtime). Derfor har Mono-udviklerne sørget for at levere MonoTouch som en statisk compiler, som gør, at iPhone-applikationer udviklet i MonoTouch kun består af native kode.
Derudover kræver Apples aftale med iPhone-udviklerne, at udviklerne ikke benytter sig af scripting- eller JIT-teknologier.
Den danske udvikler af iPhone-applikationer Mikkel Bruun er forsigtigt positiv omkring MonoTouch-projektet.
»Det er meget interessant, men det kræver, at værktøjerne og dokumentationen er på plads, og at de får Apples accept. Apple har ry for at kunne være lidt brutale, og det kan ske, at de vælger at lukke ned for det med det samme. Men hvis det ikke sker, kan det da blive meget spændende,« siger Mikkel Bruun.
MonoTouch kræver en Mac og Apples iPhone-SDK for at kunne udvikle og teste koden. Derudover kræves et udviklerabonnement for at kunne lægge applikationerne til godkendelse og distribution i AppStore.
Kommentarer (5)
Det danske firma Unity har faktisk allerede understøttelse for scripting af Mono kompatbile sprog i deres spil motor som også kører på iPhonen. Og så vidt jeg har forstået har de vist allerede lavet en Ahead-Of-Time engine så det overholder kravene fra Apple.
Udover dette så er Obj-C så nu ikke meget svære end de andre. Det er bare lidt en anden måde at tænke på. Jeg elsker for eksempel at man i ObjC skal parametres navne når man kalder en funktion. Det gør koden mere læsbar efter min mening.
Første nyhed om Apples IPhone der rent faktisk kan få mig til at overveje at købe en....
Underligt nok er MonoTouch ikke opensource:
http://tirania.org/blog/archive/2009/Aug-03-3.html#comment-13852263
Dele af Mono er under MIT/X11 licens, så dette er muligt for Novell. Mærkeligt hvorfor det gør det, måske kommer MonoTouch til at koste penge.
/Jonas
Fra Miguel de Icaza:
MonoTouch will be commercial software. It is a commercial offering based on the open source Mono engine, with a proprietary license to the runtime and the monotouch libraries.
Så jeg tror at du har ret.
Objective-C er sådan set meget nemt at lære. Men derfor behøver man jo ikke synes det er fedt at være låst til det for at skrive programmer til iPhonen :). Personligt synes jeg ikke om XCode miljøet, og slet ikke deres subversion integration hvis man er mange der committer i samme base. Jeg savner et bedre IDE. Simulatoren er dog cool nok.
Da jeg synes det er lidt træls at hver mobil nærmest har sit eget sprog har jeg kigget lidt efter måder at skrive programmer der kører på flere platforme på. I min søgen stødte jeg på et lille projekt kaldet PhoneGap.
De har fat i lidt af det rigtige synes jeg - i hvert fald hvis man ikke ønsker at skrive apps der kun virker på iPhonen.
Tanken bag PhoneGap er basalt set at det stinker at skulle skrive forskellig kode til Android, iPhone og Blackberry - så hvorfor ikke gøre det mere ensartet.
PhoneGap er ret simpelt endnu, men virker sådan set fint. Dog får man ikke de smarte animationer ved sideskift m.m., så det er ikke helt samme oplevelse som en native app endnu. Men det må kunne løses på lidt længere sigt.
Så for f.eks. iPhonen har man kun ganske lidt Objective-C kode som benyttes til at wrappe et web view så det virker som en native app. Det man som udvikler skriver mest af bliver så xhtml, css og javascript. Der hvor det bliver smart er at API'erne til at tilgå f.eks. lokation, accelerometre, vibrator m.m. er ens på Blackberry, iPhone og Android. Det vil sige at ens PhoneGap programmer faktisk kan køre på 3 forskellige platforme hvor det kun er wrapper koden til web-view'et der er forskellig. Det tanke synes jeg sådan set er meget cool.
Der kræves stadig en del arbejde før det bliver rigtig godt - men det er open source, så folk kan jo bare klø på :)

