JavaScript'in Geleceğine Bir Bakış

Yayınlanan: 2022-03-11

Her pazar belirli ortak kavramlar tarafından yönetilir ve JavaScript geliştirme bir istisna değildir.

Ürün yaşam döngüsü, davranışlarını anlamak ve tahmin etmek için birkaç farklı ortama uygulayabileceğiniz bir kavramdır. Bir ürünün ömrü boyunca geçtiği aşamaları anlamamıza yardımcı olan ve bu aşamaların popülerlik ölçümü üzerindeki etkisini (çoğu durumda satışlar) açıklayan bir iş konseptidir. Piyasa davranış kalıplarını gözlemlersek, bir ürünün mevcut aşamasını tahmin edebilir ve bu nedenle popülerliği hakkında bazı tahminlerde bulunabiliriz.

Ürün geliştirme yaşam döngüsünün şeması

Dört aşama vardır: giriş, büyüme, olgunluk ve düşüş ve yukarıdaki grafikte her aşama için beklenen ürün satışları üzerindeki etkisini görebilirsiniz. Örneğin, akıllı telefon satışları beş yıl önceki gibi artmıyor -aslında tam tersi doğru- bu nedenle akıllı telefonların olgunluk aşamasına girdiğini söyleyebiliriz.

Geçtiğimiz birkaç yılda JavaScript'te birçok yeni teknolojinin tanıtıldığını gördük, ancak pazarın bunları nasıl benimseyeceğini görmek için zamana ihtiyacımız vardı. Hiç kimse, sıfır benimseme ile biten, gelecek vaat eden başka bir teknolojide uzman olmak istemez. Ancak şimdi bir kez daha bakmanın zamanı geldi. Bu yazıda JavaScript'in ne kadar popüler hale geldiğine ve bu popülerliği etkilemiş olabilecek faktörlere bir göz atacağım ve JavaScript'in geleceğinin nasıl görüneceğini tahmin etmeye çalışacağım.

JavaScript Dil Özelliklerinin Geleceği

Avrupa Bilgisayar Üreticileri Birliği (ECMA), standartlaştırılmış bir JavaScript spesifikasyonu olan ECMAScript için yıl bazlı yayın döngüsünü oluşturduğundan, dile çok fazla yeni özelliğin geldiğini görmedik - her yıl sadece birkaç tane. TypeScript veya ReasonML gibi ES5'e derlenen dillerin benimsenmesinde artış görmemizin nedenlerinden biri bu olabilir ve her ikisi de dile topluluk tarafından çok talep edilen özellikler getirir. Bu yeni değil—JavaScript bu süreçten daha önce (CoffeeScript) geçti ve sonunda bu özellikler dil standardının kendisinde birleştirildi ve muhtemelen bu yeni yazılan özellikler için de bekleyebileceğimiz gelecek bu.

Ancak şimdi, WebAssembly'nin tarayıcılarda artan kullanılabilirliği ile birlikte js'ye derleme pazarında oyunun kurallarını değiştiren bir hareket görmeye başlıyoruz. Artık hemen hemen her dili kullanabilir ve bir tarayıcıda neredeyse yerel hızda çalışacak şekilde derleyebiliriz ve daha da önemlisi, çoklu dilden yararlanmamızı sağlayacak iş parçacığı desteği gibi geleceğe yönelik özellikler için destek görmeye başlıyoruz. -Tüm cihazların kaçınılmaz geleceğini temsil eden işlemci mimarisi.

WebAssembly için resmi araç zinciri, C/C++'ı derlemenize yardımcı olacaktır, ancak Rust, Python, Java ve Blazor (C#) gibi farklı diller için topluluk tarafından sağlanan birçok derleyici vardır.

Özellikle Rust topluluğu oldukça aktif ve Yew ve Dodrio gibi eksiksiz ön uç çerçeveler görmeye başladık.

Bu, tarayıcı tabanlı uygulamalara birçok yeni olasılık getiriyor ve yerele yakın tarayıcı tabanlı uygulamaların artık gerçek olduğunu görmek için WebAssembly ile oluşturulmuş harika uygulamalardan bazılarını test etmeniz yeterli, örneğin Sketchup veya Magnum.

ES5'e derlenen daktilo dillerinin benimsenmesi yeterince olgun, oyuncular iyi kurulmuş ve yakın gelecekte yok olmayacaklar (veya ES ile birleştirilmeyecekler), ancak klavyeli diller lehine yavaş bir değişim göreceğiz. WebAssembly.

Ön Uç Çerçeveleri

Her yıl, web için ön uç çerçeveler pazarında büyük bir kavga görüyoruz ve React son birkaç yıldır tartışmasız kazanan oldu - oyun değiştirici teknolojileri olan Sanal DOM'nin piyasaya sürülmesinden bu yana neredeyse bir savaşta alakalı kalmak için meslektaşlarından zorunlu evlat edinme.

Birkaç yıl önce, derleme zamanında küçük ve yüksek verimli JavaScript kodu bırakarak kaybolan “derleyici çerçevesi” olan Svelte ile web uygulaması geliştirmeye yönelik radikal yeni bir yaklaşımın tanıtıldığını gördük. Ancak bu özellik, topluluğu Svelte'ye geçmeye ikna etmek için yeterli değildi, ancak Svelte 3.0'ın son lansmanı ile çerçeveye gerçek reaktif programlama getirdiler ve topluluk heyecanlandı, bu yüzden belki de bir sonraki büyük şeye tanık oluyoruz. -son çerçeveler.

Kader operatöründen ilham alındı:

 var a = 10; var b <= a + 1; a = 20; Assert.AreEqual(21, b);

Svelte, kodun topolojik sırada yürütülmesi talimatını vererek, derleme zamanında reaktiviteli etiket deyimlerinin kullanımını aşırı yükleyerek JavaScript'e reaktivite getirir:

 var a = 10; $: b = a + 1; a = 20; Assert.AreEqual(21, b);

Bu, farklı bağlamlarda yardımcı olabilecek radikal yeni bir fikirdir, bu nedenle Svelte'nin yaratıcısı, doğrudan HTMLx'te bildirilen bir 3D sahne grafiğinden düşük seviyeli WebGL talimatları oluşturacak bir derleyici çerçevesi olan svelte-gl üzerinde de çalışıyor.

React, Angular ve Vue.js'nin bir gecede ortadan kalkmayacağını, topluluklarının çok büyük olduğunu ve önümüzdeki birkaç yıl boyunca gündemde kalacaklarını söylemeye gerek yok - Svelte'nin gerçek halefi olup olmayacağından bile emin değiliz, ancak biz Bir şeyden emin olabilirsiniz: Er ya da geç farklı bir şey kullanacağız.

WebXR ve Sürükleyici Web'in Geleceği

Sanal gerçeklik, son 60 yıldır ana akımda bir yer bulmak için mücadele ediyor, ancak teknoloji henüz hazır değildi. On yıldan kısa bir süre önce Jon Carmack Oculus VR'ye (şimdi Facebook Technologies, LLC'nin bir parçası) katıldığında, yeni bir VR dalgası yükselmeye başladı ve o zamandan beri farklı VR türlerini destekleyen birçok yeni cihaz gördük ve tabii ki VR özellikli uygulamaların çoğalması.

Tarayıcı satıcıları bu fırsatı kaybetmek istemediler, bu nedenle WebGL ve üç.js gibi köklü kitaplıklar ile JavaScript'te sanal dünyaların oluşturulmasına izin veren WebVR belirtimine katıldılar. Bununla birlikte, 6dof cihazlara sahip kullanıcıların pazar payı, büyük web dağıtımları için hala önemsizdi, ancak mobil web, cihaz oryantasyon API'si ile hala bir 3D deneyimi sunabiliyordu, bu nedenle bir dizi deney ve çok sayıda 360 video gördük. bir süre.

2017 yılında ARKit ve ARCore ile birlikte mobil cihazlara ve her türlü uygulamaya AR ve MR deneyimleri ile yeni yetenekler kazandırılmıştır.

Bununla birlikte, etrafınızdaki dünyanızı keşfederken, belirli bir AR deneyimi için belirli bir uygulamayı indirmek hala biraz doğal değil. Farklı deneyimleri keşfetmek için yalnızca bir uygulamamız olsaydı… Bu tanıdık geliyor. Bu sorunu geçmişte tarayıcıyla çözdük, neden bir şans daha vermiyorsunuz?

Geçen yıl Mozilla, tarayıcıya AR, VR ve MR (ergo XR) özelliklerini getirmek için WebXR Device API Spec'i (bu yazının yazıldığı sırada son çalışma taslağı iki hafta öncesine aitti) tanıttı.

En önemli tarayıcı satıcılarından birkaçı, önemli bir istisna dışında uygulamalarını takip etti: Safari mobil, bu nedenle Mozilla, görüşlerini kanıtlamak için iOS platformu WebXR Görüntüleyici altında WebXR özellikli bir tarayıcı yayınladı.

Şimdi, bu önemli bir adım çünkü AR ve VR kombinasyonu, bu örnekte görebileceğiniz gibi, 6dof'u mobil cihazlara ve Google Cardboard veya Samsung Gear VR gibi mobil cihaz tabanlı kulaklıklara getiriyor ve 6dof cihazlarının pazar payını şu şekilde artırıyor: büyük bir marj ve büyük ölçekli bir web dağıtımı olasılığını mümkün kılıyor.

Aynı zamanda, Mozilla'daki adamlar, üç.js ve WebGL'ye dayalı HTML sözdizimine sahip bileşen tabanlı bir bildirim çerçevesi olan A-Frame adlı 3B dünyaların ve uygulamaların oluşturulmasını kolaylaştırmak için yeni bir web çerçevesi üzerinde çalışıyorlar. Akılda kalan bir şey var - web programlamaya eğlenceyi ve kullanım kolaylığını geri getirmek.

Bu, web'in gelecekte nasıl görünmesi gerektiğine dair yeni bir dizi fikir olan sürükleyici web'e yönelik haçlı seferlerinin bir parçası. Neyse ki bizim için yalnız değiller ve web'de giderek daha fazla sürükleyici deneyim görmeye başlayacağız.

Denemek istiyorsanız, WebXR Görüntüleyiciyi indirin ve sürükleyici web'in olanaklarını görmek için bu siteyi ziyaret edin.

Bir kez daha, standart tarayıcı tabanlı uygulamalar bir veya iki yıl içinde kaybolmayacak - muhtemelen her zaman onlara sahip olacağız. Ancak 3D uygulamalar ve XR deneyimleri büyüyor ve pazar bunlara sahip olmaya hazır ve istekli.

ES6 için Yerel Destek

JavaScript'te son on yılda icat edilen hemen hemen her teknoloji, tarayıcıların temelindeki uygulamalardan kaynaklanan sorunları çözmek için yaratıldı, ancak platformun kendisi son birkaç yılda çok olgunlaştı ve görebildiğimiz gibi bu sorunların çoğu ortadan kalktı. Bir zamanlar performans kriterlerini yöneten Lodash ile.

Aynısı, sorunları bir zamanlar web uygulama çerçevelerinin yaratılması için gerçek ilham kaynağı olan DOM için de oluyor. Artık, uygulamalar oluşturmak için çerçeveler olmadan kullanabileceğiniz olgun bir API'dir - aslında, web bileşenleri budur. Bileşen tabanlı uygulamalar oluşturmak için platformun “çerçevesi” dir.

Platform evriminin bir başka ilginç kısmı da dilin kendisidir. ECMAScript'in en son özelliklerini kullanabilmek için son birkaç yıldır Babel.js'yi kullanıyoruz, ancak standart son birkaç yılda biraz durgunlaşmaya başladığından, bu tarayıcı satıcılarına izin vermek için yeterliydi. statik içe aktarma ifadesinin yerel desteği de dahil olmak üzere özelliklerinin çoğunu uygulamak için. Artık, platformdaki dil özelliklerinin desteğini (tekrar) kendi başına aldığımızdan ve Node.js, Google Chrome ile aynı V8 VM'yi kullandığından, Babel.js veya diğer derleyiciler olmadan uygulamaların oluşturulmasını düşünmeye başlayabiliriz. , deneysel modüller bayrağı altındaki statik içe aktarma ifadesiyle bile Node.js'de ES6'nın daha güçlü desteğini görmeye başladık.

Bu, uygulamaların profesyonel düzeyde derlendiğini görmeyi bırakacağımız anlamına gelmez, ancak tarayıcı tabanlı bir uygulamayla başlamanın eskisi kadar kolay ve eğlenceli olacağı anlamına gelir.

Sunucu tarafı JavaScript

JavaScript, 1995 yılında Netscape Enterprise Server ile sunucu tarafı ile başlamış olsa da, 2009'da Ryan'ın Dahl sunumuna kadar JavaScript'in sunucu tarafı uygulamaları için ciddi şekilde dikkate alınmaya başlanması değildi. Son on yılda Node.js'de pek çok şey oldu. Çok gelişti ve olgunlaştı, bir kez daha bozulma ve yeni teknolojiler için fırsat yarattı.

Bu durumda, async/await gibi en son dil özelliklerini yerel olarak destekleyen bir platform olan Deno ile sunucu tarafı güvenli uygulamalara yeni bir bakış açısı üzerinde çalışan kendi yaratıcısı Ryan Dahl'ın elinden gelir ve ayrıca Rust'taki uygulamaları ve Tokio'nun kullanımı sayesinde en iyi performansı hedefleyen, ancak daha da önemlisi onu Python gibi sunucu taraflı platformların çoğundan ayıran yeni bir güvenlik felsefesi ile en popüler js derleme dili TypeScript, Ruby veya Java). Tarayıcı güvenlik modelinden ilham alan Deno, yalnızca kullanıcı sürece açıkça izin verdikten sonra ana bilgisayarın kaynaklarını kullanmanıza izin verir; bu başlangıçta biraz sıkıcı gelebilir, ancak izin vererek birçok sonuca neden olabilir. sadece platforma güvenerek güvenli bir ortamda güvenli olmayan kod çalıştırmamız.

Node.js gelecekte hala orada olacak, ancak sistemlerinde güvenli olmayan sunucu tarafı kod yürütmesi sağlamaya alternatif olarak Deno işlevselliği sağlamak için AWS Lambda ve Azure İşlevleri gibi sunucusuz hizmetleri görmeye başlayabiliriz.

Çözüm

Bunlar JavaScript dünyasında heyecan verici zamanlar—birçok teknoloji yenilik için yer açacak kadar olgunlaştı, aktif topluluk parlak ve inanılmaz fikirleriyle bizi şaşırtmaktan asla vazgeçmedi ve köklü araçlara birçok yeni alternatif bekliyoruz olgunluk evreleri hızla geldiği için; Birçoğu gerçekten iyi olduğundan ve savaş alanında pek çok kanıt bulunduğundan onları kullanmayı bırakmayacağız, ancak yeni ve heyecan verici pazarlar ortaya çıkmaya başlayacak ve hazırlıklı olsanız iyi olur.

Geliştirme hızı nedeniyle JavaScript dünyasındaki en son gelişmelerden haberdar olmak kolay değil, ancak gerçekten yardımcı olabilecek bazı kaynaklar var. Birincisi, bence en önemli haber kaynağı, her saat inanılmaz miktarda yeni içerik bulabileceğiniz Echo JS. Ancak, vaktiniz yoksa, JavaScript Haftalık haber bülteni, JS'de haftanın mükemmel bir özetidir. Bunun yanı sıra, dünyanın dört bir yanındaki konferansları takip etmek de önemlidir ve JSConf, React Conf ve Google Chrome Developers gibi YouTube kanalları harika bir şekilde yardımcı olur.

Tersine, JavaScript'in nereye gittiğine dair bazı yapıcı eleştiriler görmekle ilgileniyorsanız, JavaScript geliştiricisi Justen Robertson'ın yazdığı Bir JS Geliştiricisi Olarak, Bu Beni Geceleri Uyandıran Şey'i okumanızı tavsiye ederim.


Toptal Mühendislik Blogunda Daha Fazla Okuma:

  • TypeScript vs. JavaScript: Başlama Kılavuzunuz