Node.js

Node.js Nedir, Ne İşe Yarar?

Node.js, JavaScript çalıştırmak için kullanılan bir platformdur. İlk olarak 2009 yılında Ryan Dahl tarafından geliştirilmiştir. Açık kaynaklı ve platformlar arası bir çalıştırma ortamıdır.

NodeJS bir programlama dili değildir. Node.js, JavaScript'in asenkron yapısını kullanarak hızlı ve verimli bir şekilde çalışır. Node.js, V8 JavaScript motoru üzerinde çalıştığı için, JavaScript kodunu doğrudan makine koduna derler ve bu da hızlı bir performans sağlar. 

Node.js, web sunucusu tarafında çalışarak, sunucu taraflı web uygulamalarının geliştirilmesine olanak tanır. Bugün Node.js’yi, Paypal, Uber, Netflix ve Walmart gibi büyük şirketler tercih ediyor ve geliştirme süreçlerinde kullanıyor.


 

Node.js Programlama Dili midir?

Cevap: hayır. 

Node.js bir programlama dili değildir. Node.js, bir çalışma zamanı ortamıdır. Node.js çalışma zamanı, bir programlama dilinin üzerine inşa edilmiştir.

Çalışma zamanı ortamı (RTE), bir developer’ın kod oluşturmak için kullanabileceği web API'leri koleksiyonu ve bu kodu ayrıştırmak için kullanılan bir JavaScript motorudur. Bu özellik, Node.js’yi hafif, çok yönlü hale getirir. Kurulumunun kolayca tamamlanmasını sağlar. Node.js, projeyi optimize etmeye ve hızlandırmaya yardımcı olur.


 

Node.js'nin Avantajları

  1. Öğrenmesi Kolay -  Web geliştirmeye yeni başlayanlar için Node.js oldukça doğru bir tercihtir. Node.js’yi öğrenmek kolaydır. Ayrıca, çok sayıda öğretici belgesi de bulunur.
  2. Ölçeklenebilir - Node.js uygulamalar için geniş ölçeklenebilirlik sağlar. NodeJS, Chrome V8'in Google tarafından desteklenen motoru üzerine kurulmuştur. Bu sayede, yüksek verimlilikle çok sayıda eş zamanlı bağlantıyı yönetebilir. 
  3. Hız - Node.js hızlı bir çalışma zamanı ortamıdır.
  4. JavaScript Kullanımı -  Node.js, JavaScript üzerinde çalıştığı için, sunucu ve istemci taraflı kodların aynı dili kullanmasını kolaylaşır.
  5. Paketler - Node.js işi basitleştirebilecek çok sayıda açık kaynaklı paket bulundurur.
  6. Güçlü Backend - Node.js, C ve C++ ile yazılmıştır. Bu da Node.js’nin hızlı olmasını sağlar ve ağ desteği gibi özellikler ekler.
  7. Çoklu Platform - Platformlar arası destek sağlar. Node.js ile SaaS web siteleri, masaüstü uygulamaları ve mobil uygulamalar oluşturulur.
  8. Gerçek zamanlı Web Uygulamaları - Günümüzde kullanıcılar birbirleriyle gerçek zamanlı olarak etkileşim kurmak istiyor. Node.js kullanıcıların web sitesi ve diğer kullanıcılar ile iletişim kurmasını sağlar.
  9. Özgürlük - Node.js developer’ların kendi yöntemlerini uygulayabilmesi için daha fazla alan ve özgürlük sunar. Node.js ile her şey sıfırdan oluşturabilir ve her ayrıntı özelleştirilebilir. 
  10. Aktif Topluluk - Node.js geliştirici topluluğu, Node.js'nin sürekli olarak iyileştirilmesine katkıda bulunur. 


 

Node.js'nin Dezavantajları

Yukarıda listelenen tüm avantajlara rağmen, Node.js’nin dezavantajları da vardır. İşte Node.js'in dezavantajlarından bazıları:

  1. İşlem Yapıları - Node.js'in callback fonksiyonları kullanarak çalışması, bazı geliştiriciler tarafından zor bulabilir.
  2. Bellek Yönetimi - Node.js, bellek yönetimi için otomatik çöp toplama kullanır. Ancak, bu bazı durumlarda bellek sızıntılarına neden olabilir.
  3. Sınırlı CPU Kullanımı - Node.js, tek bir iş parçacığı üzerinde çalıştığı için, çok yoğun CPU işlemleri için uygun değildir.
  4. Kararsız API - Node.js'nin en büyük dezavantajlarından biri tutarlı olmamasıdır. Node.js'nin API'si sık sık değişir ve değişiklikler genellikle geriye dönük olarak uyumsuzdur. Bu durumda developer’lar, Node.js API'sini en son sürümüyle uyumlu hale getirmek için mevcut kod tabanında değişiklikler yapmak zorunda kalır. 


 

Node.js Nerelerde Kullanılır? 

Node.js, çok çeşitli uygulamalar için kullanılır. Node.js'nin başlıca kullanım alanları şunlardır:

Nesnelerin İnterneti

IoT (Nesnelerin İnterneti), sensörler, işaretçiler, aktüatörler ve veri göndermelerini gibi bir cihaz ağıdır. IoT uygulamaları, genellikle çok sayıda istek oluşturabilen küçük veri yığınları gönderdikleri için genellikle birden çok sensör içerir. Node.js, bu eş zamanlı istekleri hızlı bir şekilde işleyebildiği için iyi bir seçimdir. IoT sistemlerini geliştirmek isteyen kurum ve kuruluşlar için tercih edilen çözümlerden biridir. 

 

Gerçek Zamanlı Sohbet Uygulamaları

Gerçek zamanlı sohbet uygulamaları, bir göndericiden bir alıcıya metin, video veya sesli mesajların canlı olarak iletilmesini sağlayan herhangi bir online iletişim aracıdır. Sosyal medya uygulamalarında ve ticari sitelerde yaygın olarak kullanılırlar ve sonuç olarak birçok endüstrinin önemli bir parçasıdırlar.

Node.js, herhangi bir karmaşıklıkta gerçek zamanlı sohbetler oluşturmak için tüm temel işlevleri sağlar. Node.js, G/Ç görevlerini etkin bir şekilde yerine getirdiği için sohbet uygulamaları gibi yoğun veri kullanan programlarla çalışır. 

 

Tek Sayfa Uygulamaları

Tek Sayfa Uygulamaları (SPA'lar), bir masaüstü uygulamasına benzer şekilde kapsamlı bir kullanıcı deneyimi sağlamak amacıyla tüm uygulamanın tek bir sayfaya sığdığı popüler bir web geliştirme yaklaşımıdır. Günümüzde SPA'lar, sosyal ağ uygulamaları ve online metin araçlarında yaygın olarak kullanılır. En iyi SPA örneği sürekli aldığı güncellemeleriyle Gmail'dir.

Node.js, ağır G/Ç işlemleri arasında eş zamansız çağrıları verimli bir şekilde işleyebildiğinden, SPA'ların sayfayı yenilemeden veri güncellemelerine yardımcı olur. Aynı zamanda, Node.js SPA'ları oluştururken kullanılan birçok popüler JavaScript framework'üyle (Ember, Meteor, React, Angular) de aynı dilde (JavaScript) yazılmıştır. Bu, SPA'ların daha hızlı geliştirilmesini ve daha iyi bakımının yapılmasını sağlar.

 

Gerçek Zamanlı İş Birliği Araçları

Gerçek zamanlı iş birliği uygulamaları, ekip üyelerinin birlikte tarama, proje yönetimi, video ve sesli konferans, uygulama paylaşımı, belgelerin ortaklaşa düzenlenmesi ve daha fazlası için çeşitli işlemlerin yapılmasını sağlar. Popüler ve başarılı örnekler arasında Slack, Trello ve Google Docs yer alır.

Bu uygulamalarda birçok olay ve istek aynı anda gerçekleşir. Ekip üyeleri aynı anda yorum yapabilir veya aynı paragrafı düzenleyebilir. Node.js’nin eş zamansız ve olay tabanlı mimarisi, iş birliği uygulamaları için çok uygundur. 

 

Veri Akışı

Node.js, okunabilir ve yazılabilir akışların oluşturulmasına izin veren veri akışını destekleyen yerleşik modüllere sahiptir. Node.js, verilerin eş zamansız olarak dağıtılmasına yardımcı olur. Netflix gibi şirketler, veri akışı için Node.js kullanır. 

 

REST API

REST API tabanlı uygulamalar JavaScript uygulamalarının hem ön ucunda hem de arka ucunda kullanılır. Böylece bir sunucu, Node.js kullanarak REST API'leri aracılığıyla ön uçla kolayca iletişim kurabilir. Bu API, entegrasyon sürecini hızlandırır. Node.js, uygulama oluşturmak için kullanılabilen Express.js ve Koa.js gibi bir dizi paketleri de içerir. 


 

Node.js Nasıl Kurulur?

Node.js kurulumu oldukça basittir. Windows, macOS ve Linux'a kurmanın en uygun yöntemi şöyledir:

  1. Node.js web sitesinden Node.js’yi indirin.
  2. İndirilen dosyayı açın. Açılan kurulum penceresinde “İleri” butonuna basın.
  3. Hedef klasörü seçin ve “İleri” seçeneğine tıklayın.
  4. Yüklenecek özellikleri seçin.
  5. Gerekli araçları otomatik olarak kur” seçeneğini işaretleyin. “İleri'” ve ardından “Yükle” seçeneğine tıklayın. 


 

Node.js Nasıl Çalışır?

Node.js'nin belirli bir iş akışı vardır. Node.js, birden çok istemciyi aynı anda işlemek için "Tek Kanallı Olay Döngüsü" mimarisini kullanır. Tek bir işlem olarak çalışır, yani her istek için yeni bir iş parçacığı oluşturmaz. Bir iş parçacığı, sunucu tarafından gerçekleştirilmesi gereken bir dizi talimattır.

Bir istemci web sunucusuna bir istek gönderdiğinde, tek iş parçacıklı olay döngüsü bunu alır ve işlenmek üzere çalışan bir iş parçacığına gönderir.

Bu sırada Node.js, iş parçacığından yanıt beklemek ve CPU kaynaklarını boşa harcamak yerine bir sonraki görev üzerinde çalışmaya devam eder. Bu şekilde, büyük miktarda eş zamanlı isteği işleyebilir.

Node.js daha az iş parçacığı kullandığından, daha az kaynak/bellek kullanır ve bu da görevin daha hızlı yürütülmesini sağlar. Yoğun veri gerektiren görevlerin işlenmesi gerektiğinde, Java gibi çok iş parçacıklı dillerin kullanılması daha uygundur. Ancak, gerçek zamanlı uygulamalar için Node.js daha uygun bir seçim olacaktır. 

 

Node.js Uygulamalarına Örnekler

Node.js, ölçeklenebilir masaüstü ve mobil uygulamaların yanı sıra büyük miktarda bağlantıyı herhangi bir sorun yaşamadan yönetmesi gereken web ve IoT projeleri oluşturmak için de kullanılır. Bu nedenle, Amazon, Netflix, eBay, Reddit ve Paypal gibi şirketler Node.js'yi kullanıyor. 

 

  • ✅ Netflix: Netflix, dünyanın önde gelen medya akışı ve video sağlayıcısıdır. Dünya çapında 195 milyondan fazla abonesi için zengin bir deneyim oluşturmak üzere çok büyük miktarda A/B testi kullanan veri odaklı bir platformdur. Netflix, büyük miktarda trafiğin üstesinden gelmek için Node.js kullanır.

  • ✅ Linkedin: Linkedin iş ve istihdam odaklı bir sosyal ağ hizmetidir. Mobil uygulama arka uçlarını için Node.js kullanıyor.

  • ✅ Twitter: Twitter, aylık 330 milyondan fazla aktif kullanıcısı olan popüler bir sosyal ağ platformudur. Aynı zamanda dünyanın en çok ziyaret edilen on web sitesinden biridir. Twitter Node.js'ye geçerek sunduğu geliştirme hızını artırdı. 

  • ✅ Slack: Slack, ekiplerin daha verimli iletişim kurmasına ve birlikte çalışmasına yardımcı olan bir iş birliği aracıdır. 12 milyondan fazla aktif kullanıcısı olan Slack’i NASA, Airbnb ve eBay gibi şirketler kullanmaktadır. Slack, eş zamanlı istekleri yerine getirebilmek için Node.js'yi kullanır. 

  • ✅ Trello: Trello, bir proje yönetimi uygulamasıdır. Trello'nun sunucu tarafı Node.js'de oluşturulmuştur. Node.js, güncellemelerin anında yapılmasını sağlar.


 

Node.js ve NPM: NPM Nedir?

Node.js bir JavaScript çalıştırma ortamıdır. NPM yani Node Paket Yöneticisi, JavaScript ve Node.js kullanıcılarının kendi modüllerini diğer kişilerle paylaşmasına olanak sağlayan bir paket yöneticisidir. Yani NPM, Node.js ekosisteminin büyük bir parçasıdır. 

NPM, uygulama geliştirme sürecini daha hızlı ve verimli bir hale getirir. İçerisinde indirilebilir oldukça fazla sayıda paketi bulundurur. NPM'nin kullanımı ücretsizdir ve isteyen tüm developer’lar burada katkıda bulunur. Bu paketlerin tümü resmi web sitesinde bulunur. NPM’yi kullanmak için Node.js kurmak gerekir çünkü NPM, Node.js içerisinde varsayılan bir özellik olarak yer alır. 


 

Popüler Node.js Paketleri

Node.js için en popüler paketlerden bazıları şunlardır:

  • Express
  • MongoDB 
  • Socket.io
  • Lodash 
  • Moment
  • Commander.js 
  • Mocha 


 

Node.js Öğrenmek İçin Kaynaklar

Node.js öğrenmek için bilmeniz gereken en önemli şey JavaScript'tir. JavaScript öğrenmenin yolunu merak ediyorsanız, JavaScript nedir ve JavaScript mülakat soruları yazılarımızı inceleyebilirsiniz. 

İyi bir JavaScript bilgisine sahip olduğunuzda, Node.js'ye geçebilirsiniz. Node.js öğrenmek için birçok kaynak bulunmaktadır. İşte Node.js öğrenmek için kullanabileceğiniz bazı kaynaklar:

  • Node.js resmi web sitesi: Node.js'in resmi web sitesinde, Node.js hakkında ayrıntılı bilgi bulunmaktadır.
  • Udemy: Udemy gibi eğitim platformları, Node.js öğrenmek için kullanabileceğiniz kurslar sunar. 
  • YouTube: Node.js hakkında birçok video dersi ve eğitim videosu YouTube'da mevcuttur.
  • Kitaplar: Node.js ile ilgili birçok kitap mevcuttur. Ücretsiz olan bu Node.js eğitim kitabına göz atabilirsiniz. 
  • Node.js Bootcamp’leri: Birçok Bootcamp, Node.js'yi öğretmeyi sağlıyor. Açık olan bootcamp’lerimize buradan göz atabilirsiniz.


 

Sonuç

Node.js'yi web ve uygulama geliştirme için kullanmanın birçok nedeni var. Hızlı, ölçeklenebilir ve geliştirmeyi kolaylaştıran modüllere de sahip. Hızlı ve kolay bir şekilde uygulama geliştirmenize yardımcı olabilecek bir JavaScript framework’ü arıyorsanız, Node.js doğru bir seçim olacaktır. Node.js hakkında daha fazla bilgi edinmek istiyorsanız, Node.js mülakat soruları yazımıza da bir göz atabilirsiniz.


 

S.S.S

Node.js kaç günde öğrenilir?

Daha önceden JavaScript deneyimine sahip olduğunuz varsayılarak Node.js’yi öğrenmek 1 veya 2 ay sürecektir. JavaScript deneyiminiz yoksa ilk olarak JavaScript’i öğrenmeniz gerekir. 

Node.js'yi öğrenmede, kişisel öğrenme stilinin dışında en önemli faktörler, önceden ne kadar kodlama deneyimine sahip olduğunuz ve Node.js'yi öğrenebileceğiniz noktaya ulaşmak için hangi becerilerde ustalaşmanız gerektiği olacaktır. 

 

Node.js ücretsiz mi?

Node.js ücretsiz ve açık kaynaklı bir çalışma zamanı ortamıdır. 

 

Node.js ne kadar zor bir teknoloji?

Yeni bir beceri kazanmak her zaman için zordur. Node.js öğrenmenin zorlukları, önceki kodlama deneyiminiz ve Node.js eğitiminiz için harcadığınız zaman gibi faktörlere bağlıdır. 

 

Node.js Developer ne yapar?

Node.js developer, ağ uygulamalarını dağıtır ve sürdürür. Sunucular ve kullanıcılar arasındaki veri alışverişini yönetir, backend bileşenleri geliştirirler ve uygulamaları diğer web hizmetlerine bağlarlar. Ayrıca, web tabanlı uygulamaları entegre ederek frontend geliştiricileri de destekler.

 

Node.js ve JavaScript farkı nedir?

JavaScript, hafif, platformlar arası ve yorumlanmış istemci taraflı bir programlama dilidir. Node.js ise sunucu taraflı bir çalışma ortamıdır. 

 

Node.js Frontend mi, Backend mi?

Node.js'nin bir Backend teknoloji olduğu ve yalnızca sunucu oluşturmak için kullanıldığı developer’lar arasındaki yaygın bir yanılgıdır. Ancak Node.js, hem Backend hem de Frontend tarafında kullanılabilir.