Node.js, Ryan Dahl tarafından 2009 yılında ilk versiyonu geliştirilmiştir. Node.js’in ilk amacı hızlı ve ölçeklenebilir ağ uygulamaları oluşturmak için geliştirilmiş bir platformdur. Node.js, olay tabanlı (event-driven), hafif (lightweight) ve verimli, dağıtılmış cihazlarda çalışan veri yoğun gerçek zamanlı uygulamalar için çok iyi bir ortam sunar. Node.js, her ne kadar Javascript (istemci tarafında da kullanılır, tüm tarayıcıların ortak dili) kodları ile de olsa sunucu tarafında çalışır. Node.js’in en büyük avantajlarından biri JavaScript modüllerinden oluşan zengin bir kütüphane sunmasıdır.
Node.js en temel özellikleri
Eşzamansız (Asynchronous) ve Olay Tabanlı – Öncelikle eşzamanlı programlama hakkında bilgi verelim. Eşzamanlı programlamada, bir işlem başlattığınızda tüm işlem bitinceye kadar diğer istekler gönderilemez. Örneğin, kullanıcı bir dosya yüklemeye başladığında bu dosyanın sonuna kadar yüklenmesini beklemek zorundadır. Eşzamansız programlamada ise birden fazla işlem başlatılabilir. Buna eşzamansız veya engellenmemiş (non-blocking) programlama denir. İstemci sunucudan istekte bulunduğunda bir olay (event) bildirim mekanizması önceki istekten bir yanıt almasına yardımcı olur.
Web sunucusu üzerinden problemi karşılaştırmalı olarak biraz daha açalım. Bir web sunucusunun en temel görevi sunucuda bir dosyayı açmak ve içeriği istemciye göndermektir. Örneğin bir ASP veya PHP’ye yapılan bir dosya istemi nasıl yönetimine bakalım:
- Öncelikle bilgisayarın dosya sistemi bir görev yaratır.
- Dosya açılıp okununcaya kadar dosya sistemi bekler.
- Dosya okunduktan sonra bir metin dosyası üretilir.
- İçerik istemciye gönderilir.
- Diğer istemi yönetmek için dosya sistemi hazırdır.
Şimdi aynı olaya bir de Node.js tarafından bakalım.
- Bilgisayarın dosya sistemi bir görev yaratır.
- Diğer istemler için dosya sistemi hazırdır.
- Dosya sistemi dosyayı açıp okumaya başladığında, sunucu istemciye cevap gönderir.
- Node.js beklemeyi elimine eder, ve diğer isteklere devam eder.
Çok hızlı – Google Chrome Javascript V8 motoru sayesinde çok hızlı kod çalıştırmayı sağlar.
Tek Kanallı (Single Threaded) ancak Yüksek Ölçeklenebilir – Node.js, olay (event) döngüsüyle tek kanalı bir model kullanır. Etkinlik mekanizması sunucunun eşzamansız yanıt vermesine yardımcı olur ve sunucu istekleri işlemek için sınırlı iş parçacıkları oluşturan geleneksel sunuculara kıyasla çok ölçeklenebilir hale getirir. Node.js, tek bir iş parçacıklı program kullanır ve aynı program genelsel Apache HTTP Sunucusu gibi sunuculara göre çok daha fazla sayıda istekte bulunabilir.
Arabellek Yok – Node.js uygulamaları herhangi bir veriyi hiçbir zaman arabelleğe almıyor. Bu uygulamalar basitçe verileri parçalara ayırır.
License − Node.js, MIT lisansa sahiptir.
Node.js Kavramları
Node.js Uygulaması Geliştirme
Node.js uygulaması geliştirmek için bir metin düzenleyici (Notepad:) ve Node.js yükleme dosyası yeterlidir. Kullandığınız işletim sistemine uygun yükleme dosyasını https://nodejs.org/en/ adresinden temin edebilirsiniz. Daha sonra kod dosyanızı “node” isimli bir dosya ile kolayca yorumlayabilirsiniz. Tabii bu işin biraz ilkel tarafı aslında Node.js için güzel IDE’ler vardır. Örneğin WebStorm, Visual Studio Code, Codenvy, Atom, Intellij IDEA ve vb. birçok IDE mevcuttur. Buradaki kodları herhangi bir IDE üzerinde test edebilirsiniz.
Kaynaklar