2013-05-17 13 views
7

Ho recentemente scelto di imparare C# e sviluppare app mobili utilizzando C# su Xamarin. In particolare per lo sviluppo di Windows Phone e Android. So che lo sviluppo di app per Windows Phone è principalmente C# e che Xamarin può compilare codice nativo per Android, ma come si confronta con lo sviluppo nativo in Java? Sarò in grado di utilizzare OGNI o almeno la maggior parte (come il 90% +) dell'SDK Android e le estensioni utilizzando Xamarin?In che modo Xamarin per Android (Mono per Android) è paragonabile allo sviluppo nativo di Android?

+0

Probabilmente puoi passare un po 'di tempo a leggere la documentazione di Xamarin. Ecco il link- http://xamarin.com/. – Anukool

+1

Nulla può avere luogo nel codice nativo :) –

+1

Xamarin sul loro sito Web: Xamarin.Android fornisce l'accesso completo alle API Android standard. –

risposta

1

è possibile utilizzare tutte le funzionalità di Android e l'interoperabilità di libreria java. inoltre, si ottiene il vantaggio di non specifici di Windows .net compreso linq.

3

Non ho fatto alcuna statistica o studio sulla copertura Xamarin C# dell'API Android Java, ma nel mio lavoro, tutto ciò di cui avevo bisogno durante il porting di codice da Java a C# era lì. Inoltre, Xamarin dice che per le nuove versioni di Android SDK di solito hanno rilasciato controparti C# entro 24 ore. E, come notava @dotToString, è possibile aggiungere librerie jar Java al progetto Xamarin C# ed effettuare chiamate su di esse, se necessario.

Le prestazioni sono un'altra cosa: non credo che funzioni nativamente su Android. Piuttosto, Mono runtime interpreta in qualche modo il codice byte. Ho fatto qualche confronto di Java vs. Xamarin C prestazioni # codice su codice di vita reale, vedere più al:

Does anyone have benchmarks (code & results) comparing performance of Android apps written in Xamarin C# and Java?

Greg

+2

L'istruzione 'Mono runtime è in qualche modo l'interpretazione del codice byte' non è vera. –

+1

@MarkLopez: se lo conosci meglio, spiega cosa fa esattamente. Molto probabilmente la compilazione "Just-in-Time" di .NET pcode in codice nativo, prima di eseguire - cosa - l'intera app, o un particolare modulo, o una funzione alla volta? – gregko

+1

In esecuzione ci sono due runtime separati quando si esegue un'applicazione monodroid, una versione ridotta del CLR di .NET e l'Android Dalvik VM nativo. Il runtime .NET è ospitato all'interno del runtime mono (Mono.Android.Platform.ApiLevel_XY.apk) che viene distribuito con la tua app monodroid. È questo runtime monodroid che mantiene sincronizzati .NET CLR e Dalvik VM (creazione e distruzione di oggetti). – samosaris

7

La cosa principale che credo ci sia da considerare è il vostro linguaggio di programmazione preferito - che nel tuo caso è C# e l'uso. L'unica cosa che mi preoccupa quando costruisco un'applicazione in C# come opposto a Java è che non sono tanti i riferimenti di terze parti da usare come con Java. Ti ritroverai a scaricare i file di esempio e a decodificarli per imparare come fare nuove funzionalità, dovrai cercare molto più nell'intelligenza per scoprire cosa sta usando qualcosa se puoi trovare solo un esempio basato su Java di qualcosa. Una cosa che troverete è che di solito può essere solo lo stesso metodo di ciò che è in Java, ma la prima lettera è in maiuscolo. LINQ è un grande vantaggio che trovo nella manipolazione dei dati che non è disponibile in Java.

Buona fortuna con qualsiasi cosa tu scelga, James