blog posts

BunJS

BunJS nedir? Yeni JavaScript Runtime ile tanışın

BunJS Runtime, programcıların kullanması için sürekli olarak yeni araçlar sunan bir programlama dilidir . JavaScript ekosistemindeki en yeni araçlardan biri “Bun.js” dir. Bun.js, Node.js’nin yerini almayı ve sunucu taraflı JavaScript uygulamaları için daha hızlı performans sağlamayı amaçlayan bir projedir . “Faradars Magazine”den alınan bu yazıda Bun JS’nin ne olduğu ve nasıl çalıştığı, nasıl kurulup kurulacağı ve Bun JS ile ilgili daha birçok konuda açıklamalar bulunmaktadır.

 

BunJS nedir?

Bun.js , Jarred Sumner tarafından Zig programlama dili kullanılarak oluşturulan hızlı bir JavaScript çalıştırma ortamıdır . Bun.js’nin asıl amacı JavaScript’i tarayıcı dışında çalıştırmak için Node.js ve Deno.js’ye benzer bir platform sağlamaktır , ancak Bun.js onlardan daha fazla hız ve karmaşıklık sunar.

Bun.js’nin ne olduğuna yanıt olarak, Bun.js’nin temelde Node veya Deno gibi bir çalışma ortamı, “NPM” veya “Pnpm” gibi bir paket yönetim aracı ve bir araç içeren çok yönlü bir JavaScript araç kutusu olduğu söylenebilir. Yapı “webpack” veya “Vite” gibidir. Bun.js, hızla popülerlik kazanan ve geleneksel yaklaşımlara uygun bir alternatif haline gelen güçlü bir araçtır.

 

Bun.js’nin Tarihçesi

JavaScript başlangıçta web tarayıcılarında çalışacak şekilde tasarlandı, ancak Node.js, 2009’da “V8″ motorunu bir ” C++ ” programına yerleştirerek misyonunu biraz değiştirdi. NodeJS, sunucu tarafı uygulamaları ve gerçek zamanlı uygulamalar geliştirmek için JavaScript kullanımını etkinleştirdi. JavaScript geliştikçe, Node.js oluşturulduğunda mevcut olmayan JavaScript Promises ve ES modülleri gibi yeni özellikler eklendi.

2018’de Node.js’nin yaratıcısı Ryan Dahl, icadının bazı yönlerinden pişmanlık duydu. Bu, 2020’de güvenliği, daha iyi performansı ve TypeScript desteğini artırmayı amaçlayan Deno.js’nin geliştirilmesine yol açtı . Ancak Deno.js, Npm paketlerini yeniden yazmanın zorluğu ve Node.js’nin artan popülaritesi nedeniyle yaygın bir şekilde benimsenmedi.

1400’de (2022), Bun.js adlı yeni bir JavaScript çalışma zamanı beta (test) olarak yayınlandı. Bu yeni çalışma zamanı, Node.js ile hızlı performans ve birlikte çalışabilirlik vaat ediyor ve bu da bazılarının BanJS’nin NodeJS’nin tamamen yerine geçebileceğine inanmasına neden oluyor.

 

Node JS, Deno ve Bun JS arasındaki fark nedir?

Yukarıda bahsedildiği gibi BunJS, Node.js’ye benzer, ancak bir paket yöneticisi ve bir paket oluşturucu/aktarıcı gibi ek özelliklere sahip,BunJS Runtime sunucu taraflı bir JavaScript çalıştırma ortamıdır. Çalışma zamanı, Bun.js projesinin en gelişmiş kısmıdır, bunu paket yöneticisi ve paket oluşturucu takip eder.

Bun.js yaratıcısı Jarred Sumner’a göre Bun.js’nin amacı, mevcut ekosistemle uyumluluğu korurken JavaScript ile çalışmayı daha hızlı ve kolay hale getirmektir. Node.js’den farklı olarak Bun.js, WebKit/Safari JavaScriptCore motorunu kullanır ve JavaScript bağımlılıklarını en aza indirmek ve performansı artırmak için C ve Zig kitaplıkları kullanılarak sıfırdan oluşturulmuştur. Bu proje, “Node/NPM API”nin tamamını kapsamayı amaçlamaktadır ve “Uç Odaklı” özellikler içermektedir. BanJS hala geliştirme aşamasındadır ve bir tür deneysel yazılım olarak kabul edilir, ancak hızla gelişmektedir ve çok da uzak olmayan bir gelecekte adını daha çok duyacağız.

Node JS, Deno ve Bun JS arasındaki fark nedir sorusuna yanıt olarak, hepsinin JavaScript için web tarayıcıları dışında kullanılabilen birer çalışma ortamı türü olduğunu söyleyebiliriz. Ancak, nasıl çalıştıklarına ve JavaScript kodunu yürütmek için kullandıkları motorlara göre farklılık gösterirler. Bu arada, çalışma zamanı ortamları arasında en geniş topluluğa sahip olan BunJS Runtime ve en kararlı olarak kabul edilen NodeJS, diğer yandan Deno en güvenli olarak bilinir.

Node.js, C++ ile yazılmıştır ve Google’ın V8 motorunu kullanır. Deno ise ‘Rust’ ile yazılmış ve aynı zamanda bir V8 motor kullanıyor. Bun.js ise Zig ile yazılmıştır ve Safari tarayıcısı tarafından kullanılan JavaScriptCore Webkit motorunu kullanır.

BanJS, kıyaslama testlerinde Node ve Deno’dan en az üç kat daha iyi performans gösteren etkileyici performansıyla tanınır. Bun ayrıca paketleri kurmayı kolaylaştıran yerleşik Npm’ye (Düğüm Paket Yöneticisi) sahiptir. Ek olarak BanJS, TypeScript’i destekler ve TS ve JSX dosyalarını otomatik olarak aktarır. Bunların yanı sıra Bun, yerleşik SQLite3 istemcisi, Fetch ve WebSocket gibi web API’leri, ortam değişkenlerinin otomatik yüklenmesi ve test yürütme gibi kullanışlı özelliklere sahiptir.

 

Bun.js Ekosistemi Gerçekten Etkiliyor mu?

Buraya kadar Bun JS’nin ne olduğu ve diğer iki JavaScript runtime ortamından nasıl farklı olduğu anlatıldı; Ancak Bun JS’nin JavaScript ekosistemi üzerinde ciddi bir etkisi olacak mı, olmayacak mı? BanJS’nin piyasaya sürülmesi, geliştirici topluluğunda çok fazla heyecan yarattı. Birçoğu, güçlü yerleşik araçlarıyla JavaScript performansını iyileştirme ve üretkenliği artırma potansiyeli konusunda heyecanlı. Şimdiden 2.000’i aşan Discord sunucusundaki üye sayısı, bu yeni teknolojiyle ilgili heyecan düzeyinin kanıtıdır.BunJS Runtime Görünüşe göre Bun.js, JavaScript ekosistemi üzerinde önemli bir etki yaratmaya geliyor.

Aslında Bun.js, ” Makine Öğrenimi” , “Yapay Zeka” ve oyun geliştirme gibi önemli alanlarda JavaScript’in performansını iyileştirebilecek ve JavaScript’in daha iyi benimsenmesine neden olabilecek umut verici bir teknoloji olarak kabul edilmektedir .

 

Node.js, Deno.js ve Bun JS’nin geleceği nedir?

JavaScript’in parlak bir geleceği var ve önümüzdeki yıllarda popülerliğini koruması bekleniyor. Aynı durum Node.js, Deno.js ve Bun.js için de geçerlidir. Node.js, yakın zamanda yayınlanan 18.0 sürümü ile düzenli olarak güncellenmeye devam ediyor. Dahil olmak üzere birçok şirket, altyapılarında kullanmaya devam ediyor ve startup’lar da bunu takip ediyor. Deno.js de hızla büyüyor ve yönetilen JavaScript çalışma zamanı hizmetleri sunan bir tür “SaaS” çözümüne doğru genişliyor.

Öte yandan Bun.js, gelişen bir teknolojidir ve sınırlı desteğe sahiptir ve şu anda üretime hazır yazılımlar için uygun değildir. Ancak BanJS, hız ve üretkenlik açısından JavaScript geliştiricileri için oyunun kurallarını değiştirme potansiyeline sahiptir. Her üç teknolojinin de ekosistemde bir arada var olması ve her birinin kendine özgü güçlü yönleri BunJS Runtime olması nedeniyle popüler kalması muhtemeldir. Genel olarak, Node.js en büyük ve en kararlı topluluğa sahiptir, Deno.js önemli ölçüde güvenliğe sahiptir ve Bun.js performans ve üretkenliğe odaklanır.

 

Bun.js nasıl yüklenir

Bun’u kurmak için, herhangi bir işletim sistemine yerel bir paket olarak veya bir NPM global paketi olarak kurmak mümkündür , her iki yöntem de aşağıda açıklanacaktır.

NPM aracılığıyla Bun Kurulumu

Bun’u kurmak için, NPM’yi herhangi bir işletim sisteminde yerel bir paket olarak almak veya global bir NPM paketi olarak kurmak için kullanabilirsiniz. Kurulduktan sonra Bun, yeni bir React uygulaması oluşturmak için kullanılabilir, süreç, kullanmakla tamamen aynıdır. npx oluştur-tepki-uygulama benim-uygulamam   Dır-dir. Bun’u kullanmak NPM’den daha hızlıdır ve ilgili komutları çalıştırarak kütüphaneleri kullanarak yeni bir proje oluşturabilirsiniz. oluştur-tepki-uygulaması  başladı. Ban GS’yi NPM ile kurma komutu aşağıdaki gibidir:

$ npm install -g bun
$ bun -v
0.5.5

Create React App’i çalıştırarak Bun’u kurun

emir oluştur-tepki-uygulaması Hızlı çalışırsa, adı verilen bir React uygulaması topuz tepkisi  başlayacak Bu komut, gerekli Düğüm modüllerini otomatik olarak kuracak ve gerekli dosyaları oluşturacaktır. Komutu çalıştırdıktan sonra, dizin topuz tepkisi  ile geliştirme sunucusunu açın. topuz dev  başlattı Ardından programın ana sayfasını adreste bulabilirsiniz. yerel ana bilgisayar: 3000  Görünüş. İlgili komut aşağıdaki gibidir:

$ bun create react ./bun-react
[package.json] Detected React - added "react-refresh"
$ bun install // This happens automatically
[12.00ms] bun install
$ bun bun ./src/index.jsx // this happens automatically
[720.00ms] bun create react
eğer dosya paket.json  İnceleme üzerine, Bun’un NPM ile aynı şeyi yaptığı, ancak bu sefer çok daha hızlı olduğu ortaya çıktı.

Windows’ta Bun JS nasıl kurulur?

Bun JS’yi Windows’a kurmak bazı önkoşullar gerektirir ve kurulum süreci Mac ve Linux işletim sistemlerindeki kurulum süreci kadar basit değildir . Yazının bu bölümünde Bun JS’nin ne olduğunu ve misyonunu anlattıktan sonra sıra Windows işletim sisteminde başlatmaya gelecektir.BunJS Runtime Bu amaçla, aşağıda listelenen birkaç adım gerekli olacaktır.

1. Windows’ta Linux alt sisteminin etkinleştirilmesi

Ban GS’yi Windows’a kurmak için ilk adım, Linux işletim sistemi için “Windows Alt Sistemi” özelliğini etkinleştirmektir ve bu amaçla sırasıyla aşağıdaki adımlar gerçekleştirilmelidir:

  1. Windows arama kutusunda “Windows Özellikleri” terimini arayın ve “Windows özelliklerini aç veya kapat” seçeneğini seçin.
  2. Sayfayı kaydırın veya aşağı sürükleyin ve “Linux için Windows Alt Sistemi” ve “Sanal Makine Platformu” seçeneklerini işaretleyin.
  3. Tamam düğmesine basın ve belirtilen özellikleri uygulamak için Windows’u yeniden başlatın

Yukarıdaki adımları uygulayarak, artık Windows için “Windows Alt Sistemi” etkinleştirilmiştir.

  • Not : Terminalde veya Windows komut satırında aşağıdaki komut çalıştırılarak ikinci seçenek veya “Sanal Makine Platformu” da etkinleştirilecektir:
bcdedit /set hypervisorlaunchtype auto
Başarılı yürütme durumunda çıktısı aşağıdaki gibi olacaktır:

2. Ubuntu CLI’yi kurun

Bun JS kurulumu için bir sonraki adım Windows üzerinde “Linux Ubuntu CLI” indirip kurmaktır.Bunu yapmak için aşağıdaki adımları takip ediniz.

  1. “Windows Mağazası”nı açın ve içinde ” Ubuntu ” yu arayın
  2. Ubuntu’nun bir kopyasını indirin ve kurun
  3. İndirilen programı açın ve kurulumun bitmesini bekleyin

Şimdi programı açarak kullanıcıdan kullanıcı adı ve şifresini belirlemesi istenir, bu aşamada kullanıcı istediği kullanıcı adı ve şifresini seçmelidir.BunJS Runtime Yukarıdaki adımları izleyerek, Ubuntu CLI artık Windows’a yüklenmiştir.

3. Bun JS’yi Windows’a Kurmak

Son adım, Bun JS’yi Windows’a kurmaktır. Bunu yapmak için önce Ubuntu terminalinde aşağıdaki komutu girin:

sudo apt install unzip
Aşağıdaki görsele göre:

Şimdi aşağıdaki komutu yürütme zamanı:

curl https://bun.sh/install | bash
Bu komut, Bun’u bu runtime ortamının ana sitesinden indirecek ve indirme ve kurulum başarılı olursa, kullanıcıya aşağıdaki görüntüye benzer bir şey görüntülenecektir.

Artık Bun JS, Windows’ta başarıyla kuruldu ve kolayca kullanılabilir. Aşağıda, nasıl çalıştırılacağı ve oluşturulacağı incelenecek olan basit bir Bun JS programı örneği verilmiştir.

Bun JS programları nasıl çalıştırılır

Bun JS programlarını çalıştırmak basit ve çok adımlı bir işlemdir ve uygulanması, Node.js eğitiminde tam olarak ele alınan Node.js programlarının çalıştırılmasına benzer olacaktır . Bunu yapmak için, ilgili program kodunu bir JavaScript dosyasına yazıp kaydetmeniz gerekir. Bu örneğin varsayımsal kod parçası aşağıdaki gibi olacaktır, bu da adlı bir dosyadadır. sunucu.js  Kaydedildi:

export default {
  port: 3000,
  fetch(request) {
    return new Response("Welcome to Faradars Mag");
  },
};
Yukarıdaki kod, bağlantı noktası numarasını (3000) ve bir getirme yöntemini belirten web sunucusu için bir yapılandırma nesnesidir. Bu web sunucusu, sunucuya bir istek gönderildiğinde istenen mesajı görüntüler. Yukarıdaki kod, Ubuntu terminalinde aşağıdaki komut çalıştırılarak yürütülecektir.
bun run server.js
Yukarıdaki kodun çıktısı aşağıdaki gibidir:

Edge ve sunucusuz uygulamaları dağıtmak için Bun

BanJS, “Uç ve Sunucusuz” uygulamalar için hızlı ve verimli dağıtım sağlayan bir paket yöneticisi ve komut dosyası çalıştırıcıdır. Bun ile, Node/NPM ile görevleri çalıştırmak için harcanan süre önemli ölçüde azalır çünkü Node sürecin başlangıcında çok daha hızlıdır. Topuz sırasına göre topuz dev  , komut eşdeğeri npm geliştiriciyi çalıştır  Tüm süreci çok daha hızlı ve kolay hale getirir.

Bun, hızlı başlatma özelliği sayesinde sunucusuz ve uç bilgi işlem ortamları için uygun bir araçtır. BanJS, komut dosyalarını hızlı bir şekilde çalışır hale getirebilir ve talebe bağlı olarak ölçeği büyütmeyi veya küçültmeyi kolaylaştırır. Bu özellik, sunucusuz ve uç dağıtımlar için önemlidir ve ölçeklenebilirlik ilkesine uyulduğu anlamına gelir; bu, düğümlerin gerektiğinde hızlı ve verimli bir şekilde oluşturulabileceği ve ardından talep azaldığında kaldırılabileceği anlamına gelir.BunJS Runtime Bun’un hızlı başlatılması, onu bu tür ortamlar için mükemmel bir seçim haline getirir.

Next.js , Vue.js ve Svelte uygulamaları için topuz

Bun, Next uygulamasına başlamayı kolaylaştırır. Yeni bir proje oluşturmak için, sadece komut bun next./app oluştur  idam edilmelidir. Mevcut şablonları görüntülemek de yeterlidir. çörek oluşturmak  Şablonların listesini görüntülemek için terminale girin. Bun 0.0.5.5’te, aralarından seçim yapabileceğiniz bir düzineden fazla şablon vardır ve kullanıcılara farklı projeleri yürütmek için birçok seçenek sunar.

BanJS ayrıca aşağıdakiler gibi dosyaları desteklemek için özelleştirilebilir “Yükleyiciler” sağlar: .ince  Ve .vue  dahili yükleyiciler tarafından desteklenmeyenleri sağlar. Bun.js, özel yükleyicilerle birçok farklı kullanıma uyum sağlayabilir.

Bun, SvelteKit’i bir test adaptörüyle çalıştırmak için de kullanılabilir BunJS Runtime. ‘API Bun’ hızla değiştiğinden ve SvelteKit bu güncellemelere güvendiğinden, bu proje halen devam eden bir çalışmadır.

Kaynaktan kaynağa derleyici ve Bun JS modülleri

Bun, “Transpiling” (kaynaktan kaynağa derleyici) ihtiyacını ortadan kaldırarak oluşturma sürecini basitleştirmeye çalışır. Bu, CSS ve JSX gibi CSS ile çalışan çeşitli teknolojiler nedeniyle zordur. Bu teknolojiler hızla gelişebilir ve Ağaç Sallama ve Küçültme gibi karmaşıklıkları beraberinde getirebilir.

BanJS, temelde Node/NPM’den daha iyi bir paket yönetim sistemi yaratmayı amaçlayan iddialı bir projedir, ancak önünde çetin bir savaş vardır. Bun’un yol haritası, yapılması gerekenleri özetlemektedir. Modüllerin taşınması, paketlenmesi ve şeffaflığı gibi şeyler karmaşık bir süreç olabilen şeylerdir. Bun’un belgeleri bu karmaşıklığı doğruluyor ve insanları bu zorluğun üstesinden gelmeye teşvik edecek. Bun ile geliştiriciler, Node ve NPM’den bile daha iyi bir sistem oluşturabilirler.

Sunucu olarak topuz

Bun, WASM ikili dosyalarını çalıştırmak için bir tür sunucu olarak kullanılabilir. Ek olarak, BanJS’nin HTTP isteklerini işlemek için sunucusuz bir ortamı taklit eden kendi API’si vardır. Örneğin, aşağıda adlı bir dosya var. server.ts  Aşağıdaki kodu oluşturdu ve ona ekledi. Bundan sonra, basitçe Bun ile çalıştırılabilir.

export default {
  port: 3000,
  fetch(request: Request) {
    return new Response("Hello World");
  }
};
Yukarıdaki sunucuyu çalıştırmak için komut vermeniz yeterlidir. topuz server.ts  terminalde çalıştırın. Şimdi adresi ziyaret ederek yerel ana bilgisayar: 3000  İleti Selam Dünya  İncelenen yukarıdaki örnekteki gibi görüntülenecektir.

Bun, fetch yöntemiyle herhangi bir varsayılan dışa aktarma nesnesinin bir sunucu türü olduğunu otomatik olarak varsayar ve onu Bun.serve API’si olarak görür. Sonraki örnek, bu API’nin bir örneğini göstermektedir. Bun JS tarafından sağlanan API’ler, iyi bilinen web standartlarını takip edecek ve İstek ve Yanıt nesnelerini kullanacak şekilde tasarlanmıştır. Sonraki örnek, istenen URL’yi almak ve görüntülemek için İstek nesnesini kullanır.

Hizmet API’si olarak toplayın

Aşağıdaki örnekte Bun, Serve API olarak kullanılır:

Bun.serve({
  fetch(req) {
    return new Response("You visited: " + JSON.stringify(req.url));
  },
});
Bildiğimiz gibi Bun, web uygulamalarının geliştirilmesini ve bakımını kolaylaştırmak için tasarlanmış sunucu taraflı bir JavaScript platformudur. Düğüm API’leri (NAPI), Düğüm geliştirmeyi basitleştirmek için bir dizi özellik sağlar, ancak yine de bir “Hızlı” çerçeve uygulamak için yeterince kapsamlı değildir. Ancak, Bun için Express’e benzer işlevsellik sağlayan birkaç proje var ve bunlardan biri BunRest.

Bun JS’nin faydaları nelerdir?

BanJS ile çalışma zamanı ortamını kurma ve sunucu tarafı JavaScript geliştirme görevlerini gerçekleştirmek için gerekli araçları edinme süreci basitleştirilmiştir. Çalışma zamanı ortamını, paket yöneticisini ve diğer araçları ayrı ayrı indirip kurmak yerine BanJS, kullanıcıların ihtiyaç duydukları her şeyi bir kerede almalarını sağlar. Tek yapmanız gereken BanJS’yi kurmak ve projeyi başlatmak. Bunların yanı sıra performans iyileştirme, hız artışı ve ölçeklenebilirlik ilkesine bağlılık BANGS’ın diğer avantajlarıdır.

Sunucu taraflı JavaScript’e yeni bir yaklaşım

BanJS, sunucu taraflı JavaScript ihtiyaçlarına çözüm olmayı amaçlayan yüksek potansiyelli bir projedir. Oluşturma işlemlerinden gömülü SQLite örneklerini barındırmaya kadar, Bun her şeyi kapsıyor. Bu yeni teknoloji, yerel işlevleri uygulamak için “Bun FFI” (Yabancı İşlev Arayüzü) bile sağlar. Bun’un yol haritası, çok çeşitli hedeflerin ana hatlarını çiziyor ve projenin hedeflerini ve potansiyelini gösteriyor.

Zig’i Bun için bir üs olarak kullanmak ilginç bir gelişme. Zig yalnızca bir tür programlama dili değildir , aynı zamanda yerleşik paketlere ve yapı yönetimi özelliklerine de sahiptir. BanJS, bu Zig yaklaşımının harika bir örneğidir ve genel amaçlı bir dil oluşturma hedeflerinin nasıl daha ulaşılabilir hale geldiğini gösterir. Genel amaçlı bir dil, gerekli destek araçlarının en baştan dile dahil edilmesi anlamına gelir.

Programlama dilleri son yıllarda çok yol kat etti. Günümüzde birçok kullanıcı ve geliştirici, paket yönetim araçlarına sahip olmanın ve belirli bir programlama dilini etkin bir şekilde kullanmak için araçlar oluşturmanın önemine öncelik vermektedir. Tasarımcılar artık bu özelliği ve avantajı en baştan bu araçları dile dahil ederek değerlendiriyor. İnsanlık, programlama dillerinin en başından itibaren yardımcı araçları taşıma yeteneğine sahip olduğu ve bu yaklaşımla daha eksiksiz ve güçlü hale geldiği yeni ve heyecan verici bir döneme giriyor.

son söz

Bun, şu anda beta sürümünde olan yeni bir JavaScript ve TypeScript çalıştırma ortamıdır. Bu çalışma zamanı, hızlı bir şekilde başlamak, daha fazla işlevsellik sağlamak ve geliştiricilere daha basit araçlar sağlamak için tasarlanmıştır. Bun, Node’un modül çözünürlüğünü uygulayan ve ayrıca birkaç yerleşik web API’sini uygulayacak bir NPM istemci türüne sahiptir. Zig dilinde yazılan BanJS, V8 JavaScript motorundan daha hızlı olduğu söylenen JavaScriptCore WebKit motorunu kullanıyor. Faradars dergisinden çıkan bu yazıda Bun JS’nin ne olduğu, Bun.js’nin özellikleri, NodeJS ve Deno ile karşılaştırması, nasıl çalıştırılacağı ve başlatılacağı hakkında açıklamalar yapıldı.