Hybrid ve Native uygulama geliştirme

Davut
iOS.development.turkey
3 min readJul 16, 2017

Bir aylık araştırmanın ardından hybrid uygulama geliştirme hakkında görüşüm.

Stajımı yaptığım yazılım şirketi yeni bir proje aldı. Projeyi veren kurum projenin hybrid olmasını istiyordu. Yaklaşık 25 günlük araştırmanın ardından hybrid ve native uygulama geliştirme ile ilgili şirkette bir sunum yaptım. Bu sunumu sizlerle de paylaşmak istedim.

Native ve Hybrid uygulama geliştirmenin ne olduğunu öğrenerek başlayalım.

Native

Platform’un bize verdiği dil ve IDE ile uygulama geliştirmek. Örnek olarak; Eğer Native iOS developer iseniz Apple’ın bize verdiği dil olan Swift ya da Objective C bilmeniz ve IDE olarak Xcode kullanmanız gerekir ya da Native Android developer iseniz Google’ın bize verdiği dil olan Kotlin ya da Java bilmeniz ve IDE olarak da Android Studio kullanmanız gerekir. Bu diller ile yazılan uygulamalar Native’dir.

Hybrid

HTML5, CSS ve JavaScript kullanılarak yazılır. Tek kod ile bütün platformlara geliştirilebilir. Cross-platform(çapraz platform) uygulama geliştirme olarak da bilinir. Tüm platformlar için aynı sonuç üretilir ve tek kod ile native’e benzer bir uygulama geliştirilebilir.

Bunun çalışma şekli şu şekilde, sizin yazdığınız uygulamayı platformda bir webViewde çalıştırıyor yani telefonda browser’ı(tarayıcıyı) full screen kullanıyormuş gibi düşünebilirsiniz tabi üstte link yazdığımız yer olmadan, geri ve ileri gitme butonları olmadan, browserden daha hızlıdır ve local API’lere ulaşabiliyorsunuz.

Neden Native yapıyoruz o zaman?

Peki Hybrid ile bir kere yazıp bütün platformlarda çalıştırabiliyoruz da niye Native yapıyoruz?

Neden Native?

Her zaman en iyi performansı verir, o platformla ilgili bütün API’lere ulaşabilirsiniz, daha fazla kaynağa ulaşabilirsiniz, bir sorunla karşılaştığınızda soracağınız yerler her zaman daha fazladır.

Dezavantaj

Sadece tek platformda çalışır, maliyetlidir mesela bir şirket iseniz hem iOS hem Android developer’leriniz olması gerekir, ios için Mac’ınız olması gerekir, Xcode kullanmanız gerekir swift ya da objective c bilmeniz gerekir, Anroid ise Android studio olması gerekir ve java ya da kotlin bilmeniz gerekir.

Neden Hybrid?

Hybrid ile tek kod yazıp bir kaç platformda uygulama geliştirebilirsiniz, maliyeti daha düşüktür yani tek dil bilmeniz yeterli, bir IDE kullanma gibi zorunluğunuz yok, test için bazılarında xcode ve android studio gereklidir. Şirket iseniz tek developer ile bütün platformlara uygulama geliştirebilirsiniz ve en kısa zaman da uygulamanız hazır hale gelir, deployment time’in (uygulamayı compile etme süresi) hızlı olması ve tek kod ile bütün platformlara uygulama geliştiriyor olmanız en büyük avantajlarındandır.

Hybrid’i sadece mobil ile kısıtlamamalıyız, şu an da desktop için uygulama geliştirebileceğiniz framework’ler de vardır örnek olarak electron’u verebilirim electron ile Mac, Windows ve Linux’a uygulama geliştirebilirsiniz.

Dezavantaj

Native kadar hızlı değildir, performansı düşüktür web site gibi çalışıyor olmasından kaynaklanarak, tüm kütüphanelere erişim yoktur bunu her hybrid uygulama geliştiren framework’ler kendilerine göre sağlamaya çalışmaktadır, işletim sisteminde farklı sürümler olması veya android’te bir çok farklı telefon türü olması bazılarında çalışmama gibi durumu olabiliyor, App Store native olmadığını anladığı uygulamayı kabul etmez mesela sadece bir webView’dan oluşan ve farklı bir işleme sahip olmayan uygulamanız var ise bunu App Store kabul etmez. İşletim sisteminin yeni sürümü çıktığında kullanılan framework’un yeni sürüme göre güncellenmesi gerekir. Uygulamayı store’a yüklemeniz için gene xcode ve android studio’ya ihtiyacınız olacaktır (.ipa ve .apk oluşturabilmek için).

Şu anda hybrid uygulama geliştirme framework’leri arasında en çok bilinen ve en iyi performansı veren bir kaç framework için bu yazımı okuyabilirsiniz. Aynı zamanda bu blogun devamıdır.

Vakit ayırarak okuduğunuz için teşekkürler. Bir yanlışım var ise veya bir bilgi vermek isterseniz yorum yapmaktan çekinmeyin.

şimdilik bu kadar bir daha ki blogda görüşmek üzere… 🤗

🙌🏻 👋🏻

--

--