Html ve Javascript ile mobil/desktop/web uygulama geliştirme

Html ve Javascript ile mobil/desktop/web uygulama geliştirme

Bayrak sallatan javascript’den günümüze

98 yılıydı. İsmini hatırlamadığım bir dergide(hustler değildi) web sayfası ile ilgili bir yazı okumuştum. NotePad’i açın şu kodları yazın ve siteniz hazır!!. Pascal’da uzman bir adres defteri programcısı olarak devem ederken bunu görünce şaşırmıştım.

Hakkı Öcal hocamın kitapları sayesinde de ilk web sitemi yaptım ve artemis.efes.net üzerinden yayınladım..

Uzun yıllar geçti. Arada, java ve c++ öğrenme heveslerim hep “hello word” seviyesinde kaldı. Çünkü elimde bu işe başlamayı gerektiren bir proje ve zorlayıcı bir etken hiç olmadı.

Uzman programcıların hor gördüğü binlerce kaka php programcısından biriydim ama sorun değildi çünkü yarım yamalak da olsa piyasanın ihtiyacı olan bir dil üzerinde sonuca ulaşan işler yapıyordum. Sanırım sihirli sözcükler bunlardı : “sonuca ulaşan işler”

Php ve js büyüdü ve serpildiler ama köyden geldikleri için şehirli, iyi eğitimli c++, java ve c# cıların havasına ve kalitesine hiçbir zaman erişemediler.

Ama kader ağlarını örüyordu…

Bulut kavramının ortaya çıkması ve mobil dünyanın çılgınca büyümesi bazı şeyleri değiştirdi ve değiştirmeye devam ediyor. Sahada olanların bileceği gibi kimse size hangi altyapıyı kullandığınızı sormuyor ama ne kadar ilgisiz olursa olsun yazdığınız programın cepte yada tablette de çalışıp çalışmayacağını soruyor.

Dil kavgaları yapmak istemiyorum çünkü beni burada ehli Java ve ehli c# cılar döver. Ama bazı şeyleri de deşelemek gerekiyor.

Şöyle bir senaryomuz var:

Şirketimiz için üretim takip programı yazacağız.

Depoda gezici olarak veri girişi yapanlar var, masa başı veri girenler var, sahadaki pazarlamacılar var, otomasyona bağlı üretim bandında operatörler var, arge bölümünde tasarımcılar ve hava alanında beklerken canı sıkılıp anlık üretimi görmek isteyen patronlar var.

Sistemin windows ,mac ve linux ortamında çalışmasını istiyorsunuz. Aynı zaman pocket pc ile depocunuzu da düşünmelisiniz. Patron ios, pazarlama elemanı android kullanıyor. Diğer pazarlamacının sevgilisi Windows Phone’lu bir telefon almış. Üretim bandında da seri portdan gelen verileri çekip programa girmeniz gerekiyor.

Hangi dili seçmeliyiz? Hangi platformu seçerseniz seçin her yerde çalışabilecek bir çözüm bulamazsınız. Bunun için en ideal dil olan java’yı seçtiğinizi varsayalım. Windows, linux ve mac ortamlarında programınızı çalıştırırsınız ancak web ve mobil ortamları için ayrı birer sistem yazmanız gerekir. Bunun için de ayrı kaynak, ayrı zaman ve ayrı maliyetler gerekli.

Peki tüm platformlarda çalıştırılabilir bir sistem var mı?

Evet var. html + javascript

Tabi javascript’i yalın haliyle alıp büyük bir işe girmek biraz zor. Bunun için bize gerekli olan en iyi araç kiti : angular.js (hatta TypeScript kullanarak Angular 2 kullanmak).
Angular.js ile yapıyı oluşturacağız ve artık programımız sadece js+html den oluşacak. Veri işleme ve database işlemlerini de XHR istekleriyle back-end(Rest api destekli bir sunucu Php,Asp,Python,Go,Node.js …) sunucuya bırakacağız..

Peki tamam da nasıl olacak?

Web uygulaması

Oluşturduğumuz Js+html dosyaları bir web sunucuya yüklediğimizde programımız artık herhangi bir browser üzerinden çalıştırılabilir hale gelecek.

Masaüstü Uygulama

Diyelim ki programımız seri porttan veri okuyacak ve kullanıcı bu veriye göre değerleri kaydedecek. Web browser üzerinden böyle bir işlem gerçekleştiremeyiz. O zaman?

O zaman devreye Nw.js (veya electron.js) giriyor. Cross platform olarak çalışan ve aslında google chrome tarayıcı(chromium) içeren bu sistem sayesinde html+js dosyalarınızı masaüstü program olarak çalıştırabilirsiniz. Peki seri portu ne yapacağız?
nw.js içerisinde node.js’yi barındırıyor. node.js ise javascript ile sunucu tabanlı uygulamalar yazabileceğiniz bir platform. Node.js ile tüm sistem kaynaklarına erişebilir ve normal bir dille yaptığınız her şeyi(~) javascript kullanarak gerçekleştirebilirsiniz.

Nw.js’nin kötü taraflarından biri programın büyük olması.Sıkıştırılmış haldeki bir nw.js uygulaması yalın haliyle 50Mb civarında yer kaplıyor.

Bir diğer dezavantajı(ya da avantajı) da kodun açık halde bulunması.Yani isteyen herkes html+js kodlarınızı okuyabilir. Tabi asıl işlemler back-end tarafında yapılacağından güvenlik için ekstra bir risk oluşturmaz.

Mobil uygulama

Gene oluşturduğunuz html+js dosyalarınızı kolayca mobil uygulama haline getirebilirsiniz. Bunun içinse ihtiyacımız olan tek şey cordova.js. Cordova hibrit uygulamalar geliştirmenizi sağlayan bir platform. Cordova ile mobil cihazınızın tüm donanım ve yazılım özelliklerine erişebilirsiniz. Yani yazdığınız program aynı zaman pazarlamacının mobil telefonunda tabletinde çalışır. Ve işin en güzel yanı; ister android, ister ios, ister windows… Muhteşem.

Hibrit uygulamalar native uygulamaların yanında performans olarak yavaş çalışır. Ancak mobil işlemci ve belleklerin gelişmesi sayesinde belki bu hız sorunu gözardı edilebilir

Zamanın, bayrak sallamak için kullanılan javascript’i nerelere geldi.

Back-end

Backend için client-server uygulamalarda php + mysql kullanıyorum. Silex+composer, ufaktan büyüğe her türlü işimi kolayca ve organize bir şekilde halletmem için yetiyor.

Backend için diğer alternatif go dili. Bana kalırsa 3–5 yıl içinde bu dili çok ama çok daha fazla konuşuyor olacağız.