Framework Nedir? sorusunun yanıtını; neredeyse tüm web sitelerinde, uygulamalarda, uzantılarda, programlarda ve diğer bilgisayar sistemlerindeki süreçlerin arkasında yer alan mekanizma olduğu için bilmemiz gerekir.
İskelet, çerçeve, çatı gibi anlamlara gelen framework; yazılım geliştirmek için destek / kılavuz görevi görerek, zaman tasarrufu sağlayan ve kısayollar sunan iskelet yapıdır.
Belirli ölçülerde yüzlerce kare kesmek için ne yaparsınız? Bir kare şablon hazırlarsınız değil mi? İşte programlamada da framework’ün yaptığı tam olarak budur!
Framework Neden Kullanılmalıdır?
Sağlam ve güvenli yapılar üstüne kod yazmanızı sağlayan frameworkler, tüm tekrarlı, rutin işlemlerin ve otomatik olarak yapılan uygulamaların kolay ve hızlı bir şeklide geliştirilmesini sağlar.
Frameworklerle, bir web uygulaması için dizin oluşturup index.html veya görüntülenecek herhangi bir başlangıç sayfası yazmak gibi aşamalardan kurtulursunuz.
Framewok Nasıl Çalışır?
Frameworkler sayesinde, programcılar iskeleti yeniden icat etmek yerine uygulamaları oluşturmaya odaklanabilirler.
Örneğin, Spring (Java) veya Symfony (PHP) kullanırken, geliştiricilerin, frameworkün mevcut bileşenleri nedeniyle verilerini nasıl saklayacaklarını ve kimlik doğrulamasını nasıl organize edeceklerini düşünmelerine gerek kalmaz.
Framework “uygulama programlama arayüzü” denen API ile ilişkilidir ve teknik olarak bir framework bir API içerir. Framework, temel oluştururken, API; 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 ve compiler (derleyici) denen aracı bir yazılım, kütüphaneler ve yazılım geliştirme sürecinde kullanılan diğer programları da içerebilir.
Belirli bir uygulama oluşturmak için genişletilen ve değiştirilen frameworkler, bir yazılımın temelini oluşturmak için soyutlama denen bir yüksek seviye kodu kullanır.
Bir frameworkle çalışmak genellikle oldukça kolaydır. Kaynak kodun tamamını indirip belirli bir ortama kurabilir ve kod yazmaya başlayabilirsiniz.
Popüler Frameworkler
Birçok frameworkün benzer olma nedeni, başarının taklitçiler yaratmasıdır. Framework geliştiricileri, diğerlerinin en iyi fikirlerine kendi kodlarında yer verir. En popüler çerçeveleri hem çok iyi hem de çok benzer yapan mükemmelliğin sebebi budur.
Seçeceğiniz framework için en büyük belirleyici faktör dildir. PHP biliyorsanız, yeni bir framework kullanmak uğruna yeni bir dil öğrenmek yerine PHP frameworkü kullanırsınız (Bunun en büyük istisnası, birçok insanın Ruby öğrenmeye başlamasına neden olan Ruby on Rails’dir).
Framework kullanımı, işin karmaşıklığına ve kapsamına bağlı olduğundan inşa etmek istediğiniz şeye çok benzer bir şey inşa edildiyse, onun frameworkünü kullanmak da alternatif olabilir.
Doğru frameworkü seçmeniz ve farklı seçeneklerin özellikleri ve işlevselliği hakkında bilgi sahibi olmanız için dillere göre listelediğimiz web geliştirme çerçevelerine göz atabilirsiniz.
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 iskele özelliklerini içeren daha modern bir çerçevedir. Yapılar hızlıdır ve çok sayıda yerleşik farklı test ve güvenlik özelliği sunar.
- CodeIgniter: Hızlı uygulama geliştirmeleri için önerilen, ç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şbirliğine dayalı yazılım oluşturmak isteyenlere önerilir. Kullanıcı tercihleri, dosya sıkıştırması, browser algılama, bağlantı izleme, MIME kullanımı için kullanılabilir.
- Laravel: Ücretsiz, açık kaynaklı ve hızlı uygulama geliştirmeyi kolaylaştıran en popüler PHP çerçeveleri arasındadır. CodeIgniter’den daha gelişmiş bir alternatif olacak şekilde tasarlanmıştır. Üzerine inşa edilmiş October adında bir içerik yönetim sistemi bulunur. MVC desteği, yerleşik birim test işlevselliğini içerir.
Ayrıca Laravel, özellik eklemeleri için modüler bir paket yöneticisi, ilişkisel veritabanlarıyla iletişim kurmak için birden fazla yöntem ve uygulama dağıtımı ile bakımına yardımcı olacak yardımcı programlara sahiptir. - Symfony: Verimli, kararlı ve olgun bir PHP çerçevesidir. Yeniden kullanılabilir kütüphaneler ve bileşenlere sahiptir. Geliştiriciler için tam yapılandırma kontrolü sunan Symfony, tescilli Java programlama dilinin kullanıcıları için mevcut bir framework olan Spring Framework’ten ilham almıştır. Daha çok kurumsal bir odağa sahiptir. Öğrenmek zor olsa da, destek ve güçlü dökümanlar mevcuttur.
- Yii: Karmaşık ancak hızlı yüklenen web sayfalarına ihtiyaç duyan uygulamalar için tasarlanmış açık kaynaklı, yüksek performanslı bir çerçevedir. Kullanımı kolaydır ve hala aktif olarak korunan en eski PHP çerçevelerinden biridir.
- Zend: Kimlik doğrulama, formlar ve benzeri bileşenleri olduğu için kurumsal framework arayanlar için iyi bir seçenek olabilir. Hızlı uygulama geliştirme için ideal değildir ancak birinci sınıf güvenlik yüksek performans ve platformunuzu gerektiği kadar genişletme gibi özelliklere sahiptir.
- Zikula: Bir web uygulaması çerçevesinden çok daha fazlasıdır. Hem içerik yönetim sistemi (CMS) hem web uygulama çerçevesi olarak düşünülebilir. Zikula, Symfony’nin bir uzantısıdır. Symfony’den farklı yanları arasında; dinamik özelliklerin geliştirilmesine yönelik artı özellikler, tema sistemi, hızlı prototipleme desteği ve CMS ile ilgili özellikleri sayılabilir.
Rubby
Programcıları mutlu etmek için tasarlanmış modern, kullanımı kolay, nesne yönelimli bir programlama dilidir. Ancak, Ruby on Rails frameworkünün başarısından önce Ruby, nadiren kullanılırdı.
- Ruby on Rails: 2000’lerin başında, David Heinemeier Hansson, Bootcamp’in amiral gemisi ürünüyle kullanılmak üzere özel bir web çerçevesi geliştirmişti. Hansson daha sonra ürünü destekleyen çerçeveyi açık kaynaklı bir proje olarak piyasaya sürdü.
Ruby on Rails, MVC kullanan, işleri belirli bir şekilde yapmaya teşvik etmek için tasarlanan (yaratıcılığı boğabilse de), sağlam uygulamalar geliştirme amacına uygun bir frameworktür.
- Sinatra: Ünlü müzisyen Frank Sinatra’nın adını taşıyan bu çerçeve, 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 sizin için önemliyse 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 alanlarında popüleritesi artan yüksek düzeyli, nesneye yönelik, çok amaçlı bir programlama dilidir. Web geliştirme için diğer diller kadar yaygın olarak kullanılmaz.
- Django: Python kullanıcıları için ücretsiz ve açık kaynaklı olmasının yanı sıra, ihtiyacınız olan her şeyi ve daha fazlasını bulacağınız bir frameworktür. Django’nun amacı, Python geliştiricilerinin veri odaklı karmaşık web siteleri oluşturmasını kolaylaştırmaktır.
CRUD (oluşturma, okuma, güncelleme ve silme) arayüzleri gibi yönetim özelliklerine sahiptir. Basit projeler için önerilir.
- Flask: Kullanımı kolay, esnek, mikro bir çerçeve olarak kabul edilir. Belirli araçlar veya kütüphaneler gerektirmez. Uygulama özellikleri eklemek için sık güncellenen çok sayıdaki Flask uzantılarını kullanmanız gerekir. Flask, web uygulamanızın belirli yönlerinin nasıl davranmasını istediğinize karar vermenize olanak tanır.
JavaScript
JavaScript, web uygulaması geliştirmenin çekirdeğini oluşturan teknolojilerden biridir.
- Angular.js: Google ve açık kaynak kodlu katılımcılardan oluşan bir topluluk tarafından sunulan bir frameworktür. Amacı, SPA’ların geliştirme ve test aşamalarını basitleştirmektir. MCV’yi ve MVVW (Model-View-ViewModel)’i kullanır.
- Express.js: Aslında bir web uygulama çerçevesi değildir. MongoDB, Express.js, angular.js, node.js içeren MEAN yığınının bir parçası olarak kullanılır.
Express.js, Ruby çerçevesi Sinatra’dan esinlenmiştir ve bir bütün olarak çok basit bir projedir, ancak kullanıcılar eklentileri kullanarak ihtiyaç duyduklarını kolaylıkla dahil edebilir.
- Node.js: Sunucu tarafında JavaScript kodu çalıştırmanıza izin veren popüler bir çerçevedir (JavaScript önceden yalnızca istemci tarafında kullanılırdı). Node.js ile ön uç, orta katman veya sunucu tarafı için farklı diller kullanmanız gerekmez, her yerde JavaScript kullanabilirsiniz.
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.
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 değil, geliştiricilerin dinamik kullanıcı arayüzleri oluşturmasını kolaylaştıran bir JavaScript kütüphanesidir.
Gücü; geliştiricilerin, bir sayfanın yenilenmesine gerek kalmadan verilerle sürekli olarak güncellenebilen ve değiştirilebilen sayfalar oluşturmasına izin vermesinde yatar.
React bir Facebook ürünüdür ve kullanımı Facebook Feed güncellemelerinde belirgindir. React.js, diğer JavaScript çerçeveleriyle birlikte kolaylıkla kullanılabilir.
Microsoft
Teknoloji endüstrisinin en büyük oyuncularından biri olan Microsoft, web uygulaması framework dünyasına ö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 çerçevedir. Microsoft’un ASP’sinin halefidir ve .NET Framework’ün bir parçasıdır.
ASP.NET Core Windows’a özgü değildir. Windows’taki .NET Framework ve çapraz platform .NET Core’u kullanarak çalışır.
ASP.NET Core sürekli derleme (compilation), NuGet paketleri kullanarak modülerlik, bulut uygulamaları için optimizasyonlar gibi özelliklere sahiptir:
- Silverlight: Çoğunlukla eski uygulamalarda kullanılan Silverlight medya açısından zengin uygulamalara için tercih edilirdi.
Özet
“Framework nedir?” sorusundan yola çıkarak avantajlarının neler olduğuna ve popüler türlerine değindik. Özetle frameworklein, projeler arası tekrarlanan detaylar söz konusu olduğunda süreci hızlandıran ve programcıların harika yazılımlar geliştirilmesini sağlayan deneyimli asistanlar olduğunu söyleyebiliriz.