Bilmek istediğin her şeye ulaş

Native uygulama ne demektir?

Özellikle mobil platformlarda platformun türüne göre kullanilan uygulama geliştirme dili farklılık gösterir. Örneğin iOS platformunda Objective C dili platformun resmi dilidir. Android ise java tabanlı olarak ilerler. Bu platformlarin kendi resmi dilleri kullanilarak kodlanmış uygulamalara Native Uygulama denmektedir. Native uygulama her zaman daha performanslı, daha hızlı ve görsel olarak çok daha çeşitlidir ancak her yeni platform çıktığında sıfırdan bu dilleri öğrenmek yerine bu platformlara dönüşüm gerçekleştiren ara derleyici katmanları ya da bu platformlarda çalışan javascript tabanlı yani native olmayan kütüphane ve diller de vardır (mono, phonegap, vb.). Bunları kullanarak da hali hazırda zaten bildiğiniz dillerle geliştirme yapabilirsiniz. İşte o zaman native olmayan uygulama geliştirmiş olursunuz.
  • Paylaş
4

Gökhan Örün@serkan bildiğim kadarıyla mono'da .Net ile yazıyorsun ama sonunda Java ya da Objective C olarak yani native uygulama olarak çıkartıyor eğer öyleyse onlara da native uygulama diyebiliriz ve native kadar performanslı da çalışır tek dezavantajı hiç kullanmadım ama tahminimce kendi geliştirme araçlarına göre aslında birçok işi daha uzun ve karmaşık yoldan yapıyor olabilirsiniz. Yine de sık sık farklı küçük uygulamalar çıkartıp satmayı planlıyorsanız kesinlikle tavsiye ederim. Ama uzun süre tekrar tekrar geliştirmeyi planladığınız ve kullanıcıya en üst düzeyde memnuniyet vermeyi planladığınız bir girişiminiz varsa kesinlikle native yazın. HTML5 ve phone gap'i hiç tavsiye etmiyorum :))

Serkan Köse, Mono'yu araştırdığım kadarı ile -en iyisi bu zaten native olmayan platformlarda- bu dönüştüme işleminde native koda çeviriyor olsa dahi malesef native kodun performansına ulaşamıyor. Aynı şey herhangi bir dili başka bir dile çeviren tüm katman veya kütüphanlerde geçerli (Fortran to C, Phyton to C# gibi). Temelde algoritma yazımı basit olan uygulamalarda bu problem olmayabilir ama kompleks uygulamalarda bu performans farkı öne çıkıyor. Benim tavsiyem her zaman native, ama olmuyorsa başka platformlar, mono olabilir.

Serkan Köse, Şöyle bir şey buldum bu arada, işe yarar:

First, a clarification: on Android, the code is not executed by Java runtime, but by Dalvik (written from scratch by Google). Thus, the Java VM performance is of no relevance to this question.

With this in mind: most programs on Android don't execute native code, but run on Dalvik VM (which runs the translated Java bytecode). The Mono JIT has been benchmarked against it before and was consistently been found faster (check for example koushikdutta.com/2009/01/dalvik-vs-mono.... ).

On iOS, MonoTouch has to pre-compile the code into a native application before it can be installed on an Apple device (because of license restrictions, which are enforced by the Operating System). That said, both Objective C compiler and Mono's Ahead Of Time Compilation use the same LLVM backend for generating and optimizing the binary code, so the results you will get should be almost identical (with some memory overhead for Mono).

Please remember one important quote from Donald Knuth: "Premature optimization is the root of all evil." Write your code with performance in mind, but remember that maintainability is more important. Optimization should be done only when it's necessary (because usually the compiler will do a much better job than you can).

Serkan Köse, Bu arada buna da bir gözat istersen bu arada ben de araştırıyorum da.. whitneyland.com/2013/05/why-i-dont-recom...