Akademik Bilişim’10 Ardından…
Posted by mehmetgursul in Konferans on February 15th, 2010
Akademik Bilişim’10 konferansı 10-12 Şubat tarihleri arasında Muğla Üniversitesinde gerçekleşti.
Bu konferansda verdiğim OSGi (Java İçin Dinamik Modül Sistemi) semineriyle ilgili hazırlamış olduğum dökümanları buraya tıklayarak indirebilirsiniz.
Akademik Bilişim ‘10 Muğla Üniversitesi’nde…
Posted by mehmetgursul in Konferans on February 3rd, 2010

Her yıl farklı bir ildeki üniversitede düzenlenen Akademik Bilişim Konferansı, bu sene 10-12 Şubat 2010 da Muğla Üniversitesi‘nde düzenlenenecek.
Benim de göndermiş olduğum “OSGi (Java İçin Dinamik Modül Sistemi)” adlı eğitim semineri önerim kabul oldu. Bu eğitim seminerini 10 Şubat 2010 tarihinde 11:30 - 13:00 saatleri arasında “G” salonunda yapacağım.
Konferans ile ilgili bilgiyi http://ab2010.mu.edu.tr/ ya da http://ab.org.tr/ab10/ adreslerinden öğrenebilirsiniz.
Etkinlikte buluşmak üzre…
Apache Web Server + MySQL + PHP + Perl -> hepsi bir arada
Posted by mehmetgursul in Web Development on December 6th, 2009
Apache Web Server ı kurmak sonra MySQL, PHP ve Perl’ ü entegre etmek birçok yazılım geliştiricisinin zorlandığı bir kurulum sürecini beraberinde getirmektedir. İşte bu soruna çözüm olarak, Apache hepsi bir arada bir kurulum sunmakta : XAMPP .
XAMPP (eXtended Apache MySQL PHP Perl) kelimesi içerdiği teknolojilerin baş harflerinden oluşmakta. XAMPP yi kurduğunuzda ek olarak MySQL veri tabanını yönetmek için çok güzel bir araç olan phpMyAdmin de kurulmakta.
Linux, Windows, Mac OS X ve Solaris işletim sistemlerinde kurulmak üzere 4 ayrı sürümü bulunan XAMPP yi indirmek ve kurmak için http://www.apachefriends.org/en/xampp.html adresine bakabilirsiniz.
Hastane Bilgi Sistemlerinde OSGi Teknolojisinin Dinamikliğinin Kullanılması
Posted by mehmetgursul in OSGi on December 6th, 2009
Türkiye Bilişim Derneği (TBD)’nin çıkardığı Bilişim Dergisi’nin 2009 Aralık sayısı çıktı. Bu sayıda Hakan Faruk Safi Bey ile birlikte hazırladığımız “Hastane Bilgi Sistemlerinde OSGi Teknolojisinin Dinamikliğinin Kullanılması” adlı makale yayımlandı.
Bu makalede; modülerlik, Java daki JAR dosyaları ve problemleri ile OSGi teknolojisinin getirdiği çözümlere değinerek, OSGi teknolojisinin dinamikliğinin Hastane Bilgi Sistemi yazılımlarında kullanılmasının getireceği faydalardan bahsettik.
Makaleye erişmek için Bilişim Dergisi arşivinden 2009 Aralık sayısına tıklayarak 124-129 arasındaki sayfalara bakabilirsiniz.
Yazılım Test Mühendisliği Eğitimi ve Sertifikası
Posted by mehmetgursul in Software Testing on November 14th, 2009
Yazılım test mühendisliği üzerine 3 günlük eğitim aldıktan sonra ISTQB’nin (International Software Testing Qualifications Board) yaptığı uluslararası yazılım test uzmanı sınavına girerek sertifikayı almayı başardık.
Bu eğitimde yazılım testinin,
aşamalarından oluşan bir proje yönetimi olduğunu detaylı bir biçimde öğrendik.
Ayrıca CMMI gibi TMMI (Test Maturity Model integrated) ile şirketlerin test açısından seviyelendirildiği hakkında bilgi aldık. Bazı pratik çalışmalarla öğrendiklerimizi pekiştirerek 3 gün boyunca Koray Yitmen Bey’den sıkılmadan gayet yararlı bir eğitim aldık ve eğitim sonunda da sertifika sınavına girdik.
Eğitim ve sınav ile ilgili kısa bilgi:
JRE update i yaparken karşılaşılabilen bir bug ve çözümü…
Posted by mehmetgursul in Java on August 18th, 2009
Microsoft Vista işletim sistemi kullanırken, JRE 1.6 nın 11 nolu versiyonundan 16 nolu versiyonuna update i sırasında aşağıdaki sorunla karşılaştım.
“ERROR 1723: There is a problem with this Windows Installer Package. A DLL required for this install to complete could not be run. Contact your support personnel or package vendor.”
Program/ekle kaldırdan eski JRE yi uninstall etmeye çalıştığımda da yine yukarıdaki hatayı verdi. Yani tam bir kısır döngüye girdim ne JRE yi install edebildim ne de uninstall.
Araştırdığımda bunun bir bug olduğunu gördüm. Ve kaldırmak için de önerilerden biri “Windows Installer Clean Up” programıyla sistemdeki yüklü JRE yi silip yeniden kurmaktı. Bunu denediğimde mutlu sona ulaştım…
Java Teknolojileri Günü - İstanbul ardından…
Posted by mehmetgursul in Konferans on July 7th, 2009
CETURK tarafından IBM in İstanbul Levent deki binasında 4 Temmuz 2009 tarihinde gerçekleştirilen Java Teknolojileri Günü’nü geride bıraktık. 13 Haziranda ODTÜ de yapılan etkinliğin tekrarı olan bu etkinlik ile, İstanbuldaki meslektaşlarımızla birlikte olma fırsatımız oldu.
![]() |
![]() |
Bu etkinlikte OSGi (Java İçin Dinamik Modül Sistemi) adlı sunumu yaptım . Bu sunumda;
- Modülerlik kavramı ve kazançları
- Java daki classpath problemleri ile JAR dosyaları ve problemleri
- OSGi teknolojisi ve getirdiği çözümleri
- OSGi gerçekleştirimleri
- OSGi a alternatif olarak gösterilen fakat gerçekte alternatif olmayan teknolojiler
hakkında bilgi vermeye çalıştım. Sunumla ilgili dokümanlara buraya tıklayarak erişebilirsiniz.
Etkinlik ile ilgili bilgiye ve fotoğraflara ise buraya tıklayarak erişebilirsiniz.
Bu etkinliği düzenleyen CETURK e, sponsoru olan IBM Türkiye ve i-con a , konuşmacılara ve bizleri dinlemeye gelen teknoloji meraklısı dinleyicilere teşekkür ederim.
IBM İstanbul’da Java Teknolojileri Gününde Buluşmak Üzre…
Posted by mehmetgursul in Konferans on July 2nd, 2009

13 Haziran 2009 da ODTÜ Kültür Kongre Merkezinde gerçekleşen ve büyük ilgi gören “Java Teknolojileri Günü” etkinliğinin tekrarı, gelen yoğun istek üzerine CETURK tarafından IBM İstanbul’un Levent deki binasında 4 Temmuz 2009 Cumartesi günü bir kez daha yapılacak.
Bu etkinlikte yapacağım “OSGi (The Dynamic Module System for Java)” adlı sunumumla İstanbul’daki meslektaşlarımla buluşma fırsatını yakalayacağım.
Etkinlikte buluşmak üzre…
Equinox Framework de Kullanılan Bazı Komutlar
Posted by mehmetgursul in OSGi on June 29th, 2009
Bir OSGi gerçekleştirimi olan Equinox da kullanabileceğimiz bazı komutlar ve açıklamaları aşağıdaki gibi :
- help – Tüm komutları listeler
- ss – Yüklenen bundle ları listeler.
- start <Bundle ID> – Verilen ID li bundle ı başlatır. (start 1 gibi)
- stop <Bundle ID> – Verilen ID li bundle ı durdurur. (stop 1 gibi)
- install <url> – Sisteme bundle ı ekler.
- uninstall <Bundle ID> – Verilen ID li bundle ı sistemden çıkarır.
- diag <Bundle ID> – Verilen ID li bundle ın sağlanamayan kısıtlamalarını (constraint) gösterir.
- status – Yüklenen bundle ları ve kayıtlı oldukları servisleri gösterir.
- shutdown – Tüm bundle ları durdurur.
- exit – Bundle ları durdurmadan OSGi framework ü (Equinox) kapatır.
- close – shutdown ve exit komutlarının birleşimidir.
OSGi da Bundle’lar Arası Bağımlılık
Posted by mehmetgursul in OSGi on June 24th, 2009
OSGi da bildiğimiz gibi modüllere “bundle” denilmektedir. Bundle lar birbirlerine ihtiyaç duymakta dolayısı ile bağımlı olmaktadırlar. Klasik JAR dosyalarında bu bağımlılıklar tam olarak belirtilememektedir. OSGi bu probleme güzel bir çözüm sunmaktadır. Bunun nasıl olduğunu 2 tane bundle oluşturup, birini diğerine bağımlı yaparak sizlere göstermeye çalışacağım.
Aşağıdaki gibi bir Film sınıfımız olsun.
public class Film {
private final String adi;
private final String yonetmen;
public Film(String adi, String yonetmen) {
this.adi = adi; this.yonetmen = yonetmen;
}
public String getAdi() { return adi; }
public String getYonetmen() { return yonetmen; }
}
Yine aynı pakette aşağıdaki gibi bir arayüz tanımlayalım.
public interface FilmBulan {
Film[] tumFilmleriBul();
}
Şimdi bu iki sınıfı içeren bundle ımızı oluşturmadan önce aşağıdaki gibi FilmManifest.mf dosyamızı oluşturalım. Unutmayalım son satırda boş bir satır olmalı.
Bundle-ManifestVersion: 2
Bundle-Name: Film Arayuzu
Bundle-SymbolicName: FilmArayuzu
Bundle-Version: 1.0.0
Export-Package: osgi.dersler;version=”1.0.0″
Bu dosyada önceki derslerimizde görmediğimiz yeni bir satır geldi dikkat ederseniz : Export-Package. Bu satır bundle dan dışarıya açık olan yani başka bundle lar tarafından erişilebilecek paketleri göstermektedir.
Eskiden JAR dosyamız içerisindeki tüm paketler dışarıya açık hale gelmekteydi. Bazı paketlerimiz sadece JAR içindeki paketler tarafından kullanılsın ama bu paketler dışarıdan erişilmesin diyebileceğimiz durumlar olabilmektedir. OSGi bu duruma çözüm bulmaktadır. Export-Package satırında belirtilmeyen tüm paketler sadece kendi bundle ı içindeki paketler tarafından erişilebilmektedir.
Ayrıca dikkat ettiyseniz pakete versiyon numarasıda verdik. Biraz sonra bu versiyonun öneminden bahsedeceğim. Versiyon numarası verme zorunluluğumuz yok aslında. Vermediğimiz zaman OSGi otomatik olarak “0.0.0″ olarak versiyon numarası atamaktadır.
Aşağıdaki komutları çalıştırarak bundle ımızı oluşturabiliriz.
> jar -cfm FilmArayuzu.jar FilmManifest.mf osgi/dersler/*.class
Şimdi de bu bundle a bağlı olan başka bir bundle oluşturalım. FilmBulan sınıfımızı implement eden FilmBulanImpl.java sınıfımızı yazalım.
import osgi.dersler.*;
public class FilmBulanImpl implements FilmBulan {
private static final Film[] FILMLER = new Film[] {
new Film(”Lost”, “ABC”),
new Film(”House”, “DEF”)
};
public Film[] tumFilmleriBul() { return FILMLER; }
}
Sonra aşağıdaki gibi FilmBulanManifest.mf dosyamızı oluşturalım. Unutmayalım son satırda boş bir satır olmalı.
Bundle-ManifestVersion: 2
Bundle-Name: Film Bulan
Bundle-SymbolicName: FilmBulan
Bundle-Version: 1.0.0
Import-Package: osgi.dersler;version=”[1.0.0,2.0.0)"
Dikkat ettiyseniz osgi.dersler paketini import ettik. Bu paket diğer bundle tarafından export edilmişti. Ayrıca versiyon aralığı ekledik paketin sonuna.
OSGi framework çalışma zamanında import edilen versiyon numarasına uygun paketi diğer bundle daki export satırında bulmaya çalışacaktır. Versiyon aralığı matematikteki gibidir. Yani "[" ve "]” dahil, “(” ve “)” ise hariç anlamına gelmektedir. “[1.0.0,2.0.0)” -> 1 ile başlayan (1.x) tüm versiyonlar bu paket tarafından kullanılabilir anlamına gelmektedir.
Import-Package da versiyon aralığı verilebilmesine karşın Export-Package satırında sadece versiyon numarası verilebilmektedir yani Export-Package da versiyon aralığı verilememektedir. Bu arada Import-Package da da aynen Export-Package da olduğu gibi versiyon numarası verme zorunluluğu yoktur. Ama verilmesi güzel bir alışkanlıktır.
Şimdi ikinci bundle ımızı aşağıdaki komutları çalıştırarak oluşturalım.
> jar -cfm FilmBulan.jar FilmBulanManifest.mf osgi/dersler/impl/*.class
Bir OSGi framework olan Equinox da bu bundle larımızı çalıştırmayı deneyelim. Aşağıdaki komut ile framework ü çalıştıralım.
java -jar equinox.jar -console
Sonra aşağıdaki komutla ikinci oluşturduğumuz FilmBulan bundle ımızı yükleyelim.
Son duruma bakalım.
Framework is launched.
id State Bundle
0 ACTIVE org.eclipse.osgi_3.4.2.R34x_v20080826-1230
1 INSTALLED FilmBulan_1.0.0
Henüz bundle ımız resolved değil , installed durumunda. Yani framework bundle a sahip ama bağımlılıkları henüz çözümlenmemiş. Bu nedenle FilmBulan bundle ımızı start 1 ile aktif hale getirmeye çalıştığımızda aşağıdaki gibi hata alırız.
org.osgi.framework.BundleException: The bundle could not be resolved. Reason: Missing Constraint: Import-Package: osgi.dersler; version=”[1.0.0,2.0.0)”
Çünkü osgi.dersler paketini export eden çözümlenmiş bir bundle a sahip değiliz. Şimdi osgi.dersler paketini export eden bundle ımız olan FilmArayuzu bundle ımızı aşağıdaki komutla yükleyelim.
son duruma tekrar bakalım.
Framework is launched.
id State Bundle
0 ACTIVE org.eclipse.osgi_3.4.2.R34x_v20080826-1230
1 INSTALLED FilmBulan_1.0.0
2 INSTALLED FilmArayuzu_1.0.0
Şimdi tekrar FilmBulan bundle ımızı start 1 ile aktif hale getirmeye çalışalım.
Süper! Artık çalışıyor. Son duruma bakalım.
Framework is launched.
id State Bundle
0 ACTIVE org.eclipse.osgi_3.4.2.R34x_v20080826-1230
1 ACTIVE FilmBulan_1.0.0
2 RESOLVED FilmArayuzu_1.0.0
Bu yazımdaki örnek kodları buraya tıklayarak indirebilirsiniz.
Kaynak : Dependencies between Bundles - Neil Bartlett
ODTÜ Java Teknolojileri Günü İzlenimleri…
Posted by mehmetgursul in Konferans on June 16th, 2009
ODTÜ Kültür ve Kongre Merkezinde 13 Haziran 2009 tarihinde gerçekleştirilen “Java Teknolojileri Günü” verimli ve keyifli geçen bir seminer oldu.
Seminerde Hasan Türksoy GWT (Google Web Toolkit) , Ümit Vardar EJB 3.1, Mustafa Demir ve Mustafa Daşgın Spring Web Servis Framework , Kenan Sevindik Spring AOP ve Hibernate ile Servis Düzeyinde Audit Loglaması ve ben de OSGi (Java için dinamik Modül Sistemi) konularında sunumlarımızı yaptık. Sunumum ile ilgili dokumanları buradan indirebilirsiniz. Ya da buraya tıklayarak zihin haritası (mind map) sunum formatına erişebilirsiniz.
Organizasyonda emeği geçen CETURK e ve yöneticisi Mehmet Aca’ya, sponsor firmalara (İnnova Bilişim Çözümleri A.Ş ve i-Con) , hem sunum yaparak hem de organizasyonda bulunarak büyük emek harcayan Kenan Sevindik e, ayrıca bizleri dinlemeye gelen teknoloji meraklısı dinleyicilere teşekkür ederim.
Etkinlikden bazı kareler…
![]() |
![]() |
![]() |
![]() |
Java EE Sınıf Yükleme Mekanizması ve Sorunları
Posted by mehmetgursul in OSGi on June 14th, 2009
Java EE specification; dağıtık ve çok katmanlı bir platform tanımlamaktadır. Java EE mimarisinin nin merkezi özelliği bir çok uygulama bileşenini yöneten ve bu bileşenlere transaction,security gibi kurumsal servisler sunan “uygulama sunucusu” bölümüdür.
Uygulama sunucuları ayrıca; server ı restart etmeden ve diğer uygulamaları etkilemeden uygulamaları deploy etmek, un-deploy etmek için bir deployment-sistemine ihtiyaç duymaktadırlar.
Bu ihtiyacı karşılamak için Java EE uygulama sunucuları her bir deploy edilen uygulama için biraz daha karmaşık, aşağıdakine benzer bir class-loading yapısı kullanmaktadırlar.

- Java EE uygulamaları EAR dosyaları halinde deploy edilirler. Bu EAR dosyaları aşağıdakileri (ilki ve diğerlerinden bir ya da birkaçını) içeren zip dosyalarıdır;
- Metadata dosyası, application.xml;
- Düz Java dosyalarını içeren Jar dosyası
- EJB uygulamalarını içeren Jar dosyaları (EJB-JARs)
- Web işlevlerini yerine getiren sınıfları, Servlet-JSP gibi, içeren Web Archive dosyası (WAR)
- Düz Java dosyalarını içeren Jar dosyaları; EAR içindeki tüm EJB-JAR ları ve WARları tarafından erişilmesi düşünülen sınıfları içermektedirler. Bu nedenle EAR Class Loader tarafından bu sınıflar yüklenmektedir.
- Önceden anlattığımız class loading mekanizmasını bir daha hatırlayacak olursak. Bir class loader sadece, kendisi ya da atası tarafından tanımlanmış sınıfları yükleyebilmektedir. Yani ek olarak kardeşlerini (siblinglerini) yükleyememektedir. Bu nedenle EJB ve WAR tarafından paylaşılan ya da kullanılan sınıflar EAR Class Loader a konulması gerekmektedir.
- Ayrıca eğer deploy edilen birçok uygulama tarafından bir sınıf kullanılacaksa bu sınıfın system application loader seviyesine konulması gerekmektedir. Bu da application server ın restart edilmesine ve JAR dosyasının global classpath e eklenmesine neden olmaktadır.
- system application loader seviyesine çıkarılan libraryler;
- kullanabilmek için restart gerekli
- Biz sadece deploy edilen bir kaç uygulamanın kullanmasını diğerlerinin kullanmamasını istediğimiz halde, deploy edilen tüm uygulamalar için kullanılabilir hale gelecektir.
- Sınıf çakışmalarına (Class conflict) neden olacaktır.
- Üst seviyede bunulan sınıflar daima alt tarafta bulunan aynı sınıflara göre öncelikliği olduğundan alttaki sınıflar ezilecektir.
- Serverda bulunan tüm uygulamalar üstte bulunan kütüphanenin aynı versiyonunu kullanmak zorunda kalacaktır.
Bu nedenlerden dolayı Java EE geliştiricileri farklı uygulamalar tarafından kullanılan ortak sınıflar tanımlamaktan uzak durmaya çalışmaktadırlar. Birden fazla uygulama tarafından ortak kullanılacak bir kütüphane olduğunda da bu kütüphane herbir EAR içine ayrı ayrı konularak çoğaltılmaktadır. Sonuç olarak “boru” şeklinde düşey olarak etkileşim kurmakta yatayda etkileşim kuramamaktadırlar.
Kaynak : OSGi In Practice - Neil Bartlett
Java da Sınıf Yükleme ve Global Classpath
Posted by mehmetgursul in Java on June 14th, 2009
- “classpath”
- “java” komutuna parametre olarak geçmektedir.
- JAR dosyalarının listesini ve derlenmiş java dosyalarının dizinini belirtmektedir.
- Örneğin aşağıdaki komut java uygulamasını classpath inde log4j.jar ve classes dizinini içerecek biçimde başlatmaktadır. Son parametre çalıştırılacak main metodu bulunan java sınıfıdır. classes dizini içerisinde org/example/ alt dizininde HelloWorld.class şeklinde içerisinde yer almaktadır.
java -classpath log4j.jar:classes org.example.HelloWorld
Not: UNIX için parametre ayrımı “:” ile Windows için “;” iledir.
- JVM bir şekilde .class uzantısındaki dosyaları fiziksel diskte bulup Class objesine çevirdikten sonra belleğe yükleyip static main metodunu çalıştırması gerekiyor. Bu standart JRE de nasıl oluyor ona bakalım :
- Java da sınıfları yükleyen sınıf java.lang.ClassLoader sınıfıdır ve 2 tane sorumluluğu vardır.
- Mantıksal isimden .class dosyasının fiziksel ortamda bulunması
- Fiziksel ortamdaki bu byteların Class nesnesine bellekte çevrilmesi.
- ClassLoader sınıfını ektend edip kendi gerçekleştirimimizi de yapabiliriz ayrıca. Böylece sınıfları bir network ten ya da dosya tabanlı olmayan bir sistemden bulup yükleyebiliriz. Ama ikinci kısım olan sınıftaki fiziksel byteların Class nesnesine çevrim işi ClassLoader daki native ve final olan yani yeniden implement edilemeyen (not overriden) bir method olan defineClass() ile olmaktadır.
- java -classpath log4j.jar:classes org.example.HelloWorld
bu komutu çalıştırdığımızda JRE org.example.HelloWorld sınıfını yüklemesi gerektiğini anlar. Özel bir ClassLoader olan Application Class Loader a yüklemesini söyler. Application Class Loader da bir üst sınıf olan Extension ClassLoader a, o da bir üst sınıfı olana Bootstrap ClassLoader söyler. Default olarak her classloader ilk önce bir üst sınıfına sorar. Eğer üst sınıfı bulmaz ise kendi arayıp yüklemeye çalışır.

HelloWorld örneğimize dönecek olursak;
JRE base de ve extension library de bulunmadığını kabul ediyoruz. Bundan dolayı bootstrap ve extension class loader lar tarafından bulunamayacaktır ve application class loader bulmaya çalışacaktır. Bunu yaparken
· Classpath deki sırasıyla herbir entry de bakacak ve bulur bulmaz da aramayı durduracaktır.
· Classpath deki herbir entriye bakıp bulamazsa tanıdık bir exception olan ClassNotFoundException ı verecektir.
Özet olarak;
1. JRE Application ClassLoaderdan sınıfı yüklemesini ister
2. Application ClassLoader , Extension ClassLoader dan sınıfı yüklemesini ister
3. Extension ClassLoader, Bootstrap ClassLoader dan sınıfın yüklenmesini ister
4. Bootstrap ClassLoader sınıfı bulamaz, Extension Class Loader bulmaya çalışır
5. Extension ClassLoader sınıfı bulamaz, Application ClassLoader classpath deki log4j.jar dan aramaya başlar
6. Sınıf log4j.jar da bulunamayınca classes dizininde aranmaya başlar
7. HelloWorld sınıfı bulunur ve yüklenir.
Her bir sınıf istemi için tekrar 1. Adımdan başlayarak arama yapılır.
Kaynak : OSGi In Practice - Neil Bartlett
Yazılımda Modül Kavramı…
Posted by mehmetgursul in OSGi on June 14th, 2009
Yazılımda modül neye benzer olmalıdır? Aşağıdaki özelliklere sahip olmalıdır.
Self-Contained : Modül bir bütün olarak mantıksaldır. Tek bağımsız bir birim halinde install, uninstall edilebilir. Atom değildir yani daha küçük parçalardan oluşmuştur, fakat bu parçalar kendi başlarına olamazlar. Eğer herhangi bir parçası kaldırılırsa da modülün işlevselliği sona erebilir.
Highly-Cohesive : Cohesion, modülün sorumlulukları ile ne kadar ilgili ya da odaklandığı ile ölçülür. Modül ilgisiz şeyler yapmamalıdır. Bir tane mantıksak amaca bağlı kalmalı ve bu amacı tam olarak yapmaya odaklanmalıdır.
Loosely Coupled : Modül etkileşimde olduğu diğer modüllerin gerçekleştirim (implementation) detaylarına bağımlı olmamalıdır. Loose Coupling bizlere şu imkanı vermektedir: Bir modülün gerçekleştirimini değiştiririz. Fakat bunu yaparken bu modülü kullanan diğer modüllerde herhangi bir güncelleme gereksinimine ihtiyaç duymayız.
Bu üç özelliği de modülde sağlamak için modülün çok iyi tanımlanmış arayüzlere ihtiyacı vardır.
Kararlı arayüzler;
- Modüller arasında mantıksal sınırlamaları sağlamakta
- İç gerçekleştirim detaylarına erişimi engellemektedir.
İdeal olarak arayüzler;
- Her bir modülün diğer modüllere neleri sunduğunu ,
- Ve her bir modülün de diğer modüllerden nelere gereksinimi olduğunu belirtir biçimde olmalıdır.
Kaynak : OSGi In Practice - Neil Bartlett
Java Teknolojileri Gününde Buluşmak Üzre…
Posted by mehmetgursul in Konferans on June 8th, 2009
CETURK (Computer Engineering TURK), “Java Teknolojileri Günü” adıyla, Ankaradaki 2. seminerini 13 Haziran 2009 da ODTÜ de düzenleyecek.
ODTÜ Kültür ve Kongre Merkezi A Salonunda tam gün gerçekleşecek bu etkinlikte 5 farklı konuda sunumlar olacak. Ben de ”OSGi (The Dynamic Module System For Java)” adlı sunumu yapacağım. Seminerde buluşmak üzre…

Etkinliğin programı aşağıdaki gibi:
13 Haziran Cumartesi ( 10.00-18.30)
|





