2. ECLIPSE VE MİMARİSİ
Eclipse, Kasım 2001’de IBM, Object Technology International (OTI) ve 8 şirket tarafından açık kaynak platform olarak dünyaya duyurulmuştur. Eclipse 1.0 Kasım 2001’de, Eclipse 2.0 Haziran 2002’de ve Eclipse 3.0 Haziran 2004’de ortaya çıkmıştır. Bu sürümler arasındaki farklar Eclipse’in geldiği noktayı adreslemesi açısından oldukça önemlidir. Eclipse, 1.0 sürümünde bir Java tümleşik geliştirme ortamı (TGO) iken 2.0 sürümünde araç geliştirme platformu özelliğine kavuşmuştur. Bu sayede, yazılım yaşam çevrimi için gerekli olan tüm araçların birarada kullanılabilirliği ve geliştirilebilirliği sağlanmıştır. Araç geliştiriciler bu sayede Eclipse’i bir platform olarak benimsemiş ve Eclipse tabanlı uyumlu ekler (plug-in) geliştirmeye başlamışlardır. Yazılım geliştirme dünyasında sadece araç geliştiriciler ya da bu araçları kullananların olmadığı düşünüldüğünde, uygulama geliştiricilere de bazı kolaylıklar sunulması kaçınılmazdı. Eclipse 2.x sürümünün kullanıldığı dönemlerde bazı geliştiriciler, Eclipse içerisindeki TGO ile ilgili kısımları çıkararak zor da olsa kendi amaçları doğrultusunda Eclipse’i kullanan uygulamalar geliştirebiliyorlardı. Bir diğer ifadeyle, Eclipse’in geliştirme ortamı ile ilgili bileşenleri kodlardan ayrılarak sadece alt yapının kullanıldığı Eclipse’den tamamen bağımsız uygulamalar geliştiriliyordu. Geliştiricileri bu zorluklardan kurtarmak için, Eclipse 3.0 içerisinde TGO ile ilgili bileşenler ve normal uygulama için gerekli olan bileşenler ayrılarak Eclipse Zengin İstemci Platformu (Rich Client Platform) ortaya çıkmış oldu. Eclipse’in hayata geçtiği ilk zamanlarda böyle bir kullanım IBM de dahil olmak üzere hiçbir firma tarafından düşünülmemişti ve gelişim bu platformun oluşturulmasını sağladı. Bu sayede Eclipse; araç geliştirme, araçları tümleştirme, TGO olarak kullanma ve zengin istemci uygulaması geliştirme amacı ile kullanılabilecek bir platform haline dönüşmüştür. Bu noktada, platform ve genişleyebilir uygulama (extensible application) arasındaki farkı vurgulamak yararlı olacaktır. Genişleyebilir uygulamalar, monolitik bir uygulama üzerine zenginlik katmak için uyumlu eklerin (plug-in) veya eklentilerin (add-on) yazılabildiği uygulamalardır. Bu uygulamalarda, tüm parçaların her biri birer uyumlu ek değildir, bu nedenle mimari platformlarda olduğu kadar esnek değildir. Eclipse platformunda ise, tüm bileşenler birer uyumlu ektir ve çalışma zamanı (run-time) bileşeni üzerinde çalışırlar. Örneğin, Photoshop genişleyebilir bir uygulama iken Eclipse tüm bileşenleri uyumlu ek olan bir platformdur.
Eclipse platformuna işlevsellik sağlayan en temel birimler uyumlu ek (plug-in) olarak adlandırılmaktadır. Uyumlu ekler, Eclipse içerisinde varolan genişleme noktaları’nı (extension point) kullanarak platforma yeni özellikler katabilmektedir. Bu genişleme noktalarının kullanılması ile oluşan yeniliklere eklenti (extensions) adı verilmektedir. Örneğin Eclipse platformu için bir HTML editör uyumlu eki geliştirmek istediğinizi ve bu uyumlu eke özgü seçeneklerin ayarlanabilir olmasını istediğiniz durumu ele alalım. Bu durumda Eclipse içerisinde bu uyumlu eke özgü ayarların yer aldığı Preferences menüsüne yeni bir sayfa eklemek için org.eclipse.ui.preferencePage genişleme noktasını kullanmalı ve kendi eklentinizi (extension) oluşturmanız gerekmektedir. Eklentiniz kodlama açısından, bir arayüzü gerçekleştiren sınıftan başka birşey değildir. Verilen örnek için; IWorkbenchPreferencePage arayüzünü gerçekleştiren HtmlEditorPreferencePage sınıfı kodlanarak içerisindeki createFieldEditor metodunu yazmak gerekmektedir. Ayrıca; her uyumlu ekin sahip olması gereken plugin.xml dosyasında bu katkıya ilişkin bazı XML elemanları yazılmalıdır. Eclipse içerisindeki PDE (Plug-in Development Environment) uyumlu eki sayesinde bu elemanları da elle yazmadan editör ile oluşturmak mümkündür ve bu editöre uyumlu ek sihirbazı kullanıldığı durumda kolaylıkla erişilebilir. Eclipse içerisinde uyumlu ekler tembel yükleme (lazy loading) kuralına göre çalışmaktadırlar. Bu sayede, Eclipse açıldığı anda tüm uyumlu ekler yüklenmez sadece talep geldiği durumda yüklenmektedirler. Aksi halde, tüm uyumlu eklerin yüklenmeye çalışılması açılış süresini oldukça yavaşlatacaktı. Eclipse 3.0 ile birlikte Eclipse Zengin İstemci Platformunun (Rich Client Platform-RCP) belirgin şekilde ayrıldığını ve uygulama geliştiricilere kolaylık sağladığını ifade etmiştik. Eclipse RCP içerisinde; SWT (Standard Widget Toolkit), JFace, Çalışma Tezgahı (Workbench), Yardım (Help), OSGI (Open Services Gateway Initiative), Çalışma Zamanı (Run-time) bileşenleri yer almaktadır [2]. SWT; AWT veya SWING gibi platformdan bağımsız grafik kütüphanesidir. Ancak en önemli fark üzerinde bulunduğu işletim sisteminin yerli grafik sembollerini ve bunlarla ilişkin kodları (widget) kullanmasıdır. Bu sayede, Linux işletim sisteminde geliştirdiğiniz bir SWT uygulaması Windows işletim sisteminde bir Windows uygulaması gibi görünmektedir. Görüntü açısından kullanıcılar, ürünün hangi platformda geliştirdiğinin ayrımını yapamayacak ve bulunduğu ortamın bir uygulaması gibi görüntü ve his (look and feel) verecektir. SWT; MacOS X’de Carbon, Linux’da GTK, AIX’de Motif kütüphanelerini kullanmaktadır. C kütüphanelerine erişim Java içerisinden standart Java Native Interface (JNI) ile gerçekleşirilmiştir ancak SWT kullanıcıları bu detaylardan bağımsız sade bir API (Application Programming Interface) ile karşı karşıyadır. JFace, yaygın kullanıcı arayüz işlemleri için sınıflar sağlayan bir kullanıcı arayüzü çerçevesidir ve SWT ile birlikte kullanılabilmektedir [6]. Dialog pencereleri, Sihirbazlar, Preference sayfaları bu çerçeve kullanılarak kolaylıkla oluşturulabilmektedir. Eclipse içerisinde yer alan pencereler genel olarak 2’ye ayrılmaktadır [3]. Kullanıcı pencere içerisinde veriyi değiştirebiliyor ise bu pencerelere Editör, değiştiremiyor ve sadece bilgi amaçlı olarak sunuluyorsa Görünüm (View) adı verilmektedir. Belirli bir amaç için uygun editörler ve görünümlerin birarada yer aldığı yapıya perspektif adı verilmektedir. Örneğin kullanıcı bir Java uygulamasında hata ayıklamak istediği zaman, Java Hata Ayıklama Perspektifine geçerek gerekli pencereleri karşısında görebilmektedir. Eclipse içerisinde editör, görünüm ve perspektif sınıflarının gerçekleştirildiği bileşen Çalışma Tezgahı (Workbench) olarak adlandırılmaktadır. Yardım bileşeni sayesinde kullanıcı kodlama yapmadan sadece gerekli HTML dosyaları ve bir XML dosyası ile geliştirdiği araç ya da uygulama için çevrimiçi (online) yardım belgelerini kolaylıkla oluşturabilmektedir. Kullanıcıya adım adım ve interaktif olarak bu işlemleri yaptırmak için Eclipse Kopya Kağıdı (Cheat Sheets) bileşeni kullanılmaktadır. OSGI bileşeni, Java’ ya bileşen modelini sağlamaktadır. OSGI Birliği (Alliance); Nokia, Motorola, Philips, Siemens, Oracle firmaları tarafından oluşturulmuş ve orjinal misyonu gömülü cihazlar inşa etmek üzere Java bileşen ve servis modeli sağlamaktır. OSGI, Eclipse’den bağımsız olarak başlatılmış bir projedir ve şu anda Eclipse içerisinde Equinox alt projesi içerisinden kaynak kodlarına erişilebilmektedir. OSGI sayesinde; bileşen bağımlılık problemleri, yerelleştirme sorunları ve uygun versiyonların seçimi problemleri çözülmektedir. Bileşenlerin dinamik yüklenmesi, kaldırılması ve güncellenmesi sağlanabilmekte, sistemi yeniden başlatmaya gerek duyulmamaktadır. Eclipse platformunda bileşen modelinin yer alması sayesinde, bileşene yönelik yazılımların sağladığı genişleyebilirlik, idame edilebilirlik ve yeniden kullanılabilirlik gibi avantajlar geliştirilen ürünlerde karşımıza çıkmaktadır. Tüm bu özellikler Eclipse içerisinde yer aldığı için, geliştiricilerin OSGI ile doğrudan etkileşimine gerek kalmadan uygulama veya uyumlu ek geliştirilebilmesi sağlanmaktadır [5]. Güncel yazılımların son kullanıcılara ulaştırılabilmesi için Eclipse içerisinde Güncelleme (Update) bileşeni yer almakta ve bu bileşen kullanılarak son kullanıcılar için güncelleme siteleri (update site) oluşturulmaktadır. Zengin İstemci Platformuna, TGO ile ilgili özellikler eklendiği zaman karşımıza Eclipse platformu çıkacaktır. Platform içerisinde inşa betikleri (build script) için kullanılan Ant, interaktif yardım için Kopya Kağıt (Cheat Sheet), arama işlemleri için Arama (Search), ayıklama işlemi için Hata Ayıklama (Debug), versiyon kontrol araçlarını kullanabilmek için Takım (Team) [4], yazılım güncellemesi için Güncelleme (Update), kaynaklar için Kaynaklar (Resource) gibi çerçeveler yer almaktadır. Örneğin; C uygulamaları geliştirmek için bu çerçevelerden gerekli olanlar alınarak C uygulamaları için özelleştirilmiştir. CDT C/C++, JDT Java uygulamaları geliştirmek için bu kapsamda oluşturulmuş olan uyumlu eklerdir. GEF (Graphical Editing Framework) farklı grafiksel objeleri ya da uygulamaya özel bir palet oluşturmak için kullanılabilecek bir çerçevedir. EMF (Eclipse Modeling Framework), model güdümlü yazılım mimarisi (model driven architecture) uyumlu bir kod üretici çerçevedir. PDE (Plug-in Development Environment), Eclipse içerisinde Java ile uyumlu ek geliştirmek için oluşturulmuş bir bileşendir. WTP (Web Tools Platform), Java Web uygulamaları geliştirmek için kolaylıkların sunulduğu bir çerçevedir. VE (Visual Editor), elle SWT/Swing/AWT kodları yazmak yerine görsel olarak bu işlemleri gerçekleştirmek için kullanılmaktadır. TPTP bileşeni, test yapmak için kullanılan araçlardan oluşmaktadır. UML2 ise meta düzeyde UML2.0 diyagramlarını oluşturmada kullanılan bir bileşendir. Şekil 1’de yukarıda açıklanan Eclipse mimarisi gösterilmektedir.
Şekil 1. Eclipse Mimarisi
Eclipse değerlendirildiği perspektif açısından; Java tümleşik geliştirme ortamı (Java IDE), TGO Çerçevesi (IDE Framework), Araçlar Çerçevesi (Tool Framework), Uygulama Çerçevesi (Application Framework), Açık Kaynak Kod Topluluğu (Open Source Community), Ekosistem (Eco-system) ve bir Vakıf (Foundation) olarak tanımlanabilir. Eclipse içerisinde 10 üst seviye proje ve bu projelerin altında alt projeler yer almaktadır, yeni projeler önerilebilmektedir.
Eclipse açık kaynak projelerinin başarılı olmasının nedenleri; firmaların bu projelerde tam zamanlı elemanlarını çalıştırması, yapılacak işlerin önceden planlanması, proje belgelerinin oluşturulması, bu belgelerin herkesin erişimine açılması ve sahip olduğu esnek mimari olarak sıralanabilir. Eclipse platformu bu son derece esnek mimarisiyle ve geliştirilmekte olan açık kaynak projeler sayesinde, önümüzdeki dönemde de araştırma kurumlarının, üniversitelerin ve yazılım endüstrisinde çalışan firmaların en fazla önem verdiği yazılım platformlarından birisi olacaktır. Tüm kaynak kodlarının açık olması, Eclipse platformunun kullanıldığı durumda söz konusu olan EPL (Eclipse Public Licence) lisansının yazılım dağıtımında geliştiricilere kaynak kodlarını açmasına gerek kalmadan dağıtım imkanı vermesi ve telif hakkı sorunu oluşturmaması diğer sağladığı avantajlardır.
Dostları ilə paylaş: |