Framework Nedir?

Framework Nedir? Teknoloji ve yazılım ile ilgilenen herkesin duymuş olduğu bu terim tam olarak nedir? Web siteleri, mobil ya da bilgisayar uygulamaları, uzantılar, programlar ve bilgisayar sistemlerindeki diğer süreçlerin arkasında yer alan framework mekanizması hakkında daha çok şey öğrenmek istiyorsanız yazımızı okumaya devam edebilirsiniz.
İskelet, çerçeve, çatı anlamlarına gelen framework; yazılım geliştirmek için bir nevi kılavuz görevi görerek, zaman tasarrufu sağlayan, geliştiriciye kolaylaştırıcı kısayollar sunan iskelet yapıdır.
Bir ev inşa etmek için ne gerekir? Öncelikle bir projenin olması gereklidir değil mi? Ev bu proje temel alınarak inşa edilir. İşte programlamada da framework’ün yaptığı tam olarak budur!

Framework Neden Kullanılmalıdır?

Framework sayesinde daha güvenli yapılar üstüne kod yazmak mümkün olduğundan uygulamalar, programlar ve tekrarlı, rutin işlemler kolayca gerçekleştirilebilir.

Frameworkler sayesinde bir web uygulaması için dizin oluşturup index.html ya da giriş sayfası yazma derdinden kurtulursunuz.

Framewok Nasıl Çalışır?

Frameworkler sayesinde, programcılar, uygulama oluşturmak için sıfırdan kod yazmak durumunda kalmazlar. Örneğin, geliştiriciler, Spring (Java) veya Symfony (PHP) kullanırken frameworkün tüm gerekli bileşenlere sahip olması sebebiyle veri saklama ya da kimlik doğrulamalarını organize etme gibi detayları ayrı ayrı düzenlemelerine gerek kalmaz.

Framework “uygulama programlama arayüzü” denen API ile ilişkilidir ve teknik olarak her framework bir API içerir. Framework, temeli oluştururken, API ise framework tarafından desteklenen öğelere erişim sağlar.

Ayrıca frameworkler, geliştiricilerin herhangi bir programlama dilini kullanarak yazdığı kaynak kodu bilgisayarın anlayabileceği makine diline yani 0 ve 1’lere çeviren compiler (derleyici) yazılımları, kütüphaneleri ve yazılım geliştirme sürecinde kullanılan diğer programları da içerebilir.

Belirli bir uygulama oluşturmak için düzenlenen frameworkler, bir yazılımın temelini oluşturmak için Abstraction (soyutlama) denen bir High Level (yüksek seviye) kod kullanır. Bir frameworkle çalışmak genellikle fazlasıyla kolay bir iştir. Kaynak kod, indirilip belirli bir ortama kurulduktan hemen sonra kod yazmaya hazır hale gelir.

Popüler Frameworkler

Birçok framework birbirine benzer, zira işe yarar frameworkler genellikle aynı düzene sahiptirler. Üstelik, framework geliştiricileri diğer frameworklerdeki kodlara kendi ürünlerinde yer vererek her geçen gün daha kaliteli frameworklerin ortaya çıkmasını sağlarlar.

Framework seçerken dikkat edilmesi gereken başlıca şey yazılım dilidir. Örneğin, eğer PHP biliyorsanız, sıfırdan yeni bir dil öğrenmek yerine PHP frameworkünü kullanabilirsiniz. Elbette, eğer belli bir frameworkten faydalanmak istiyorsanız yeni bir yazılım dili öğrenmek her zaman seçenekleriniz arasındadır. Örneğin, başarılı bir framework olduğu için çoğu kişinin tercih ettiği Ruby on Rails kullanmak için Ruby öğrenmek gerekmektedir.

Elbette, hangi frameworkü kullanacağınız biraz da üzerinde uğraştığınız projeye bağlıdır. Dolayısıyla, eğer projenize uygun bir framework arayışına girmenizi tavsiye ederiz. Eğer en doğru frameworkü seçmek istiyor ancak frameworkler arasında farkları bilmiyorsanız aşağıdaki listeye göz atarak konu hakkında bilgi sahibi olabilir, projeniz için en uygun frameworkü seçebilirsiniz.

PHP

PHP, komut dosyaları için yaygın olarak kullanılan, çok amaçlı bir dildir. Mevcut PHP framworklerinden bazıları CakePHP, CodeIgniter, Laravel, Symfony, Yii ve Zend’dir.

  • CakePHP: Ruby on Rails’in sevilen özelliklerini içeren daha modern bir framework olarak tanımlayabileceğimiz CakePHP; hızlı yapısı, çok sayıda yerleşik test ve güvenlik özelliği ile dikkat çekmektedir.
  • CodeIgniter: Hızlı uygulama geliştirmek için ideal, çok sayıda kütüphane içeren, kullanımı kolay bir frameworktür.
  • Horde: Ücretsiz ve açık kaynaklı bir framework olan Horde, e-posta ve takvim gibi bileşenlere sahip olduğundan iş yeri yazılımlarında sıklıkla kullanılır. Kullanıcı tercihleri, dosya sıkıştırma, tarayıcı algılama, bağlantı izleme ve MIME kullanımı olanakları sebebiyle de tercih edilir.
  • Laravel: Ücretsiz, açık kaynaklı ve hızlı uygulama geliştirmeyi kolaylaştıran Laravel; popüler PHP frameworkleri arasındadır. CodeIgniter’den daha gelişmiş bir alternatif olması için tasarlanmıştır. Üzerine inşa edilmiş October adında bir içerik yönetim sistemine sahiptir. MVC desteği ve yerleşik birim test özelliği içerir. Ayrıca, Laravel, daha fazla özellik eklemeye olanak tanıyan modüler paket yöneticisine sahip olup ilişkisel veri tabanlarıyla iletişim kurmak için birden fazla yöntem sunar ve uygulama dağıtımı ile bakımına yardımcı olacak programlar barındırır.
  • Symfony: Verimli ve kararlı bir PHP frameworküdür. Yeniden kullanılabilir kütüphaneler ve bileşenler barındırır. Geliştiriciler için tam yapılandırma kontrolü sunan Symfony, Java programlama dilini kullanan Spring Framework’ten ilham alınarak oluşturulmuştur. Symfony, daha çok kurumsal bir amaçlı kullanım sunar. Öğrenmesi zor bir framework olsa da kullanıcı desteği ve güçlü dokümanları ile kullanım kolaylığı sağlar.
  • Yii: Karmaşık ancak hızlı yüklenen web sayfalarına ihtiyaç duyan uygulamalar için tasarlanmış açık kaynaklı, yüksek performanslı bir frameworktür. Kullanımı kolaydır ve hala aktif olarak kullanılmakta olan en eski PHP frameworklerinden biridir.
  • Zend: Kimlik doğrulama, formlar ve benzeri bileşenleri sebebiyle daha çok kurumsal amaçlarla kullanılır. Hızlı uygulama geliştirme için ideal değildir ancak birinci sınıf güvenlik ve yüksek performans sunar. Ayrıca, Zend frameworkünü dilediğiniz gibi genişletebilirsiniz.
  • Zikula: Hem bir içerik yönetim sistemi (CMS) hem de bir web uygulama çerçevesi olarak düşünülebilir. Symfony’nin bir uzantısıdır. Symfony’den farklı yanları arasında; dinamik özellik geliştirmeyi kolaylaştırması, tema sistemi, hızlı prototipleme desteği ve içerik yönetimi sistemi sayılabilir.

Rubby

En kullanışlı programlama dilleri arasında yer alan Rubby; modern ve kullanımı kolay bir programlama dilidir. Elbette, Rubby’nin başarısında Ruby on Rails frameworkünün parmağı olduğunu söylemeden geçemeyiz. Zira, Ruby on Rails yaygınlaşmadan önce Rubby çok da rağbet gören bir programlama dili değildi.

  • Ruby on Rails: 2000’lerin başında, David Heinemeier Hansson, Bootcamp’in amiral gemisi ürünüyle kullanılmak üzere özel bir web frameworkü geliştirmişti.

Hansson, daha sonra, ürünü destekleyen frameworkü açık kaynaklı bir proje olarak piyasaya sürdü. Ruby on Rails; MVC kullanan, her şeyin belirli bir düzende olduğu, sağlam uygulamalar geliştirmeye yarayan bir frameworktür.

  • Sinatra: Ünlü müzisyen Frank Sinatra’nın adını taşıyan bu framework, Ruby on Rails’in en büyük alternatiflerinden biridir.

Java

Kurumsal amaçla yaygın olarak kullanılan Java ile çalışanların en çok tercih ettiği framework Spring’tir.
Spring, herhangi bir paradigmayı veya programlama modelini izlemenizi gerektirmez, ancak MVC modelini takip etmek isterseniz, Spring MVC bileşenini kullanabilirsiniz.
Ayrıca, Java Enterprise Edition üzerinde web uygulamaları oluşturmak için mevcut uzantılardan da yararlanabilirsiniz.

Python

Python, özellikle veri bilimi alanında giderek daha yaygın bir şekilde kullanılmaya başlayan, yüksek düzeyli, nesneye yönelik, çok amaçlı bir programlama dilidir. Web geliştirme söz konusu olduğunda Python frameworklerinin kullanımı diğer diller kadar yaygın değildir.

  • Django: Ücretsiz ve açık kaynaklı olmasının yanı sıra, ihtiyacınız olan her şeyi, hatta daha fazlasını, bulabileceğiniz bir frameworktür. Django, Python kullanan geliştiricilerinin, veri odaklı karmaşık web siteleri oluşturmasını sağlar. CRUD (oluşturma, okuma, güncelleme ve silme) arayüzleri gibi özelliklere sahiptir. Basit projeler için tavsiye edilir.
  • Flask: Kullanımı kolay, esnek, mikro bir frameworktür. Belirli araçlar veya kütüphaneler gerektirmez. Uygulama özellikleri eklemek için sürekli güncellenen Flask uzantılarını kullanmanız gerekir. Flask, web uygulamanızı rahatlıkla kişiselleştirmenize olanak tanır.

JavaScript

JavaScript, web uygulaması geliştirmede en yaygın kullanılan teknolojilerden biridir.

  • Angular.js: Google ve açık kaynak kodlu katılımcılardan oluşan bir topluluk tarafından sunulur. Amacı, SPA’ların geliştirme ve test aşamalarını basitleştirmektir. MCV ve MVVW (Model-View-ViewModel) kullanır.
  • Express.js: Aslında bir web uygulama frameworkü değildir. MongoDB, Express.js, angular.js, node.js içeren MEAN.JS’nin bir parçasıdır. Express.js, Ruby dilini kullanan Sinatra’dan esinlenmiştir ve bir bütün olarak incelendiğinde çok basit bir projedir. Ancak, kullanıcılar eklentiler kullanarak ihtiyaç duydukları her şeyi kolaylıkla edinebilir.
  • Node.js: Sunucuda JavaScript kodu çalıştırmanıza izin veren popüler bir frameworktür. Node.js ile önyüz, ara katman veya sunucu tarafı için farklı diller kullanmanız gerekmez, JavaScript çok amaçlı bir şekilde kullanılabilir. Node.js kullanan uygulamalar PHP veya ASP.NET ile oluşturulan uygulamalara kıyasla daha hızlıdır. PHP veya ASP.NET uygulamaları istekleri sırayla işler, bu nedenle bekleme süreleri uygulamanın performansını büyük ölçüde etkiler. Ayrıca, Node.js; binlerce açık kaynak kütüphanesine, iki büyük mail listesine, IRC kanallarına ve geliştirici odaklı konferanslara sahip oldukça geniş bir kitleye sahiptir.
  • React.js: Tam olarak bir çerçeve olmayan React.js; geliştiricilerin dinamik kullanıcı arayüzleri oluşturmasını kolaylaştıran bir JavaScript kütüphanesidir. En büyük avantajı sayfanın yenilenmesine gerek kalmadan sürekli olarak güncellenip değiştirilebilen sayfalar oluşturulmasına izin vermesidir. React bir Facebook ürünüdür ve kullanımı Facebook Feed güncellemelerinde görülebilir. React.js, diğer JavaScript çerçeveleriyle birlikte rahatlıkla kullanılabilir.

Microsoft

Teknoloji endüstrisinin en büyük isimlerinden olan Microsoft, yazılım dünyasına framework konusunda da önemli katkılarda bulunmuştur.

  • ASP.NET/ASP.NET Core: Dinamik web siteleri, web uygulamaları ve web hizmetleri üretmenizi sağlayan açık kaynaklı, sunucu taraflı bir frameworktür. Microsoft’un ASP’sinin varisidir ve .NET Framework’ün bir parçasıdır. ASP.NET Core ise Windows’a özgü değildir. Windows’taki .NET Framework ve çapraz platform .NET Core’u kullanarak çalışır. ASP.NET Core derleme (compilation) ve NuGet paketlerinden faydalanır. Bulut uygulamaları için sunduğu optimizasyonlar başta olmak üzere sahip olduğu çeşitli özellikler ile geliştiricilere çeşitli avantajlar sunar.
  • Silverlight: Çoğunlukla eski uygulamalarda kullanılan Silverlight görsel içerik açısından zengin uygulamalarda tercih edilirdi.

Özet

Framework nedir?” sorusundan yola çıkıp frameworklerin avantajlarına ve popüler frameworklere değindik. Özetle, frameworklerin, projeler arası tekrarlanan işlemler söz konusu olduğunda süreci hızlandıran ve programcıların rahatlıkla yazılım geliştirilmesini sağlayan yardımcı yapılar olduğunu söyleyebiliriz.