HTML5, web programcılığını ayağa kaldıracak birçok heyecan verici özellikle geliyor. Birçok teknoloji kaynağında okuduğumuza göre HTML5 internetin sorunlarını çözecek, HTML5'li web siteleri daha hızlı ve daha şık olacak. Ancak web'de doğal uygulama performansını bekliyorsanız, HTML5'in verebilecekleri beklentinizi karşılamayabilir.
HTML5'in gelişmiş yeni etiketlerinin ve API'larının tadını birkaç sene çıkardıktan sonra, modelde ciddi bazı kısıtlamaların olduğunu itiraf etmenin zamanı gelmiş gibi görünüyor. Bu kısıtlamalardan bazıları, bazen sadece HTML5 ile web'in doruklarına ulaşmaktan alıkoymuyor; HTML5'den uzak durmanızı da gerektirebiliyor.
HTML5 oldukça güçlü yeteneklere sahip olsa da, tüm sorunları çözmüyor. Ek özellikleri onu doğal uygulamalara karşı önemli bir rakip yapsa da, güvenlik sorunları, yerel veri depolama kısıtlamaları ve eşitleme sorunları, spesifikasyondan beklentilerimizi gözden geçirmemizi gerektiriyor.
İlerleyen sayfalarımızda web geliştiricilerinin kabul etmesi gereken 10 HTML5 gerçeğini sizlerle paylaşıyoruz.
HTML5 gerçeği 1: Güvenlik bir kabus gibi
HTML5 gerçeği, 1: Güvenlik bir kabus gibi
İstemci tarafında gerçekleştirilen bilişimde temel problem, kullanıcının makine üzerinde çalışan kod üstünde önemli bir denetime sahip olması. Web uygulamalarına geldiğimizde, birçok ayıklama aracı içeren tarayıcılar sayesinde kötüye kullanım iyice kolay hale geliyor.
Firebug gibi JavaScript ayıklama araçları sayesinde Facebook, Google ve diğer web sitelerinin ne yaptığını merak edenler, kesme noktaları (breakpoint) ekleyerek kodu izleyebilir. Bu, web sitelerinin nasıl işlediği öğrenmek açısından çok iyi olsa da, güvenlik açısından bir kabus gibidir.
Bir değişkenin, değiştirmek istediğiniz bir değer taşıdığını düşünün. Firebug veya diğer tarayıcı ayıklayıcıları, verileri ayarlamanıza izin verecektir. Arkadaşlarınızı kendinizi farklı bir konumda göstererek yanıltmak mı istiyorsunuz? Enlem ve boylamı içeren değişkenleri değiştirmek, böylece tarayıcınızı dünyanın başka bir bölgesine yerleştirmek oldukça kolaydır. Web uygulamalarının tüm hoş özelliklerini değiştirmek mümkündür ve tarayıcı ortamı, bunu normalden de kolay hale getirmektedir.
Oluşabilecek güvenlik sorunlarının bazı sınırları mevcut. Örneğin Google Web Toolkit gibi bazı JavaScript araçları, neredeyse standart derleyiciler kadar karmaşıktır. Bu araçların çıktısı, hemen hemen anlaşılmazdır. Ancak JavaScript Deminifier gibi araçlar burada işe yarayabilir.
Tüm bunların anlamı, istemci tabanlı HTML5 uygulamalarına ciddi güvenlik toplama için güvenilemeyeceği ve herkesin standardın kapasitesini farkında olmasının daha iyi olacağıdır.
HTML5 gerçeği 2: Yerel veri depolama alanı sınırlı
HTML5 gerçeği 2: Yerel veri depolama alanı sınırlı
Tarayıcınız içerisinde gömülü yerel veritabanları, Web uygulamalarının hoş özelliklerinden bir tanesi. Tarayıcı içerisinde masaüstü benzeri bir deneyim yaşamak isteyen kullanıcılar, bu sayede bant genişliğinden tasarruf edebilirler ve performansı artırabilirler. Ancak bu, masaüstü uygulamalarında sağlanan gücü kullanıcılara sağlamayacaktır.
HTML5'deki veri depolama yetenekleri, tabi ki önemli bir yenilik. Ancak veriyi farklı bir makineye taşımanız, kopyalar oluşturmanız, yedeklemeniz veya onu farklı bir uygulamayla açmanız hala mümkün değil. Tüm veriler tarayıcının gizlediği bir yerlerde gömülü bekliyor.
Veritabanını saklamak için tüm sorumluluğa sahip olan sizsiniz, ancak üzerinde hiçbir denetiminiz yok.
Son tarayıcılardan bazıları, makinenizde oluşturulan veritabanları görmenize izin verse de bu bilgi kısıtlı. Safari, veritabanını silmenize izin veriyor, ancak bilgiler arasında dolaşmanız veya taşımanıza izin verilmiyor. Zira bu veritabanları, kolaylıkla taşınacak bir biçimde tasarlanmamışlar.
Bir programcı, biçimi öğrendikten ve bir takım hack'lemelerden sonra bunu yapabilir. Bu veritabanları, hesap tablolarına veya metin dosyalarına benzemediğinden, anlaşılması masaüstü uygulamalarındakilerden daha güç.
HTML5 gerçeği 3: Yerel veriyi değiştirmek mümkün
HTML5 gerçeği 3: Yerel veriyi değiştirmek mümkün
Kullanıcının veri üzerinde denetimi olmadığı gibi, merkezi web sitesi de istemci verileriyle çalışırken zorluklarla karşılaşıyor. Bir çok web geliştiricisi, kısa süreli içeriği önbelleğe almak için yerel veri depolamasını kullanıyor. Eşitleme problemleri, depolama izninin kullanıcıya verilmesine engel oluyor.
Web geliştiricilerinin yerel veritabanı için de endişelenmeleri gerekiyor. Kullanıcı için yerel verileri düzenlemeyi kolaylaştıracak bir araç mevcut olmadığı gibi, merkezi sunucunun buna engel olması da mümkün değil. Bir Greasemonkey kodu veya doğal bir kodu ile veriyi değiştirmek mümkün.
HTML5 gerçeği 4: Çevrimiçi uygulamaları eşitlemek
HTML5 gerçeği 4: Çevrimiçi uygulamaları eşitlemek bir kabus
HTML5 yerel veri depolama özelliği, web uygulamalarına önemli bir işlev katıyor. Tek sorun ise veri eşitlemede.
Bir web uygulaması internete bağlanıyor ise, verileri devamlı olarak buluta kaydedebiliyor. Çevrimdışı durumdayken ise değişiklikler her zaman buluta kaydedilmiyor. Kullanıcı farklı tarayıcı veya farklı makine kullandığında, kopyalar çoğalmaya başlıyor ve eşitleme zorlaşıyor. Daha kötüsü, saatler eşit olmadığında en son kaydedilen veriyi bulup eşitlemek de güvensiz hale geliyor.
Bu, doğal uygulamaların da önemli bir sorunu. Ancak doğal modeldeki fark, eşitleme için kimin sorumlu olduğu: insanlar, dosya adlarına ve tarihlerine bakarak eşitleme sorununu çözebiliyorlar. HTML5 ise tarayıcıların derinliklerinde saklanan veritabanlarına kullanıcının erişmesine izin vermediğinden, geliştiricilerin eşitlemeyi ele alacak bir kullanıcı arayüzü sağlaması gerekiyor. Burada HTML5 spesifikasyonunun bir yardımı dokunmuyor.
Ancak bu, çözülmesi imkansız bir sorun değil. Programcılar, bu sorunlardan sürüm denetim sistemleri ile kurtulabiliyorlar.
HTML5 gerçeği 5: Bulut size hiçbir şey vermiyor
HTML5 gerçeği 5: Bulut size hiçbir şey vermiyor
Verileri bulutta saklamakla ilgili yapısal sorunların hepsini HTML5'in üzerine atmak da doğru olmaz. Zira burada bulutun da önemli yeri var. HTML5'in yerel veri depolama kısıtlamaları nedeniyle web uygulaması verileri sunucularda kalacak ve bu yaklaşımın yıkıcı olduğu zamanlar olacaktır.
Facebook, geçtiğimiz günlerde Linux tabanlı bir eklentiden hoşlanmadığını duyurmuştu. Bunun ardından eklenti kaldırıldı, üstelik onunla yüklenen tüm fotoğraflarla beraber.
Bu tür durumlara sık rastlanmasa da, giderek daha fazla meydana geldiği bir gerçek. Yeni HTML5 uygulamasıyla her şeyi ücretsiz sunan yeni kurulmuş bir web hizmetinin birkaç sene, hatta birkaç ay sonra ayakta kalacağından emin misiniz?
Daha da kötüsü var. Birçok web uygulamasının kullanım şartlarında belirtildiği gibi, bu veriler artık sizin sayılmıyor. Birçok durumda da verilerinizi kurtarmak için yasal bir hakkınız bulunmuyor. Bazı acımasız kullanım şartlarında, verilerin "tamamen sebepsiz olarak silinebileceği" dahi yazabiliyor.
HTML5 gerçeği 6: Zorla yapılan güncellemeler
HTML5 gerçeği 6: Zorla güncellemeler herkese göre değil
Web uygulaması şirketleri bir güncelleme yapmak istediğinde, herkesi aynı anda güncellemek zorundalar. Bunun kullanıcıları yazılım yükleme zahmetinden kurtardığı söylense de, yeni işlevleri istemeyen bir kullanıcı için kabus da olabilir. Yeni yazılımlar, eski özelliklere dayanan paketler ile çalışmayabilir veya sorun çıkartabilir. Bunun yanında bir takım gizlilik sorunları da meydana gelebilir.
HTML5 gerçeği 7: Web Workers ve öncelik desteği
HTML5 gerçeği 7: Web Workers, önceliği desteklemiyor
Web Workers, HTML5'deki en ilgi çekici özelliklerden bir tanesi. Geliştiriciler JavaScript wait, delay ve pause komutlarına dayanmak yerine, kodlarını bölerek Web Workers içine aktarabiliyorlar. Bir başka deyişle HTML5 Web Workers, tarayıcının bir işletim sistemi gibi çalışmasını sağlıyor.
Bununla birlikte işletim sisteminin tüm işlevleri taklit edilmiyor. İş yükünü bölerek ayırma imkanı sunulsa da, yükü dengeli olarak dağıtmak veya öncelikler tanımlamak mümkün değil. API, sadece Worker'a ve Worker'dan mesaj aktarılmasını destekliyor. Gerisini ise tarayıcı yönetiyor.
Bu tür bir işlevin kötüye kullanılması, çok yakın gibi görünüyor. Örneğin web sitelerinin arka planlarında çalışan kod kırıcıları gibi. Kullanıcının bu durumda yapabileceği ey çok az, zira Worker nesnelerinin oluşumunu veya ne yaptıklarını seyretmelerinin imkanı yok.
HTML5 gerçeği 8 ve 9: Biçim, tarayıcı sorunları
HTML5 gerçeği 8: Biçim uyumsuzlukları
audio ve video etiketlerinin kullanımı, başta image etiketleri gibi kolay görünse de tarayıcılar arasında uyumsuzluklar bulunuyor. Bunda HTML5 komitesinin bir hatası bulunmuyor, ancak bazı biçimler, bazı tarayıcılarda çalışırken bazılarında çalışmayabiliyor.
Bu özelliği test etmek için API geliştiricileri tarafından sağlanan canPlayType işlevi bile tüm tarayıcılarda desteklenmiyor.
HTML gerçeği 9: Bazı öğeler tarayıcıya bağımlı
Programcılar, mükemmel bir mimari oluşturmak için ellerinden gelenin en iyisini yapıyorlar ancak malesef bazı etiketler ve nesneler, doğru çalışmıyor.
Örneğin HTML5'in coğrafi konum belirleyen API'sında bir miktar gizlilik sunuluyor, doğruluğu üzerinde de bir miktar denetime sahibiz. Ancak tarayıcılar arasında kararlı bir çalışma malesef sözkonusu değil. Bir tarayıcı, masaüstü PC'de GPS çipi olmadığını tahmin edemiyor ve her zaman zaman aşımına uğruyor.
Sonuç olarak bu, API'nın yapısından ziyade tarayıcıların işlevi yerleştirmesine bağlı bir sorun.
HTML5 gerçeği 10: Donanım farklılıkları
HTML5 gerçeği 10: Donanım farklılıkları yeni sorunlar ortaya çıkarıyor
Tarayıcılar, daha iyi bir performans verebilmek için ellerinden gelen tüm geliştirmeleri yapıyorlar. Ancak bu, her zaman iyi olmayabiliyor.
Microsoft, Canvas nesnesinin performansını IE'de geliştirmek için oldukça çalıştı ve düşük seviye donanım sürücüleriyle entegrasyon sağlayarak bunu başardı. Şirket, geliştirmenin sağladığı gücü göstermek için pirateslovedaisies.com gibi oyunlar bile tanıttı. Ancak bu, programcıların hangi özelliklerin kullanılabildiğine dikkat etmesi gerektiği anlamına geliyor.
Kötü olan ise, kodunuzun ne kadar hızlı çalıştığını bulmanın açık bir yolunun olmaması.
Örneğin pirateslovedaisies.com'un oyun tasarımcıları, IE'deki özellikleri etkinleştiren bir açma kapama anahtarı meydana getirmişler. Peki bu özelliklerin bulunup bulunmadığını söyleyen bir API mı bulunuyor? Malesef hayır. Burada başvurulabilecek en basit yol, tarayıcının ismine bakarak kare oranını tahmin etmek.
Doğal oyun geliştiricileri, senelerdir geniş yelpazede bulunan donanımlarla uğraşıyorlar. Ve çözüm olarak tek yol ise yeniliğe engel olmak. Bu da, web geliştiricilerinin karşısında duran diğer bir sorun.