Bir programlama platformu olarak Mozilla

0
tongucyumruk
Çoğu zaman Mozilla'nın (veya benim taktığım isimle "ailenizin browser'ı Mozilla, kısaca Moz") ismi sadece browser, arada bir de Mail&News programı olarak anılır. Daha da az anıldığı bir konu ise bunların sadece buzdağının görünen kısmı olduğudur. Buzdağının gerçek boyutları ise yalnızca hayal gücünüzle sınırlı. Mozilla tarihteki gelmiş geçmiş tüm browserlar arasında bekide en genişletilebilir, en esnek olanı.
Şimdi gelin bu buzdağı-canavarın en azından silüetini bir çizmeye çalışalım. Daha ilk adımımızı atmamızla karşımıza çıkan başlık yıllardan beri alışık olduğumuz, kimimizin çok sevdiği, kimimizin gıcık olduğu, iyi kullanıldığında harikalar yaratabilen sihirli bir kelime: Javascript. Bildiğiniz üzere (yada en azından benim bildiğim kadarıyla) browser üzerinde çalışan yazılım mantığının ilk ürünü Javascript, kökü de bilgisayar dünyası için oldukça eski sayılabilecek zamanlara dayanıyor (sanırım 5-6 yıl öncesine). "Ben JavaScript'i zaten biliyorum istersen hemen yazayım şuracıkta" seslerini duyar gibiyim. Mozilla ile bu bildik eski dostumuz yepyeni özelliklere kavuşmuş. Mozilla'nın XML-RPC'den tutun da günümüzün modası SOAP'a kadar birçok yeni teknolojiyi desteklemesi sonucunda JavaScript artık o eski, bildiğiniz JavaScript değil. JavaScript ile Gecko motorunun tüm nimetlerinden sonuna kadar faydalanmanız mümkün. Örneğin sayfayı yeniden yükleme ihtiyacı duymadan GoogleAPI'yi kullanarak Google'da arama yapabilir, sonuçları sayfanın içinde gösterebilirsiniz. Bu gibi fantastik örnekler yerine daha gerçekçi bir örnek vermek gerekirse Mozilla'nın grafik arayüzü oluşturma dili olan XUL'de tüm nesnelerin, olayların yönetiminin JavaScript ile yapıldığını söylemem yeter sanırım. JavaScript üzerinden kullanılan XPCOM gibi teknolojilere ise illeride zaten değineceğim.

Nedir Bu Chrome?

Aslında bu bölümü Conan'a yazdıracaktım ama neyse artık... Herhalde Mozilla kullanan herkes en az bir kere chrome: kelimesi ile karşılaşmıştır. Ben ilk karşılaştırdığımda direk çelik jant ile bağlantı kurarak "herhalde skin sisteminin adıdır" diye diye düşünmüştüm. Her zamanki gibi yanılmışım. Chrome Mozilla'nın platform bağımsız yapısının içindeki en önemli etkenlerden biri. Bildiğiniz gibi her işletim sistemi tasarlayan birde ona uygun dizin yapısı tasarlar. Bu yapı kimisinde C:Tapir, kimisinde /home/tapir, kimisinde ise c:tapir: gibi olabilir. Peki siz hangisini kullanacaksınız? Elinizde iki seçenek var. Ya sadece bir platforma özgü kod yazacaksınız, yada kodun içinden platformu belirleyip ona göre kullanacaksınız. İki çözüm de pek hoş değil. Mozilla'yı tasarlayan amcalar chrome:// URL'sini bu iş için bulmuşlar... Siz Mozilla sistemi içinde herhangi bir dosyaya referans vermek istediğinizde sadece onun chrome:// formatındaki adresini giriyorsunuz. Örneğin buraya tıklayarak Mozilla'nın mail programını başlatmanız mümkün. İşletim sisteminiz veya programı kurduğunuz yer neresi olursa olsun... Chrome:// URL'si için eğer Mozilla bir platformsa chrome://'da onun dosya sistemidir diyebiliriz.

XUL (Zuul okunur)

XUL özellikle Türkler Mozilla altında yazılım geliştiremesin diye uydurulmuş bir isimdir (Daha telafuz edemeden nasıl programlayacağız?). XML User-Interface Language anlamına gelen XUL, Mozilla'nın kullanıcı arayüzünü oluşturmak için kullanılan platform bağımsız bir widget set (bunu türkçeleştiremedim). XUL ile XML yapısı altında bir pencere ve içindeki temel öğeleri, bunların özelliklerini tanımlamamız mümkün. Hatta eğer uygulamanız çok ufak birşeyse kodu doğrudan XUL dosyasının içine yazıp bitirebilirsiniz. XUL programcılara htiyaç duyacakları bütün temel görsel bileşenleri (ağaç yapıları, liste kutuları, düğmeler vs...) sunar. Ayrıca birkaç hafta önce SHiBuMi'nin de bir yorumunda bahsettiği doğrudan veriye bağlı olarak kendini yapılandıran bileşenler mevcut. Bunu biraz açmak gerekirse Delphi programcılarının sıkça kullandığı veri bilinçli denetimlere benzetebliriz. Örneğin siz veri kaynağı olan RDF'yi verip gerekli tanımlamaları yaparsınız. Liste kutusu kendini RDF içinde gelen veriye göre otomatik doldurur. Bunun programcılar için ne kadar büyük bir kolaylık olduğunu söylemeye ihtiyaç duymuyorum. XUL XML tabanlı bir dil olarak oldukça katı kurallara bağlı olsa da XML'in getirdiği bütün esneklikten sonuna kadar faydalanabiliyor. Bu sayede başlanguıçta biraz zorlansanızda sonradan oldukça esnek kullanıcı arayüzleri oluşturmanız mümkün hale geliyor. Mozilla altında programlamanın hoş bir yönü de benim program yazarken en sevmediğim olay olan pencerenin konumunu, bileşenlerin özelliklerini vs... hatırlama işinin Mozilla tarafından halledilmesi oldu. Siz hatırla diyorsunuz, o hatırlıyor.

RDF

RDF (Resource Description Framework) aslında Mozilla'ya özgü birşey değil. Adından da anlaşılacağı gibi bir uygulamanın kullanacağı kaynakları, verileri tanımlamaya yarayan bir sistem. RDF ile diğer her alanda olduğu gibi XML tabanlı bir şekilde elinizdeki veriyi yapısal bir şekilde saklayıp uygulamalarınızda kullanmanız mümkün. RDF'nin tek kullanımı tabiiki veri yapılarını saklamak değil. Örneğin Mozilla tabanlı bir program hazırladığınızda programa ilişkin veriler de (yazarı, adı gibi) bir RDF dosyasının içinde tutuluyor. Mozilla birçok teknoloji gibi RDF'yi de desteklediğinden yazacağınız kodda doğrudan JavaScript ile veya görsel bileşenlerinizin özelliklerini kullanarak RDF veri yapılarına erişmeniz mümkün.

XPCOM

Aslında sadece açılımı (Cross Platform Component Object Model) bile XPCOM'un ne olduğunu açıklamaya yeter sanırım. XPCOM'u Windows altında adını sıkça duyduğumuz COM mimarisinin platform bağımsız hali olarak tanımlayabiliriz. XPCOM özellikle JavaScript'in yetmediği durumlarda, örneğin diske erişmeniz gerektiğinde, imdadınıza yetişen bir teknoloji. XPCOM objeleri gerek Mozilla'nın kendi içerisinde bulunan gerekse sizin yazabileceğiniz sınıflardır. Örneğin disk'e erişim konusunu ele alırsak, her işletim sistemi disk'e erişim için farklı bir sistem kullanır. Zaten diske erişemeyen bir dil olan JavaScript'te bu imkanımız olduğunu düşünsek bile bunu platform bağımsız şekilde yazmak zor olacaktır. Bu noktada XPCOM imdadınıza yetişecektir. XPCOM temel olarak Mozilla'nın yazarlar'ı tarafından sıradan programlarda işinizi görmenizi sağlayacak fonksiyonları halihazırda sunuyor. Bunun dışında kendi uygulamanıza özel bazı fonksiyonları geliştirmeniz gerekirse kendi XPCOM bileşenlerinizi yazıp kullanabiliyorsunuz. Örneğin bu şekilde yazılmış Mozilla altında çalışan bir mp3 player mevcut. XPCOM kesinlikle Mozilla'nın programlama platformu özelliklerinin en çok kendini belli ettiği alan. Bu şekilde yapabileceklerinizin önündeki tüm sınırlar kalkıyor. Örneğin AbiWord'ü bu şekilde Mozilla'nın içine gömme çalışmaları var. Mozilla'nın kendisi de tamamiyle bu mimari üzerine kurulu olarak çalışıyor (eh gidip IMAP'i JavaScript ile implement edecek halleri yoktu herhalde).

XBL

Aslında bu konuda yazıp yazmamakta oldukça kararsız kaldım, zira henüz tam olarak ne olduğunu benim de kavrayabildiğim bir konu değil. Yine de bildiğim kadarıyla şöyle bir değineceğim. Genelde bir program yazarken kullandığımız widget set'in kendi içeriside gelen bileşenler bize yetmez. Örneğin daha yetenekli etiketler, düğmeler ararız. Mozilla altında böyle bir durumla karşılaştığınızda XBL (eXtensible Bindings Language) istediğiniz tipte bileşenler yaratmanıza izin veriyor. Bu yolla neler yapılabileceği konusunda aklıma gelen ilk örnek içine yazılan türkçe karakterleri anında standart US-ASCII karşılıkları ile değiştiren bir metin kutusu. Böylece her koyduğunuz metin kutusu için gerekli kontrolleri yapma derdinden kurtulabilirsiniz. Burada XBL'in asıl işe yarar özelliği ortaya çıkıyor. XBL kodunuzun yeniden kullanılabilirliğini artırıyor. Örneğin heryerde kullandığınız (close) (cancel) (ignore) düğmelerini içeren bir XBL bağı oluşturup yazdığınız yerde bu düğmelerin çıkmasını sağlayabiliyorsunuz.

XPI

Mozilla'yı sadece kurulum dosyasını indirip daha sonra para parça paketleri indirerek kuranlara bu terim oldukça tanıdık gelecektir. XPI (Cross Platform Installer) adındanda anlaşılacağı gibi Mozilla'nın ve eklentilerinin kurulum dosyalkarı. Aslında bu dosyalar bildiğimiz sıradan zip dosyaları. Bunları diğer zip dosyalarından ayıran özellikse içerdikleri kurulum'a ilişkin bilgiler ve kurulum dosyaları. Bir XPI dosyasını internetten kurduğunuz zaman içeriği {Mozilla Kurulum Dizini}/chrome/ altında uygun bir yere açılır. Bu sayede daha sonra bir chrome:// URL'si ile dizine ulaşmak mümkün hale gelir.

Sonuç

Aslında bu kadar güzel özelliğini gördükten sonra insanın "Heyoo hadi bütün uygulamalarımı Mozilla'ya port edeyim" diyesi geliyor. Ancak bildiğiniz gibi kazın ayağı düz değil perdeli. Mozilla ile program geliştirmek için ilk hareketinizi yaptığınız anda karşınıza çıkan ilk sorun bir IDE'nin bulunmayışı. Şu ana kadar XUL dosyalarını üretmemizi biraz kolaylaştıran XULMakerdan başka IDE kavramına yaklaşan bir uygulama görmedim. Bu durumda iş yine Serdar Köylü hocamızın deyimiyle UDE'lere (Unintegrated Development Environment) kalıyor. Tabii özellikle XML gibi çok katı yazım kurallarına bağlı bir dille bu kadar içiçe geçmiş bir platform olan Mozilla için UDE altında yazılım geliştirmeye çalışmak büyük oranda "Syntax Error'a davetiye çıkarmak" anlamına geliyor.

Bir browser'da bu tip gelişmiş özelliklerden bahsedildiğinde ilk akla takılan sorulardan biri de güvenlik olur. Bu konularda tabiiki yazılımdan kaynaklanan güvenlik hataları olması mümkündür. Ancak Mozilla'nın açık kodlu bir yazılım olmasının da etkisiyle bu hatalar hızla bulunur ve kapatılır. Bunun dışında programların bu özelliklerden faydalanabilmesi için kullanıcının izni gerekir. Örneğin "cross site scripting" denilen ve bir sitenin ait olduğu yer dışından kod çağırabilmesini sağlayan sistem Mozilla'de ancak kullanıcının izniyle çalışır ve bu izin hedehödö menüsünün altında yüz tane seçenekten birinde değildir. Bir sitenin bu tip bir kodu çalıştırabilmesi için kullanıcıdan izin alması gerekir. Bir diğer örnek ise XPCOM'dur. XPCOM bir sayfa veya XUL ile program yazan kişiye kullanıcının bilgisayarına çok rahat müdahale hakkı tanır. Bu nedenle güvenlik önlemi olarak XPCOM fonksiyonları yalnızca chrome:// altındaki URL'lerden çağırılabilir. Chrome://'un içeriği de kullanıcının izni ile kurulan programlardan oluştuğundan kullanıcı kendisi zarar veren programı kurmadıkça herhangi bir sorun ortaya çıkmaz.

IDE eksikliğine rağmen özellikle yazdığınız uygulamaların platform bağımsız olması ve mevcut bulunan birçok teknolojiden JavaScript gibi basit bir dili kullanarak faydalanma imkanınız bulunması benim gözümde Mozilla'yı diğer bütün geliştirme ortamlarının önünde bir adım yukarı taşıyor. Bence Mozilla'ya bir şans verin ve en azından bir kere Mozilla altında birşeyler yazmayı deneyin. İnanın yazdığınız uygulamanın her yerde anında çalışması insana büyük bir haz veriyor.

Mozilla altında yazılım geliştirirken kaynak bulmak ta oldukça büyük bir sorun ancak aşağıdaki linkler yardımıyla bir miktar bilgiye ulaşmanız mümkün.

Mozdev.org Birçok Mozilla tabanlı yazılımın bir araya toplandığı bir site, bir nevi Mozilla SourceForge'u
XUL PlanetXUL ve Mozilla altında programlama hakkında birçok faydalı bilgiler içeren bir site
Mozilla.org Başka söze gerek varmı?
MozillaZine

Görüşler

0
anonim
Güzel bir tanıtım yazısı olmuş, dolaşırken bir dolu Mozilla linkiyle dolu bir sayfa çıktı karşıma, ilgilenenler için şuraya linkleyeyim. Nedense bu konkürür`da Türkçe mesaj yazasım tuttu bugünlerde :) Aman Allahım ben ne yapıyorum, fener taraftarlarının ortasında sen tut gassaray`dan bahset, tövbe, tövbe, mozilla nire konkürür nire. Şimdi ben bir İ, bir de ğ yazar ve kaçarııımm....
--
m1a2
0
anonim
Dediğin gibi doğru düzgün bir IDE yok ve dokümantasyon da vasatın çok altında, bunlar şu anda Mozilla ile uygulama geliştirmenin en büyük handikapları. IDE'sizlik çözülebilir bir sorun, XUL'a alıştıktan sonra fazla eksikliğini çekmeyebilirsiniz ama dokümantasyonun çok eksik olması, dağınık olması, öğrenme sürecini çok uzatıyor. Ben browser tabanlı uygulama geliştirmek isteyenlere cross platforma ihtiyaç duymadıkları sürece Explorer + ActiveX ikilisini tavsiye ederim, illa cross platform olacaksa da Java'dan şaşmayın. Xul ise şu anda tam bir hobi niteliğinde.
0
anonim
Birileri döküman yok mu demişti ?
http://books.mozdev.org/chapters/index.html
(Creating Applications with Mozilla)
Kitap olarak da O'Reilly tarafından basılmış bu eser..
0
anonim
Sırf XUL için yazılmış kitap da var, bende de mevcut, ben dokümantasyon kıyaslamasını kendi içinde değil alternatiflerine göre yapıyorum, MSDN ile iki kitap ve örneksiz bir API dokümantasyonundan oluşan Mozilla dokümantasyonunu karşılaştırmamı beklemiyorsun heralde :)
0
anonim
Haklısın elbette. Öte yandan açık kaynak kodu kendi başına bir dökümantasyon avantajı oluşturuyor neyse ki..
0
anonim
Ben almayayım kalsın teşekkürler :)
Görüş belirtmek için giriş yapın...

İlgili Yazılar

Mozilla 1.5, Mozilla Firebird 0.7 çıktı

tongucyumruk

Mozilla uygulama grubunun 1.5 sürümü duyuruldu. Aynı zamanda "benim bu kadar uygulamaya ihtiyacım yok" diyenlerin tercihi olan Mozilla Firebird gezgini ise 0.7 sürümüne ulaştı...

Firefox 1.0 çıktı!

mos

Detaylı bilgi için: http://www.mozilla.org/products/firefox
GNU/Linux, Mac ve Windows sürümleri için bu ftp adresini kullanabilirsiniz.

Firefox Güvenlik Güncellemesi

Soulblighter

Mozilla Vakfı, Firefox'un 1.0.1 sürümünü duyurdu. Yeni sürüm, yeni bir özellik sunmuyor. Sadece güvenlik güncellemeleri içeriyor. Düzeltilen güvenlik açıklarının listesine buradan ulaşabilirsiniz.

Mozilla 0.9.8 çıktı

anonim

Mail-News okuyucu, adres defteri, "wysiwyg" HTML editoru, ve ufak bir IRC clienti ile eksiksiz ve standartlara uyumlu bir Internet tarayıcı olan Mozilla'nın 0.9.8 sürümü duyuruldu. Günlük kullanıma uygun bir duruma ulaşmış olan Mozilla, gittikçe 1.0 hedefine daha da yaklaşıyor...

Firefox'a araç çubuğu geliştirin (makale)

sefalet

Bu güzel adreste Firefox'a araç çubuğu eklentisi geliştirmenin ayrıntılı anlatımı yapılmış. Yazının başında da belirtildiği üzere anlatım uzun ama eklenti oluşturmak çok kolay.

Fazlamesai yapanlar Firefox'a nasıl bir araç çubuğu eklentisi isterlerdi acaba?

http://www.borngeek.com/firefox/tutorial/