JavaScript의 미래 살펴보기

게시 됨: 2022-03-11

모든 시장은 특정 공통 개념에 의해 지배되며 JavaScript 개발도 예외는 아닙니다.

제품 수명 주기는 여러 다른 환경에 적용하여 동작을 이해하고 예측할 수 있는 개념입니다. 제품 수명 동안 제품이 거치는 단계를 이해하는 데 도움이 되는 비즈니스 개념으로 이러한 단계가 인기도 측정(대부분의 경우 판매)에 미치는 영향을 설명합니다. 시장 행동 패턴을 관찰하면 제품의 현재 단계를 추정할 수 있으므로 제품의 인기도를 예측할 수 있습니다.

제품 개발 수명 주기 다이어그램

도입기, 성장기, 성숙기, 쇠퇴기의 4단계가 있으며, 위의 차트에서 각 단계의 예상 제품 판매에 미치는 영향을 확인할 수 있습니다. 예를 들어, 스마트폰 판매는 5년 전처럼 성장하지 않고 있습니다. 실제로는 정반대입니다. 그래서 스마트폰이 성숙기에 접어들었다고 말할 수 있습니다.

지난 몇 년 동안 우리는 JavaScript에 새로운 기술이 많이 도입되는 것을 보았지만 시장이 이를 어떻게 채택할지 확인하려면 시간이 필요했습니다. 아무도 채택하지 않고 끝나는 또 다른 유망한 기술의 전문가를 원하지 않습니다. 그러나 지금은 다시 한 번 살펴보아야 할 때입니다. 이 글에서는 자바스크립트가 얼마나 대중화되고 있는지, 그리고 이러한 인기에 영향을 미쳤을 수 있는 요인을 살펴보고 자바스크립트의 미래가 어떤 모습일지 예측하려고 합니다.

JavaScript 언어 기능의 미래

ECMA(European Computer Manufacturers Association)가 표준화된 JavaScript 사양인 ECMAScript에 대한 연도별 릴리스 주기를 설정한 이후로 우리는 ECMAScript에 새로운 기능이 많이 추가되는 것을 보지 못했습니다. 이것이 TypeScript 또는 ReasonML과 같이 ES5로 컴파일되는 언어의 채택이 증가하는 것을 목격한 이유 중 하나일 수 있으며, 둘 다 커뮤니티에서 많이 요청하는 기능을 언어에 제공합니다. 이것은 새로운 것이 아닙니다. JavaScript는 이전에 이 프로세스를 거쳤고(CoffeeScript), 결국 이러한 기능은 결국 언어 표준 자체에 병합되었고, 아마도 이러한 새로운 유형의 기능에 대해서도 기대할 수 있는 미래일 것입니다.

그러나 이제 브라우저에서 WebAssembly의 가용성이 증가하면서 compile-to-js 시장에서 게임 체인저가 움직이기 시작했습니다. 이제 우리는 거의 모든 언어를 사용할 수 있고 브라우저에서 거의 기본 속도로 실행되도록 컴파일할 수 있습니다. 더 중요한 것은 다중 기능을 활용할 수 있는 스레드 지원과 같은 미래 보장 기능에 대한 지원을 보기 시작했습니다 -모든 장치의 피할 수 없는 미래를 나타내는 프로세서 아키텍처.

WebAssembly의 공식 툴체인은 C/C++를 컴파일하는 데 도움이 될 것이지만 Rust, Python, Java 및 Blazor(C#)와 같은 다양한 언어에 대해 커뮤니티에서 제공하는 컴파일러가 많이 있습니다.

특히 Rust 커뮤니티는 매우 활발하며 Yew 및 Dodrio와 같은 완전한 프론트 엔드 프레임워크를 보기 시작했습니다.

이것은 브라우저 기반 앱에 많은 새로운 가능성을 제공하며, WebAssembly로 구축된 훌륭한 앱 중 일부만 테스트하면 기본에 가까운 브라우저 기반 앱(예: Sketchup 또는 Magnum)이 이제 현실이 되는지 확인할 수 있습니다.

ES5로 컴파일되는 유형이 지정된 언어의 채택은 충분히 성숙하고 플레이어가 잘 확립되어 있으며 가까운 장래에 사라지지(또는 ES와 병합되지) 않을 것입니다. 웹어셈블리.

편물

프론트엔드 프레임워크

매년 우리는 웹용 프론트 엔드 프레임워크 시장에서 큰 싸움을 보고 있으며 React는 게임 체인저 기술인 Virtual DOM이 도입된 이후로 지난 몇 년 동안 확실한 승자였습니다. 전투에서 관련성을 유지하기 위해 상대방의 의무적 인 입양.

몇 년 전, 우리는 Svelte를 사용하여 웹 애플리케이션 개발에 대한 근본적이고 새로운 접근 방식의 도입을 보았습니다. "컴파일러 프레임워크"는 컴파일 시간에 사라지고 작고 효율적인 JavaScript 코드를 남깁니다. 그러나 그 기능은 커뮤니티가 Svelte로 이동하도록 설득하기에 충분하지 않았지만 최근 Svelte 3.0이 출시되면서 프레임워크에 실제 반응 프로그래밍을 도입했고 커뮤니티는 열광했습니다. -엔드 프레임워크.

데스티니 오퍼레이터에서 영감을 얻었습니다.

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

Svelte는 코드가 토폴로지 순서로 실행되도록 지시하여 컴파일 시간에 반응성이 있는 레이블 문 사용을 오버로드하여 JavaScript에 반응성을 제공합니다.

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

이것은 다른 컨텍스트에서 도움이 될 수 있는 근본적이고 새로운 아이디어이므로 Svelte의 작성자는 HTMLx에 선언된 3D 장면 그래프에서 직접 저수준 WebGL 명령을 생성하는 컴파일러 프레임워크인 svelte-gl도 작업하고 있습니다.

말할 것도 없이 React, Angular 및 Vue.js는 하룻밤 사이에 사라지지 않고 커뮤니티가 거대하며 앞으로 몇 년 동안 관련성이 유지될 것입니다. Svelte가 실제 후계자가 될지 확실하지 않지만 무엇인가 확신할 수 있습니다. 조만간 다른 것을 사용할 것입니다.

WebXR과 몰입형 웹의 미래

가상 현실은 지난 60년 동안 주류에서 자리를 찾기 위해 고군분투했지만 기술이 아직 준비되지 않았을 뿐입니다. 10년도 채 안 되어 Jon Carmack이 Oculus VR(현재 Facebook Technologies, LLC의 일부)에 합류했을 때 VR의 새로운 물결이 일어나기 시작했고 그 이후로 다양한 유형의 VR 및 물론 VR 지원 애플리케이션의 확산.

브라우저 공급업체는 이 기회를 놓치고 싶지 않았기 때문에 WebGL과 three.js와 같이 잘 정립된 라이브러리를 사용하여 JavaScript로 가상 세계를 생성할 수 있는 WebVR 사양에 합류했습니다. 그러나 6dof 장치를 사용하는 사용자의 시장 점유율은 대규모 웹 배포에서 여전히 미미했지만 모바일 웹은 장치 방향 API로 여전히 3D 경험을 제공할 수 있었기 때문에 많은 실험과 많은 360 비디오를 보았습니다. 잠시.

2017년에는 ARKit 및 ARCore가 도입되면서 AR 및 MR 경험이 있는 모바일 장치와 모든 종류의 애플리케이션에 새로운 기능이 도입되었습니다.

그러나 주변 세계를 탐색할 때 하나의 특정 AR 경험을 위해 하나의 특정 앱을 다운로드하는 것은 여전히 ​​약간 부자연스럽게 느껴집니다. 다양한 경험을 탐색할 수 있는 앱이 하나만 있다면… 이것은 친숙하게 들립니다. 우리는 과거에 브라우저로 그 문제를 해결했는데, 다시 한 번 시도해 보시지 않겠습니까?

작년에 Mozilla는 브라우저에 AR, VR 및 MR(ergo XR) 기능을 제공하기 위해 WebXR Device API Spec(이 글을 쓰는 시점에서 마지막 작업 초안은 2주 전임)을 도입했습니다.

가장 중요한 브라우저 공급업체 중 일부는 중요한 예외를 제외하고 구현을 따랐습니다. Safari 모바일, 그래서 그들의 요점을 증명하기 위해 Mozilla는 iOS 플랫폼 WebXR 뷰어에서 WebXR 지원 브라우저를 출시했습니다.

이제 AR과 VR의 결합이 Google Cardboard 또는 Samsung Gear VR과 같은 모바일 장치 및 모바일 장치 기반 헤드셋에 6dof를 제공하기 때문에 이것은 중요한 단계입니다. 이 예에서 볼 수 있듯이 큰 마진과 대규모 웹 배포의 가능성을 가능하게 합니다.

동시에 Mozilla 직원들은 three.js 및 WebGL을 기반으로 하는 HTML 구문을 사용하는 구성 요소 기반 선언 프레임워크인 A-Frame이라는 3D 세계 및 응용 프로그램의 생성을 용이하게 하기 위해 새로운 웹 프레임워크에 대해 작업하고 있습니다. 한 가지 염두에 두는 것은 웹 프로그래밍에 재미와 사용 편의성을 다시 가져오는 것입니다.

이것은 웹이 미래에 어떤 모습이어야 하는지에 대한 새로운 아이디어인 몰입형 웹에 대한 그들의 성전의 일부입니다. 운 좋게도 그들은 혼자가 아니며 웹에서 점점 더 몰입감 넘치는 경험을 보게 될 것입니다.

사용해 보고 싶다면 WebXR 뷰어를 다운로드하고 이 사이트를 방문하여 몰입형 웹의 가능성을 확인하십시오.

다시 한 번 말하지만, 표준 브라우저 기반 앱은 1~2년 안에 사라지지 않을 것입니다. 아마도 항상 있을 것입니다. 그러나 3D 앱과 XR 경험이 성장하고 있으며 시장은 이를 가질 준비가 되어 있고 열망하고 있습니다.

ES6에 대한 기본 지원

지난 10년 동안 JavaScript에서 발명된 거의 모든 기술은 브라우저의 기본 구현으로 인해 생성된 문제를 해결하기 위해 만들어졌지만 플랫폼 자체는 지난 몇 년 동안 많이 성숙했으며 이러한 문제의 대부분은 우리가 볼 수 있듯이 사라졌습니다. 한때 성능 벤치마크를 지배했던 Lodash와 함께.

DOM에서도 같은 일이 일어나고 있습니다. DOM의 문제는 한때 웹 애플리케이션 프레임워크 생성에 대한 실제 영감이었습니다. 이제 앱을 만들기 위해 프레임워크 없이 사용할 수 있는 성숙한 API입니다. 실제로 웹 구성 요소가 바로 그것입니다. 컴포넌트 기반 앱을 만들기 위한 플랫폼의 "프레임워크"입니다.

플랫폼 진화의 또 다른 흥미로운 부분은 언어 자체입니다. 우리는 ECMAScript의 최신 기능을 사용할 수 있도록 지난 몇 년 동안 Babel.js를 사용해 왔지만, 지난 몇 년 동안 표준 자체가 약간 정체되기 시작했기 때문에 브라우저 공급업체를 허용하기에 충분한 시간이었습니다. 정적 import 문의 기본 지원을 포함하여 대부분의 기능을 구현합니다. 이제 플랫폼 자체에서 언어 기능을 (다시) 지원하고 Node.js가 Google Chrome과 동일한 V8 VM을 사용하기 때문에 Babel.js 또는 다른 컴파일러 없이 애플리케이션 생성을 고려할 수 있습니다. , Node.js에서 ES6이 더 강력하게 지원되기 시작했습니다. 실험적 모듈 플래그 아래에 정적 import 문을 사용하는 경우에도 마찬가지입니다.

그렇다고 해서 앱이 전문적인 수준에서 컴파일되는 것을 그만둘 것이라는 의미는 아니지만 브라우저 기반 애플리케이션으로 시작하는 것이 예전처럼 쉽고 재미있을 것이라는 의미입니다.

서버측 자바스크립트

JavaScript가 Netscape Enterprise Server와 함께 1995년에 서버 측에서 시작되었지만 JavaScript가 서버 측 응용 프로그램에 대해 진지하게 고려되기 시작한 것은 2009년 Ryan의 Dahl 프레젠테이션 때부터였습니다. 지난 10년 동안 Node.js에 많은 일들이 일어났습니다. 그것은 많이 진화하고 성숙하여 다시 한 번 파괴와 새로운 기술의 기회를 만들어 냈습니다.

이 경우, 비동기/대기와 같은 최신 언어 기능을 기본적으로 지원하는 플랫폼인 Deno를 사용하여 서버 측 보안 앱의 새로운 관점에서 작업해 온 Ryan Dahl의 손에서 나온 것입니다. 또한 가장 인기 있는 compile-to-js 언어 TypeScript는 Rust에서의 구현과 Tokio의 사용 덕분에 최고의 성능을 목표로 하지만 더 중요한 것은 Python과 같은 대부분의 서버 측 플랫폼과 차별화되는 새로운 보안 철학으로, 루비 또는 자바). 브라우저 보안 모델에서 영감을 받은 Deno는 사용자가 프로세스에 대한 권한을 명시적으로 부여한 후에만 호스트의 리소스를 사용할 수 있도록 합니다. 플랫폼을 신뢰함으로써 보안 환경에서 보안되지 않은 코드를 실행할 수 있습니다.

Node.js는 앞으로도 계속 존재할 것이지만 시스템에서 보안되지 않은 서버 측 코드 실행을 제공하기 위한 대안으로 Deno 기능을 제공하는 AWS Lambda 및 Azure Functions와 같은 서버리스 서비스를 보게 될 것입니다.

결론

지금은 JavaScript 세계에서 흥미진진한 시기입니다. 많은 기술이 혁신을 위한 여지를 남길 만큼 충분히 성숙했고, 활동적인 커뮤니티는 그들의 훌륭하고 놀라운 아이디어로 우리를 놀라게 하기 위해 멈추지 않았습니다. 우리는 잘 정립된 도구에 대한 많은 새로운 대안을 기대합니다. 그들의 성숙한 단계가 빨리 도착하기 때문에; 많은 것들이 정말 좋고 전장에서 충분한 증거가 있기 때문에 사용을 멈추지 않을 것입니다. 그러나 새롭고 흥미로운 시장이 나타나기 시작할 것이므로 준비하는 것이 좋습니다.

개발 속도 때문에 JavaScript 세계의 최신 상태를 유지하는 것은 쉽지 않지만 실제로 도움이 될 수 있는 몇 가지 소스가 있습니다. 첫째, 제 생각에 가장 중요한 뉴스 소스는 Echo JS입니다. 여기서 매시간 엄청난 양의 새로운 콘텐츠를 얻을 수 있습니다. 그러나 시간이 없다면 JavaScript Weekly 뉴스레터가 JS로 된 주의 훌륭한 요약입니다. 이 외에도 전 세계의 컨퍼런스를 주시하는 것도 중요하며 JSConf, React Conf 및 Google Chrome Developers와 같은 YouTube 채널은 매우 유용합니다.

반대로 JavaScript가 어디로 향하고 있는지에 대한 건설적인 비판을 보고 싶다면 동료 JavaScript 개발자 Justen Robertson 의 As a JS Developer, This Is What Keeps Me Up at Night 를 읽는 것이 좋습니다.


Toptal 엔지니어링 블로그에 대한 추가 정보:

  • TypeScript 대 JavaScript: 이동 가이드