- Javascript
자바스크립트 현황 및 발전 방향
자바스크립트 향후 전망 분석
서론
2009년 발표된 Node.js가 시장에 도입된 직후 자바스크립트 생태계는 큰 변화를 맞이한다 브라우저 런타임이 아닌 새로운 환경의 런타임을 통해 실행이 가능하자 웹사이트뿐만 아니라 서버까지 자바스크립트를 기반으로 구현할 수 있게 되었다 이후 노드 환경에서의 모듈 및 라이브러리 도구들을 관리하고 타인에게 공유할 수 있는 노드 패키지 매니저(Node Package Manager)가 출시되자 전세계의 수 많은 엔지니어와 기업들은 자바스크립트 프레임워크와 라이브러리를 앞다투어 공개하였다 더 나아가 자바스크립트 코드를 컴파일 하여 모바일 네이티브 플랫폼과 통신하고 직접 모바일앱을 제어할 수 있자 그 영향이 나날이 커지고 있다 최근 8년 동안 최상위 랭크로 높은 관심도를 받는 자바스크립트이나 웹어셈블리의 등장과 타입 도입 의견이 나오는 시점에서 빠르게 변화하고 발전하는 웹 개발 트렌드에 중심에 있는 자바스크립트 동향에 대해 다각적인 분석이 필요하다 따라서 자바스크립트가 탄생하게 된 계기와 언어의 특징을 알아보고 향후 지속적인 관심을 유지할 수 있을지 분야별 대표 자바스크립트 프레임워크의 현황을 살펴보면서 최신 동향을 분석하고 발전 방향을 제시하는데 연구목적이 있다
소개
1. 연혁
1990년 초중반 Microsoft는 Internet Explorer를 내세워 브라우저 시장을 독점하길 원했고 당시 75% 이상의 점유율을 가진 넷스케이프 커뮤니케이션즈(Netscape Communications)의 Navigator과 경쟁하였다 1995년 Netscape는 정적 HTML에 동적 이벤트 추가를 위해 경량 프로그래밍 언어를 도입하기 원하였고 브렌던 아이크(Brendan Eich)에 의해 단 10일만에 프로토타입으로 개발된 모카(Mocha)는 이후 라이브 스크립트(LiveScript)로 명명되어 개발되었고 최종적으로 자바스크립트(JavaScript)로 불리게 된다 Microsoft는 자바스크립트 출시 이후 이에 맞설 대항마로 JScript를 개발하였고 Internet Explorer 3.0에 처음 탑재하여 브라우저에 지원되었다
2. 표준화
Microsoft와 Netscape는 브라우저 점유율 탈환을 위해 점차 각자만의 기능을 추가하였고 이는 서로 간의 호환을 어렵게 만들었고 결국 동일한 웹페이지 내의 크로스 브라우징 문제를 유발하였다.
Netscape는 자바스크립트가 공식적인 언어로 표준화되길 원하였고 1996년 국제적 정보 통신 기술 표준화 기구인 ECMA 인터내셔널에게 요청한다 이때 Microsoft의 Jscript와 Adobe의 ActionScript까지 포함되며 ECMA-262라는 새로운 기술 규격이 만들어졌고 ECMA-262는 자바스크립트의 파편화를 방지하고 모든 브라우저를 동일하게 동작할 수 있도록 표준화하였다. 이후 ECMA-262 기술 규격에 따라 자바스크립트는 ECMAScript로 명명된다.
특징
1. 언어적 특징
자바스크립트는 C로 부터 영향을 받은 객체 기반의 동적 프로그래밍 언어로 기본적인 문법이 유사하며
다음과 같은 언어적 특징이 있다
(1) 인터프리터 언어
인터프리터 언어인 자바스크립트는 원시코드를 컴파일 과정 없이 해석하여 명령어를 실행하는 언어로 런타임에서 실시간으로 브라우저의 인터프리터가 코드를 실행하므로 컴파일 언어에 비해 속도는 느리다
(2) 프로토타입 기반 언어
프로토타입 기반 언어인 자바스크립트는 상속과는 다르게 원형 객체를 복제하여 새로운 객체를 생성하고 생성된 객체는 프로토타입 링크를 사용해서 원형객체를 참조한다 이때 객체들 사이의 형성된 각각의 링크들을 프로토타입 체인이라 하며 이를 통해 원형 객체의 메서드나 속성을 찾아 갈 수 있다
(3) 동적 타입 언어
변수에 타입 선언이 필요 없는 자바스크립트는 런타임 시 값의 타입을 기준으로 자동으로 변수의 타입이 지정된다
이를 느슨한 타입(Loosely typed)이라 하며 하나의 변수에 여러 타입을 선언할 수 있다
2. 기술적 특징
자바스크립트는 단일 스레드 기반의 콜백 큐를 사용하는 언어로 클라이언트와 서버에서 동작되며 다음과 같은 기술적 특징이 있다
(1) 클라이언트
웹브라우저에서 사용되는 자바스크립트 기술로 DOM 수정 및 데이터 바인딩을 위해
XMLHttpRequest로 서버와 통신하는데 쓰이기도 하며 Window Object 객체를 활용하여
Window 객체의 프로퍼티와 메서드를 조작하거나 이벤트 핸들러를 수행한다
1) DOM
DOM은 HTML, XML 문서의 프로그래밍 인터페이스로 웹페이지의 구조화된 표현을 위해 사용된다
프로그래밍 언어가 돔의 구조에 접근하여 스타일 및 내용 변경 및 조작이 가능하도록 설계되었다
최근엔 자바스크립트 프레임워크를 사용하여 돔을 직접 수정하지 않고 가상돔(Virtual DOM)에서
변경사항을 처리한 뒤 동기화하는 방식으로 효율성과 유지보수성을 극대화 하고 있다
2) XMLHttpRequest
서버와의 통신을 위해서는 HTTP request를 제어할 오브젝트가 필요하다
자바스크립트는 서버와의 상호 작용을 위해 XMLHttpRequest 객체를 사용할 수 있고
통신 처리 중에는 페이지를 새로 고침할 필요 없이 데이터 요청 및 상태를 반환할 수 있다
(2) 서버
웹서버에서 사용되는 자바스크립트 기술로 대표적으로 Node.js 플랫폼을 이용한 런타임 환경을 제공하여
단일 스레드 비동기 IO 방식의 고성능의 서버 기능을 지원한다
현황
1. 웹 애플리케이션
웹 애플리케이션 개발에도 자바스크립트가 활용되는데 주로 사용자 인터페이스를 만드는 프레임워크나 라이브러리가 이에 해당된다.
서버에서 페이지를 생성하고 관리할 필요 없이 클라이언트가 한 페이지 내에서 데이터만 바꿔 동적으로 페이지를 재작성 하는 방식인
단일 페이지 애플리케이션(Single Page Application) 수요가 늘어남에 따라 최근 웹 애플리케이션 개발에 중점에 서있다.
대표적인 장점으로 리소스를 한 번만 받은 후 필요한 데이터만 서버에서 요청하여 서버의 부담이 줄고 네이티브에 가까운 자연스러운
사용자 경험(UX)의 효율성을 기대할 수 있다.
물론 이러한 단일 페이지 애플리케이션은 자바스크립트만으로 처리 가능하나 React, Vue, Angular와 같은 전문적인 프레임워크와
라이브러리를 사용하는 것이 개발 생산성 및 유지 보수성 면에서 좋다.
2. 모바일 애플리케이션
자바스크립트는 모바일 애플리케이션 개발에도 사용되는데 페이스북이 2015년 발표한 오픈소스 모바일 애플리케이션 프레임워크인 React Native는 자바스크립트 라이브러리인 React의 규칙을 그대로 사용하면서 모바일 애플리케이션을 제작할 수 있고 컴파일 과정에서 하나의 소스를 iOS, 안드로이드, 유니버셜 윈도우 플랫폼(UWP) 등 원하는 옵션에 따라 네이티브 코드로 변환 시켜 한 번의 작업으로 각각 다른 운영체제에 맞도록 변환이 가능하다. 이는 향후 자바스크립트가 모바일 네이티브 플랫폼 외에도 다양한 분야에서 활용될 수 있다는근거를 뒷받침해 줄 수 있는 적절한 예가 될 수 있다.
3. 데스크톱 애플리케이션 현황
일렉트론(Electron)은 자바스크립트로 데스크톱 애플리케이션을 개발하기 위해 청자오(Cheng Zhao)에 의해 개발되었으며 슬랙, 디스코드, 아톰 에디터, 페이스북 메신저 등 다양한 분야에서 활용되고 있다. 대표적인 특징으로 Node.js 기반이라 자바스크립트로 개발되기에 진입장벽이 낮고 개발 속도가 빠르나 리소스와 메모리를 많이 필요로 하여 상대적으로 느린 단점이 있다. 데스크톱 애플리케이션 개발을 고려하는 엔지니어라면 자바스크립트 기반의 일렉트론을 사용하는 방법도 실효성 면에서 선택할 수 있는 옵션 중 하나이다.
향후 전망
1. 타입 사용
동적 타입 언어인 자바스크립트는 타입 지정을 필요로 하지 않으나 여러 개발자 간 협업 시 코드 구조와 의미를 파악하기 어렵기에 타입 도입 필요성이 점차 커졌다 더욱이 컴파일 없이 즉시 실행되는 자바스크립트는 오류 발생 시 대처가 어렵기 때문에 컴파일 이전 오류를 발견하고 명시적인 타입 지정을 추가하여 구조 파악이 용이하도록 고안해낸 것이 마이크로소프트에서 개발한 자바스크립트 슈퍼셋인 타입스크립트이다. 자바스크립의 장점을 그대로 유지하면서 타입스크립트로 생산성과 안정성을 높인 부분이 구글의 공식 개발 언어로 채택되며 입증되었다. 개인적인 의견으로 향후 2030년 이후까지도 자바스크립트와 같이 발전하며 기술 가치 증가에 기여 할 것으로 생각한다.
2. 웹어셈블리
최신 웹 브라우저에 지원되는 웹어셈블리(WebAssembly)는 C, C++, RUST, GO 등의 저급 소스 언어의 바이너리 파일을 컴파일 하여 네이티브에 인접한 속도로 웹 브라우저에서 실행되는 강점을 보인다. 기존 웹 브라우저의 가상머신(VM)에서 작동될 수 있는 언어가 자바스크립트뿐이었고 일반적인 동적 표현을 보여주는 것은 가능하나 최근 기술의 발전에 따라 증강현실 혹은 영상처리 등 네이티브 환경에서의 요구 사항이 높아짐에 따라 필요성이 점차 늘어났다. 프리미어 프로, 포토샵같이 C, C++로 개발된 소프트웨어를 다운로드 필요없이 브라우저에서 직접 실행이 가능해질 수 있으며 실제로 웹어셈블리를 통해 브라우저에서 실행되는 웹게임이 증가하는 추세이다. 자바스크립트 창시자인 브렌던 아이크(Brendan Eich) 또한 웹어셈블리가 자바스크립트를 대체하기 위해 개발된 것은 아니며 다만 자바스크립트의 슈퍼셋 개념으로 나온 것이기에 기능적으로 지원이 안되던 부분을 해결해 줄 것 이라며 지지하였다. 필자 또한 웹어셈블리가 자바스크립트의 종말을 앞당기는 결정타가 될 것이라 생각하지 않지만 이미지 프로세싱 등 높은 난이도를 요구하는 시대 흐름의 변화에 따라 자바스크립트처럼 인터렉티브하며 웹어셈블리의 기능까지 포함한 새로운 대체 언어가 나올수도 있다고 판단된다.
결론
최근 개발자 설문 조사를 통해 가장 일반적으로 사용되는 프로그래밍 언어로 자리매김한 자바스크립트가
이러한 관심과 지속적인 인기를 가지게 된 언어의 특징과 개발 분야별로 활용되는 사례를 알아보고
다른 언어와의 경쟁우위에서 어떠한 강점을 내세워 현재의 자리를 유지할 수 있을지 와 표준화를 통해 앞으로 어떠한 방향으로
통합되어 관리되는지 연구를 통해 자바스크립트의 현황과 발전방향에 대해 분석하였다
분석 결과, 웹 애플리케이션 개발 외에도 모바일과 데스크톱 애플리케이션 분야에도 자바스크립트 프레임워크가 사용되고 있으며
이후 다른 분야에서도 충분히 활용될 수 있는 것을 입증하는데 이는 ECMA-262로 표준화된 규격을 바탕으로 서로 다른 소속의
기업, 개발자 간의 협력을 통해 빠르게 공동 개발이 이루어지면서 각각의 분야에 필요한 프레임워크나 라이브러리의 출시를 앞당겨 주며
표준화로 인하여 호환성이 좋고 재사용성이나 구조에 대한 이해를 높여준다.
웹어셈블리의 등장으로 자바스크립트가 현재의 입지를 잃고 저급 프로그래밍 언어들이 그 자리를 대체하지 않을까 하는 의문을 가졌으나
서로의 역할이나 강점이 확연히 다르고 자바스크립트의 창시자이자 웹어셈블리 개발에 참여한 브렌던 아이크(Brendan Eich)도 긍정적인 입장을
내세우며 자바스크립트와 웹어셈블리의 공존을 지지하였다.
또한 동적 타입 언어인 자바스크립트 특성상 타입 지정이 필요 없었으나 점차 요구가 많아지며
도입을 결정하게 되었고 큰 변화를 가져올 예정이며 타입스크립트와 같은 슈퍼셋을 통해 다른 언어들의 강점을 흡수하며
앞으로 향후 15년간은 다양한 분야에서 사용될 언어로 뜨거운 관심이 이어질 것으로 전망된다
참고문헌
Daniyar Alymkulov, DESKTOP APPLICATION DEVELOPMENT USING ELECTRON FRAMEWORK(2019), p10-15.
Kyle Simson, 『타입과 문법, 스코프와 클로저』, 한빛미디어(2017), p26-35.
Boris Cherny, 『타입스크립트 프로그래밍』, 인사이트(2020), p8-21.
Mike Rourke, 『웹어셈블리 Wasm과 C/C++를 이용한 고성능 웹 애플리케이션 개발』, 에이콘출판사(2019), p30-37.
Stack Overflow Developer Survey, 2020,
The History of JavaScript
github 공식사이트