Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Node.js, Deno ve JavaScript ile Backend Geliştirmenin Dünü ve Bugünü

Node.js, Deno ve JavaScript ile Backend Geliştirmenin Dünü ve Bugünü

Bu sunumda Web'in geçmişine kadar giderek JavaScript'in doğduğu ve olgunlaştığı browser savaşlarına kısaca bir değindikten sonra, JavaScript'in Backend serüveninden bahsediyoruz. ve <% %> tag'leri arasındaki JavaScript'in node.js ve Deno ile birlikte runtime haline gelip değişik platformlara taşınması irdelendikten sonra, Backend JavaScript dünyasına en son eklenen Deno ile birkaç örnek proje demosu yapıyoruz.

Eser Ozvataf

June 30, 2020
Tweet

More Decks by Eser Ozvataf

Other Decks in Programming

Transcript

  1. ACM Hacettepe ACS Days 19 30.06.2020 Node.js, Deno ve JavaScript

    ile Backend Geliştirmenin Dünü ve Bugünü Eser Özvataf
  2. HAKKIMDA ESER ÖZVATAF ▸ Yazılım Yöneticisi @ Setur ▸ Alaylı

    ve Mektepli ▸ açık-kaynak.org Topluluk Lideri ▸ İçerik Üreticisi /eserozvataf /eserozvataf /laroux /EserOzvataf
  3. ‣ 1. JAVASCRIPT ‣ 2. BACKEND JS ‣ 2.1. NODE.JS

    ‣ 2.2. DENO ‣ 3. BUGÜN Bugün bahsedeceklerim:
  4. 1. JAVASCRIPT NCSA Mosaic 1.0 – İlk Web Browser, 22

    Nisan 1993 Netscape 0.9 – 13 Ekim 1994 BROWSER SAVAŞLARI – İLK CELSE
  5. 1. JAVASCRIPT (let loop ((n 1)) (if (> n 10)

    '() (cons n (loop (+ n 1))))) Scheme dili bir Lisp dialektidir ▸ Web’e dinamizm kazandırmak amaçlı “Mocha” projesi başlatıldı. Web’e özel bir Scheme diyalekti geliştirilecekti. ▸ Bu esnada Netscape ve Sun mühendisleri diğer koldan Java’yı browserlara adapte etmeye çalışıp kendi VM’lerini yazmışlardı. ▸ Zaman baskısıyla Brendan Eich deklaratif bir dilden çok bugün JavaScript olarak anmaya başladığımız dilin temelini geliştirdi ve ismini LiveScript olarak belirledi. ▸ Yeni dilin browser’a entegre edilecek Java’ya kıyasla daha hafif işler üstlenmesini istediler. Bu nedenle ismi JavaScript oldu. Ancak Java kısmı hiç çıkmadı. MOCHA PROJESİ
  6. 1. JAVASCRIPT JAVASCRIPT’İN TARİHÇESİ ▸ İlk Sürüm – 1995: Netscape’in

    web’e dinamizm katma çabasıyla ortaya çıkmıştı. ▸ ES1 – 1997: ECMA International tarafından standartlaştırıldı. ▸ ES2 – 1998: Spesifikasyon üzerinde editöryal güncellemeler. ▸ ES3 – 1999: RegExpler, try/catch, hata tanımları, v.s. ▸ ES4 – 2003: İptal edilen sürüm. Bazı özellikleri ES2015’de kullanıldı. ▸ ES5 – 2009: JSON, strict mode, array metotları, vs. ▸ ES2015 – 2015: Classlar, promiseler, arrow functionlar, let/const, vs. ▸ ES2016+ – Her yıl gelen güncellemeler.
  7. 2. BACKEND JS JAVASCRIPT’İN BACKEND TARİHÇESİ ▸ 1996 – Netscape

    Enterprise Server üzerinde Netscape LiveWire Pro (<server> tagleri) ▸ 1996 – IIS üzerinde Microsoft’un ASP’si (<% %> tagleri ile JScript) ▸ 2000’ler – Netscape’den kalan mirasların devamı Rhino (Java) ve SpiderMonkey (C) JS motorlarını backend uygulamaların içine gömebileceğiniz mimariler (Örnek: Aptana Jaxer) ▸ 2009 – node.js: Event-driven, non-blocking, JavaScript runtime + dependency management ▸ 2020 – Deno
  8. 2. BACKEND JS NODE.JS TARİHÇESİ ▸ 2009 – Chrome’da bulunan

    V8 JavaScript motoru üzerine yazıldı, ilk sürüm yalnızca Linux ve macOS destekliydi ▸ 2009 – Joyent tarafından sponsorluk kazandı ▸ 2010 – paket yönetimi için npm tanıtıldı ▸ 2011 – Microsoft ve Joyent’in katkılarıyla Windows platformuna geldi ▸ 2014 – io.js isimli bir topluluk kopyası oluşturuldu ▸ 2015 – io.js ile tekrar birleştiler
  9. 2. BACKEND JS DENO TARİHÇESİ ▸ Mayıs 2018 – Ryan

    Dahl üzerine çalışmaya başladı ▸ Haziran 2018 – Ryan Dahl JSConf’da node.js’i tasarlarken yaptığı 10 hatayı sunum haline getirdi ▸ Mayıs 2020 – 13 Mayıs’ta ilk sürümünü yayınladı
  10. 2. BACKEND JS NODE.JS ▸ Modül Sistemi: CommonJS + NPM

    ▸ Araç Desteği: Formatter, linter, test, paketleme ve doküman araçları 3. parti ▸ Native Uzantılar: GYP ▸ Kendi standard kütüphanesi ▸ Browser API’ından biraz farklılaşan API’lar ▸ Örnek: fetch API yok, request ▸ Modül Sistemi: ES Modules + deno.land ▸ Araç Desteği: Formatter, linter, test, paketleme ve doküman araçları içinde ▸ Native Uzantılar: GN + Rust’ın cargo sistemi ▸ Go’dan esinlenilen modern bir standard kütüphane ▸ Promise’ler veya yeni JavaScript standartlarının özellikleri ilk günden düşünülmüş ▸ Browser API’ı ile uyumlu kalmaya çalışmak proje hedeflerinden biri DENO
  11. 2. BACKEND JS NODE.JS’DE TATSIZ DENEYİMLER ▸ API tasarımı nedeniyle

    Callback Hell ▸ Paket sürümleme hataları nedeniyle lock dosyaları ▸ Paketler nedeniyle devasa node_modules klasörleri ▸ Modül çözümleme algoritması araçlar için sorun teşkil ediyordu ▸ ES2015 ve/veya TypeScript için Transpilation ▸ io.js ile birleşene kadar Promise’ler veya ES2015 özellikleri yoktu
  12. 2. BACKEND JS DENO’DA UMUT VAAD EDENLER ▸ TypeScript desteği

    ▸ Bundler, dependency info, linter, formatter, documentor built-in ▸ Güvenli runtime ▸ Tek binary ve taşınabilirlik ▸ Browser’da standartlaşan ancak server-side’a yeni gelen standard tipler ▸ Streamler, Eventler ▸ URL, Blob, File, FormData, Headers, Request, Response ▸ TextEncoder, TextDecoder
  13. 2. BACKEND JS DENO YORUMLAR ▸ Üzücü haber: node.js ile

    uyumluluğu ▸ İyimserlik: bugün başlıyorsanız node.js’i komple unutup Deno ile başlayabilirsiniz ▸ İyimserlik: node.js API’larına bağımlı olmayan npm paketlerinizi Deno’da kullanabilirsiniz ▸ Yalnız require()’a dikkat etmek gerekli ▸ Benchmarklarda henüz node.js’den daha yavaş ▸ Deno’da profesyonel anlamda çalışmak için; yeterli ekosistem oluşmadan giriş yapmak tehlikeli ▸ Örnek: veritabanı v.b. aktif soket bağlantılı kütüphaneler
  14. 2. BACKEND JS DENO İLE NE YAZMALI? ▸ Araçlar ▸

    PoC ▸ Çok fazla trafik almayan, bir mimarinin göbeğinde olmayan, hata toleransı olan, sorun olduğunda benzerini hızlıca node.js ile ayağa kaldırabileceğiniz, API ve/veya mikroservisler ▸ Topluluk desteği ihtiyacınız varsa biraz bekleyebilirsiniz
  15. 3. BUGÜN DEMO ▸ Standard Library ve 3. parti bileşenler

    ▸ CLI https://github.com/eserozvataf/hex-functions ▸ Backend API Service https://github.com/eserozvataf/hex-service
  16. KAPANIŞ İLETİŞİMDE KALALIM ▸ Twitch: Canlı Yayın https://twitch.tv/laroux ▸ YouTube:

    Yayın Tekrarları https://youtube.com/EserOzvataf ▸ Twitter: Mikroblogging https://twitter.com/eserozvataf ▸ Sunumlar: Speakerdeck https://speakerdeck.com/eser ▸ GitHub: Üretim https://github.com/eserozvataf