Uygulama Diline Nasıl Karar Vermeliyiz
Mobil uygulama geliştirmeye karar verdik diyelim. Bu noktadan sonra ortada bir soru işareti oluyor.
Ne tip bir uygulama geliştireceğiz?
Native bir mobil uygulama , Mobil Web Uygulaması veya Hybrid bir uygulama mı geliştirmeliyiz sorunsalı hep tartışma konusu olmuştur ve her bir türün kendine göre avantaj ve dezavantajları bulunmaktadır.
Peki asıl soruya gelelim. Bunların arasında ne gibi farklar bulunmaktadır?
Native uygulamalar ilgili platformu destekleyecek ve böylece sadece hedeflenen platformda çalışması için geliştirme araçları ve dilleri kullanılarak geliştirilen uygulamalardır. Biraz daha detaylandıracak olursak native iOS uygulamaları için XCode ve Objective C, Native Android Uygulamaları için Eclipse,Android Studio ve Java , Native Windows Uygulamaları için ise Visual Studio ve C# kullanılır.
HTML5 uygulamalar, çoğunlukla tarayıcılar üzerinde çalıştıklarından çok fazla çeşit cihazda çalışan cross-platform uygulamaları olarak tanımlanabilirler. Geliştiriciler HTML5, JavaScript ve CSS gibi standart web teknolojilerini kullanarak karmaşık uygulamalar geliştirebilirler.
Hybrid uygulamalar da ayrıca HTML5, JavaScript,CSS gibi standart web teknolojileri kullanılarak geliştirilen mobil uygulamalardır. Mobil Web Uygulaması ve Native mobil uygulama kavramlarını birleştirerek cihaz fonksiyonlarına JavaScript ve Html5 ile erişilebilmesini sağlar.
Gelin şimdi bunları yakından inceleyelim ve herbir seçeneğin avantajlı oldukları durumlara ve dezavantajlı oldukları durumlara bakalım.
Native Uygulamalar
Native uygulamalar en yüksek performans oranına sahip uygulamalardır ve performansı artırmak için donanım kaynaklarını tamamen kullanırlar. Herhangi bir network bağlantısı yokken bile çalışmaya devam edebilirler. Uygulamalar bulundukları platformun uygulama mağazası aracılığıyla potansiyel kullanıcılara daha iyi bir görünürlük sağlayarak dağıtılmaktadır. Native olarak geliştirilen bütün uygulamalar o platform için geliştirilmiş olan en son API leri kullanıyor olacaktır. Bu uygulamalar geliştirilen platformun desteklediği programlama dili kullanılarak geliştirilmiştir. Buna özel geliştirilmiş bir IDE’ye ve geliştirme ortamına sahiptirler. Dolayısıyla uygulamanın debugging kısmı daha hızlı bir şekilde gerçekleşir. Linkedin başlangıçta HTML5 ile geliştirilmiş olan ve daha sonra Native olarak geliştirilmeye geçilen bir uygulamadır. Diğer bir örnek ise Facebook.
Buraya kadar native uygulama yazmanın avantajlarından bahsettik. Şimdi gelin biraz da dezavantaj oluşturduğu durumlara göz atalım.
Kendi açımdan bakacak olursam olaya tek dezavantaj olarak bütün platformlar için native uygulamalar geliştirmek demek önemli miktarda bir bütçe demektir diyebilirim.
HTML5 Mobil-Web Uygulamalar
HTML5 mobil uygulamaları normal web uygulamalarına son derece benzerdir. Tek fark daha küçük ekranlarda çalışmak için yapılırlar. Uygulamaların dağıtımları son derece kolaydır. Web uygulamınızı web server ınızda yayınlarsınız ve kullanıcılar kendı tarayıcıları aracılığıyla kolaylıkla uygulamaya erişebilirler. JQuery Mobile, Sencha Touch gibi son derece güzel mobil IU framework ler bulunmaktadır. Bu uygulamalar browser üzerinde çalıştığından neredeyse her platform içerisinde kullanılabilir durumdadır. Günümüzde bütün akıllı telefonlar bir tarayıcıya sahip olduklarından şaşırtıcı bir durum değildir. Uygulama geliştirme ve test etme süreci de aynı şekilde kolaydır. Avantajlı taraflarından bahsettik. Sanırım bu kadarı yeterlidir. Şimdi gelin dezavantajlarına bakalım. Bu uygulamaların native fonksiyon özelliklerine erişim gibi bir durumları bulunmamaktadır. Performansları native uygulamalar gibi ideal durumda değildir. Aslında her şeyin ötesinde en önemli sorunları native uygulamaların offline mod durumda sizlere sağladıkları gibi bir uygulama deneyimi sağlayamazlar. Bu durumlar için network bağlantısına ihtiyaç duyarlar.
Hybrid Uygulamalar
Geliştirme kısmının çoğu cross-platform web teknolojileri ile yapıldığından daha hızlı bir uygulama geliştirme durumundan bahsedebiliriz. Yapımında native katmanlara erişim ihtiyacı oluşursa az miktarda native kodlama da bulunmaktadır. Bu yüzden sadece ufak biz kısmı platform a özgü olarak kodlanmak durumundadır. Aslında bu geliştirme zamanının ve buna bağlı olarak ortaya çıkan masrafın azaltılması anlamına gelmektedir. Bu sayede her bir platform için aynı özelliklerin implemantasyonun dan çok yeni özelliklere odaklanılabilir.
Burada Javanın mottosu olan ‘Write Once, Run Anywhere’ durumu geçerli gibidir.
Hybrid uygulamaların geliştirilmesi için kullanılan geliştirme araçları native uygulamalarınkiler kadar gelişmiş durumda değildir. Ancak bu konu da sürekli iyileştirmeler yapılmaktadır. Hybrid uygulamalar için de ayrı ayrı mobil platform mağazalarına cıktı alınmalıdır. Native katmanlara erişebilirler ve offline mod da iken de çalışabilirler. Netflix bu durum için güzel bir örnek olarak gösterilebilir.
Hybrid uygulamalar native kısımlar bulundursalar da native uygulamalar değildirler. Platformun sahip olduğu web engine vasıtasıyla çalıştıklarından native uygulamalara nazaran performansları dusuktur. Ancak bu durumda platformlarda ki gelişmelere bağlı olarak düzelmektedir.
” Hangisini seçeceğiniz tamamen sizin uygulamanızın neler sunduğuna , ve kullanıcıların sizin uygulamanızdan neler beklediğine bağlı bir durumdur.”
Kaynak: sedattelli.com