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
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
--
m1a2