Deno Nedir?
Deno, Rust ile yazılmış ve V8 Javascript motorunu kullanan Javascript ve Typescript için bir runtime'dır. Ryan Dahl (kendisi Node.js'in yapımcısı) tarafından Node.js'in eksikliklerinin var olması ve bunların çözümlerinin kolay olmaması sebebiyle oluşturulmuş olan Deno'nun temeli, 2008 yılında Dahl'ın yaptığı "Node.js Hakkında Pişman Olduğum 10 Şey" konuşmasına dayanmaktadır. Beta sürümü 3 Şubat 2020'de yayınlanan Deno'nun ilk kararlı sürümü 14 Mayıs 2020'de yayınlanmıştır.
Javascript geliştiricileri için oldukça önemli bir olay olan Deno'nun yayınlanması ile Node.js'in yerini alabilir mi soruları da akla gelen ilk sorulardan oldu. Deno aslında tıpkı Node.js gibidir ve aynı işlemleri yapmamıza imkan verir. Elbette birçok yönden Node.js'in gelişmiş bir versiyonu hedeflenmektedir. Node.js'i geliştirmek yerine yeni bir runtime ortaya çıkartılmasının en temel sebebi, yapılacak geliştirmelerin Node.js'in 2009'da atılmış temelinde değişiklikler yapılamamasıdır. Öyle ki bunları da bahsettiğimiz pişmanlıklarında sıralamıştır.
Deno;
- Rust
- TypeScript
- V8
kullanılarak geliştirilmiştir. Hem Javascript hem de Typescript desteklemektedir.
Node.js'de Yanlış Olan Neydi?
Elbette yanlışlardan bahsetmeden önce söylemeliyiz ki Node.js hala kullanılabilir ve herhangi bir çalışmayı engelleyici problemi bulunmuyor. Deno'nun gelmesi ile birlikte herkesin bir anda Deno kullanmaya başlamasını beklememeliyiz. Çünkü birçok şirket tarafından kullanılan Node.js, oldukça büyük bir topluluğa sahip ve kolay kolay vazgeçilemeyecek bir durumda. Buna karşın eksikliklerinin farkında olan geliştiriciler de veya yeni projelerde Deno tercih edenlerin sayısı sürekli artacaktır görüşündeyim.
Aşağıda Ryan Dahl'ın yapmış olduğu konuşmayı dinleyebilirsiniz.
Deno vs Node.js
Javascript, Node.js'in yayınlandığı 2009 yılından günümüze kadar çok fazla geliştirildi. Bu geliştirmeler beraberinde performansı da oldukça etkiledi. Böyle bir durumda Node.js'in geri kaldığı birçok nokta oldu. Bu sebeple Dahl, Node.js'i düzeltmeye çalışmak yerine yeni bir runtime'ı ortaya çıkarmak arasında ikinci yolu tercih etti. İlkini tercih etmemesinin sebebi de bu geliştirmelerin kolay kolay yapılabilecek şeyler olmamasıydı.
Dahl'a göre Node.js'te birçok eksik yer vardı. Konuşmasında da yer verdiklerinden öne çıkanları sıralamak gerekirse;
- Modül sistemi ve dağıtımı
- Güvenlik sorunları
- Desteklenmesi gereken eski API'lar
- Promise'in bulunmaması
- Paket yöneticisindeki problemler
- node_modules dosyasının büyüklüğü
Bunlara karşı Deno şöyle özetlenebilir;
- Modüller artık herhangi bir yerde barındırılabilirler. Elbette istersek local'den de çağırabiliriz. Ayrıca bu sayede modülleri güncelleyip güncellememek tamamen bize bağlı.
- Güvenlik Deno için çok önemli. Öyle ki bu konuda flag'ler eklenmiş durumda. Açıkça etkinleştirilmedikçe herhangi bir dosyaya veya ağ kaynağına erişim mümkün değildir.
- Geliştiriciler Typescript'ten tam olarak faydalanabilirler. Dahilidir.
- ES modüllerini kapsar (bahsettiğimiz URL destekli)
- Promise veya async gibi modern Javascript özelliklerini içerir.
- Standart modülleri vardır. Bu modüller Deno ekibi tarafından incelenir.
- Paket yöneticisi yoktur.
Deno ile Node.js Farklılıkları
Node.js | Deno |
C++ ve JavaScript ile yazılmıştır. | Rust ve TypeScript ile yazılmıştır. |
Resmi bir paket yöneticisi vardır: npm | Paket yöneticisi yoktur. ES modülü sayesinde URL'lerden içe aktarmaya izin verir. |
Paketleri içe aktarmak için CommonJS sözdizimini kullanır. | Paketleri içe aktarmak için ES Modüllerini kullanır. |
Callbacks-Based Standard Library kullanır. | Modern ECMAScript özelliklerini kullanır. |
Kullanıcının erişebildiği her şeyere erişebilir. | Kullanıcının izin verdiği her şeye erişebilir. |
Tüm bunlar baz alındığında yaklaşık 11 yıl önce çıkan Node.js'in yerine Deno'nun yavaş yavaş tercih edilmeye başlanacağına inanıyorum. Fakat elbette Node.js gerçekten harika ve uzun bir süre daha standart olmaya devam edecektir. Buna karşın Deno'nun first-class Typescript desteği, güvenlik ve beraberinde gelen geliştirmeler sayesinde yavaş yavaş tercih sebepleri artacaktır. Net bir şekilde söylemek elbette imkansız ama 10 yıl sonra başka bir teknolojinin de Deno'nun yerini almayacağını söylemek pek doğru olmaz.
Deno Öğrenmeli miyim?
Deno'nun özellikle geliştiriciler için pozitif etkileri olacaktır. Çünkü performans, güvenlik ve geliştiricilere sunulan yenilikler ile ciddi bir kitle tarafından benimsenmeye başlanacağını düşünüyorum. Node.js'in yerini alması konusunda ise bahsettiğimiz gibi bunun şuan için mümkün bir şey olmayacağını ama gelecekte bunu göreceğimizi düşünüyorum. Bu sebeple eğer halihazırda Node.js ile çalışmışlığı olan herkesin Deno'ya göz atmasını öneriyorum. Eğer daha öne bakmadıysanız başlangıç olarak Node.js daha iyi olacaktır.
Başlangıç için ilk kaynağımız tabiki de kendi kılavuzu olacaktır: https://deno.land/manual