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

    View Slide

  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

    View Slide

  3. ‣ 1. JAVASCRIPT
    ‣ 2. BACKEND JS
    ‣ 2.1. NODE.JS
    ‣ 2.2. DENO
    ‣ 3. BUGÜN
    Bugün bahsedeceklerim:

    View Slide

  4. 1. JAVASCRIPT

    View Slide

  5. 1. JAVASCRIPT
    NCSA Mosaic 1.0 – İlk Web Browser, 22 Nisan 1993 Netscape 0.9 – 13 Ekim 1994
    BROWSER SAVAŞLARI – İLK CELSE

    View Slide

  6. 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İ

    View Slide

  7. 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.

    View Slide

  8. 2. BACKEND JS

    View Slide

  9. 2. BACKEND JS
    JAVASCRIPT’İN BACKEND TARİHÇESİ
    ▸ 1996 – Netscape Enterprise Server üzerinde Netscape LiveWire Pro ( 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

    View Slide

  10. 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

    View Slide

  11. 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ı

    View Slide

  12. 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

    View Slide

  13. 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

    View Slide

  14. 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

    View Slide

  15. 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

    View Slide

  16. 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

    View Slide

  17. 3. BUGÜN

    View Slide

  18. 3. BUGÜN
    DENO İLE GELİŞTİRMEYE BAŞLAMAK

    View Slide

  19. 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

    View Slide

  20. KAPANIŞ
    acik-kaynak.org

    View Slide

  21. 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

    View Slide

  22. TEŞEKKÜRLER
    /eserozvataf
    /eserozvataf /laroux
    /EserOzvataf

    View Slide