Native-Html5-Hybrid Mobil Uygulama Geliştirme Diline Karar Vermek

Merhaba Arkadaşlar,
mobilhanem.com sitemiz üzerinden anlattığımız/yayınladığımız derslere bu derste mobil uygulama geliştirmeye başlarken hangi method(native,hybrid,html5) ile uygulama geliştirmemiz gerektiğini hangi methodun hangi durumlarda mantıklı olduğundan bahsedeceğim.Özellikle uygulama geliştirmeye yeni başlayan arkadaşların hangi methodu öğrenirse avantajlı olacağından söz edeceğim.

Bildiğiniz üzere mobil cihazlar artık hayatımızın değişmez bir parçası.Bilgiye ve eğlenceye en kolay ulaşma yolu olan mobil cihazların kullanılma oranı ve kullanılan cihaz sayısıda inanılmaz bir hızla arttığı bu yıllarda aynı oranda geliştirilen uygulama sayısı ,geliştirilen uygulamaların kalitesi ve uygulamaların kullanıldığı alanlarda bi o oranda artmaktadır.Bu oranın artmasıda bir çok yazılım firmasını da mobil uygulama geliştirme alanına yöneltmektedir. Kimi firmalar kendi uygulamalarını yazarken kimi firmalar ihtiyaç duyan başka firmaların uygulamalarını yazmaktadır.

Peki bu yazılan uygulamalar hangi methodlarla, hangi dillerle yazılmaktadır veya yazılmalıdır.

Uygulamalar üç farklı yolla yazılabilir.

1-Uygulamanın cihaza özgü native (doğal) dille yazılarak sunulması.

Native Dille yazılmış bir uygulama,  belli bir platforma özel, genellikle platform sağlayıcısının belirtmiş/üretmiş  olduğu platform SDK’sı, araçları ve programlama dili yardımıyla geliştirilmiş uygulamadır. Android için->Java dili,Android Studio IDE, iOS için ->Objective-C,Swift dilleri XCode IDE, Windows Phone için -> C# dili Visiual Studio geliştirme ortamı kullanılmaktadır.Bu dillerin dışında başka bir dille Native uygulama geliştiremezsiniz.

Uygulamalar Platformların Uygulama Store’larından indirilebilir.Android için Google Play,iOS için AppStore,Windows Phone için Windows Phone Store dan indirebilirsiniz.

2-Uygulamanın HTML5, CSS3, Javascript gibi web teknolojileri ile yazılarak browserlarda çalışacak şekilde sunulması (Mobil Web Uygulaması).

Mobil cihazların tarayıcıları ile siteye girdiğimiz zaman tarayıcı user agent’ına göre mobil tarayıcı olduğunu anlayıp ona göre web sitesi değilde uygulama şeklinde yazılmış web uygulaması açılır. (Bunun yerine Responsive site tasarımı’da tercih edilebilir.Hem daha pratik hemde daha az maliyetlidir.)

Storelar’dan indirilemez. Tarayıcılar vasıtası ile erişilir.
3-Uygulamanın hybrid olarak,yani yukardaki iki platformu ortak kullanılarak hazırlanan uygulamalardır. Mobil Web gibi HTML5, CSS3, Javascript gibi web teknolojileri ile yazılır.Bu yazılan uygulama native uygulama componentları içinde çalıştırılır. Aslında daha basitçe açıklamak gerekirse native uygulamalar içinden erişilen mobil web uygulamalarıdır. JQuery Mobile ,Sencha Touch,Titanium gibi javascript kütüphaneleri ile geliştirilmektedir. Mobil web uygulamalarından farkı, cihaz özelliklerini daha fazla kullanabilir ve storelar’dan indirilebilir olmasıdır.Tercih edilme sebebi ise bir kez yazılıp tüm mobil cihazlarda çalıştırılmasıdır.

Peki biz hangisini öğreneceğiz yada hangisi ile uygulamamızı geliştireceğiz.Kime sorsak kendi bildiği teknolojiyi savunmakta ve daha avantajlı olduğunu anlatmaktadır. Bende sizlere hem native ios,android uygulaması yazan hemde Sencha Touch ile hybrid ve mobil web uygulaması geliştiren biri olarak kendi fikirlerimi söyleyeceğim.

Mobil Web aslında tam olarak bir mobil uygulama değildir. Mobil tarayıcılar üzerinden ulaşılan mobil uygulamalara benzetilmiş web siteleridir. Zaten uygulama olarak indirilip kurulamaz. Sadece tarayıcılar üzerinden ulaşılabilinir ve cihaz özelliklerinin (sensör,kamera,database) tamamını kullanamaz.İnternet bağlantısı olmayınca zaten erişim olamaz. O yüzden Mobil Web Uygulamalarını biraz daha konu dışı tutuyorum ve Mobil Web uygulaması yazmayı düşünenlere Responsive site tasarımını öneriyorum. Hem daha az maliyet hemde web sitesinin tüm içeriğini sunma fırsatı veriyor.

Hybrid-vs.-Native-Mobile-Apps

Gelelim native mi hybrid mi?

Bunu iki şekilde değerlendireceğim.

1- Uygulamayı Hangisi İle Yazmalıyım?

Buna karar verirken birden fazla kritere bakılabilir. Uygulamanın içeriği,kullanacağı cihaz donanımları,uygulama geliştirme süresi,güvenlik riskleri bir çok açıdan ele alabiliriz. Hybrid uygulamanın bir çok avantajı vardır.

Bu avantajları şu şekilde sıralayabiliriz.

  • Daha kolay yada öğrenmesi daha kolay dillerle yazılması
  • Daha kısa zamanda tüm platformlara geliştirme yani daha düşük maliyet
  • Anlık güncelleme imkanı
  • Düşük bakım ve güncelleme maliyeti

Dezavantajları

  • Performans ekskliği.Native uygulamalar kadar hızlı çalışmaması
  • Grafiksel yetersizlik
  • İşletim sistemlerinin yeni sürümleri ile olan uyuşmazlık
  • Her bir javascript kütüphanesinin farklı IDE kullanması

Bu avantaj ve dezavantajlar göz önüne alınarak seçiminizi yapabilirsiniz. Ama şunu unutmayın örneğin Android bir güncelleme yaparken Sencha kütüphanesini göz önünde bulundurmaz.Yani Android’in 4.0 sürümünde çalışan bir özellik 4.1 sürümünde çalışmıyor olabilir. Bu benim Sencha ortamında geliştirme yaparken yaşadığım en büyük sıkıntıdır. Cihazlar sürüm yükselttiği zaman hybrid uygulamalara güncelleme yapmak gerekiyor. Bu da extra sorun yaratıyor.

Bu konuda benim şahsi görüşüm Native uygulama geliştirmenizdir.Native uygulamalar her zaman daha stabil ve esnek yapıda çalışmaktadır.Ayrıca geliştirme aşamasında çok daha fazla kaynak bulabilirsiniz.

2- Hangisini öğrenmeliyim?

Mobil uygulama geliştirmeye karar verdiniz. Araştırmalarınızı yaptınız ama kararsız kaldınız. Hangisi ile yazmalıyım? Hangisi benim kariyerim açısından iyi olur ? Bu konuda size cevabım net bir şekilde Native uygulama gelliştirme öğrenmeniz olacaktır.Neden diye sorarsanız size çok basit bir yol göstereceğim. Kariyer.net sitesini açın ve bakın kaç firma Native uygulama yazan ,kaç firma Cross Platform yani hybrid yazan geliştirmeci arıyor. Zaten bu dediğimi yaptıktan sonra bana hak vereceksiniz.

Ayrıca şunuda unutmayın örneğin Titanium ile geliştirme yapmayı öğrendiniz. Bu sencha ile uygulama yazabileceğiniz anlamına gelmez. Onu ayrıca öğrenmeniz gerekecektir. Bunların yanı sıra Hybrid uygulama geliştirmek için az da olsa native uygulama geliştirmeyi bilmeniz gerekmektedir.

Tüm bunları göz önüne alarak başlangıç için önce native uygulama geliştirme konusunda tecrübe edindikten sonra hybrid öğrenebilirsiniz.Ama önce native olarak uygulama geliştirme konusunda uzman hale gelmelisiniz.

Arkadaşlar bu dersimde anlatıcaklarım bu kadar. Eklemek istediklernizi yorum bırakırsanız sevinirim. Sizlerden ricamız facebook.com/mobilhanem sayfamızı beğenmenizdir.Bir dahaki dersimde görüşmek dileğiyle.

 

 

41

Taha Kırca

iOS & Android & Apple Watch Developer, Mobilhanem.com yazarı, Karadeniz Uşağu, Ordu Sevdalısı

12 Yorum

  • hocam bu durumda hybrid olmayan sadece native olan uygulamalar google play store a ya da windows phone store a eklenemiyor mu ?

    • Native ve Hybrid uygulamalar storelara eklenebilir tabikide. Ama android için yazdığın native uygulama sadece Google Play’e eklenir ,Windows Store’a eklenmez.

      • peki hocam android için yazmak ne demek?)) .. pek bilmiyorum bu konuyu ama öğrenmek istiyorum

        android için yazdığımız bi native uygulamayı, windows phone içinde yapmak için yapmamız gereken değişiklikler fazla mı? yoksa 1-2 kodla halledilebiliyor mu ?

        • Native yazıyorsan iki platform için tamamen ayrı olarak yazıcaksın. Ama Hybrid teknolojilerinden birini kullanacaksan eğer(titanium,sencha,jquerymobile) bunlarda az bir farkla iki platform içinde hazırlarsın ama… “Ama”sıda yukardaki yazımın içeriğinde zaten var.

  • merhabalar
    ben zaten html biliyorum dolayısı ile native uygulama yazmak farklı bir dil öğrenmek açısından daha iyi olacaktır diye düşünüyorum doğru mudur?

  • Native tasarım konusunda çok zorluyor. Hibrit kullanım tasarımı html ile düzenlemek daha kolay gibi duruyor. Bu yüzden tasarımda hibrit donanımda java ile desteklemek daha kullanılabilir sanki.. Bir de şu andaki uygulamların hibrit mi native mi olduğunun anlamanın yolu var mı?

    • Native uygulamalarda bildiğim kadarıyla Flexbox kullanılıyor. Dışardan bakıldığında zor gibi duran, alışılmış düzenden biraz daha farklı bir teknoloji. Ben flexboxin5.com’ dan öğrenmiştim. Belki size kolaylık açısından yardımcı olabilir.

  • Merhabalar,
    Yazınızı gayet güzel buldum. Ben de native uygulama geliştirmek isteyenlerden biriyim. Bunun için kolları sıvadım, React-Native ve React JS öğrendim. Ancak android uygulama geliştirmek için react native henüz çok yeni ve yeterli kaynak yok internette. React-Native IOS için daha gelişmiş durumda gözlemlediğim kadarıyla. Sizden ricam Android için React-Native dersler,örnek kodlar yada tutorial koymanız mümkün müdür ?

    Yanlışım varsa lütfen düzeltiniz. Bu beni geliştirir. Teşekkürler.

  • Cross platform uygulamalarının tümünü hybrid olarak görmek doğrumu? Xamarin lede tek bir dille cross platform uygulama geliştiriyorsunuz fakat %100 native olduğu söyleniyor. Merakımdan soruyorum.

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?