Library, Toolkit ve Framework Kavramları

5:06 AM

Dilimizde de ingilizce'deki karşılıkları kullanılan "library", "toolkit" ve "framework" terimleri birbirlerine benzer kavramları belirtmektedir. “Library” yani kütüphane içerisinde derlenmiş kodların (hazır fonksiyonların) bulunduğu dosyalardır. Biz "library" içerisindeki fonksiyonları, sınıfları istediğimiz yerde kullanabiliriz. "Toolkit" terimi çoğu kez belli bir amaca yönelik "library" topluluğu olarak kullanılmaktadır. "Framework" kavramının pek çoklarına göre ayırıcı özelliği akış kontrolünün terslenmiş olması (inversion of control)  durumudur. Yani "framework"lerde yalnızca akış bizde değildir. Framework içerisindeki kodlar akış kontrolünü ele alır bazı olaylarda bizim kodlarımızı çağırırlar. Aşağıdaki resimde gösterildiği gibi bir manzara daha açıklayıcı olacaktır. Ayrıca "framework"ler pek çok yardımcı araca da sahip olabilmektedir.


Genel olarak "framework" kavramı daha büyük ve geniş kapsamlı bir organizasyon belirtmektedir. Bu üç kavramın herkes tarafından kabul edilen kesin sınırları çizilmiş tanımlarının olmadığını söyleyelim.



Örneğin Qt için "library" "toolkit" ve "framework" terimlerinin hepsi bir dönem kullanılmıştır. Bugün itibarıyla Qt’ye “framework” demek daha uygun gözükmektedir. Bir sistemin basitce framework olarak tanımlanabilmesi için şu özelliklerin bulunması gerekir:
  • Karmaşıklığın kullanıcıya daha basit biçimlerde gösterilmesi
  • Bazı gereksiz (hammaliye) işlemlerin kullanıcının üzerinden alınması
  • Kod akışının ele geçirilmesi ve duruma göre programcıya belli zamanlarda verilmesi
Halbuki kütüphanlerde bir akış ele geçirmek ve arka planda birtakım işlemleri bizim için yapmak gibi bir amaç yoktur. Programın akışı bizdedir. Biz istersek kütüphane fonksiyonlarını çağırırız. Onlar da faydalı işlemler yaparlar. Şüphesiz pek çok framework aynı zamanda birtakım kütüphanelere de (API'ler) sahiptir. Bazı ara durumlarda o şeyin framework mü yoksa kütüphane mi olarak adlandırılacağı konusunda tereddütler olabilir.