[WHAT]JavaScript란 무엇일까?

WHAT

 ⋅ Nov 28, 2023 ⋅ 2 min read

JavaScript
JavaScript
지난 10년간 프로그래밍 언어 순위
지난 10년간 프로그래밍 언어 순위

자바스크립트의 역사

1995년, 웹 페이지의 보조적인 기능을 수행하기 위해 브라우저에서 동작하는 경량 프로그래밍 언어 도입을 위해 자바스크립트가 개발되었습니다. 초기에는 각 브라우저 제조사에서 자체적으로 자바스크립트의 기능을 추가함으로써 브라우저에 따라 웹 페이지가 정상적으로 동작하지 않게 되는 크로스 브라우징 이슈가 발생하게 됨을 뜻합니다.

따라서, 자바스크립트의 파편화를 방지하고 모든 브라우저에서 정상적으로 동작할 수 있는 표준화된 자바스크립트의 필요성이 대두되었습니다. 이를 위해, 비영리 표준화 기구인 ECMA 인터네셔널이 표준화를 요청하여 1997년 표준화된 자바스크립트 ECMAScript가 발표되었습니다.

자바스크립트의 성장

초창기 자바스크립트는 웹 페이지의 보조적인 역할만을 수행하였습니다. 하지만 점차 기술들이 발전하며 자바스크립트의 활용은 늘어갔습니다.

1. Ajax(Asynchronous JavaScript and XML)

Ajax는 서버와 브라우저가 비동기 방식으로 데이터를 교환할 수 있는 통신 기능입니다. 이전에는 HTML 코드를 전달받아 렌더링하는 방식으로 동작했지만, 필요한 데이터만 전달받아 일부 부분만 렌더링하는 방식이 가능해졌습니다.

2. jQuery

jQuery는 조작하기 어려웠던 DOM(Document Object Model)을 쉽게 다룰 수 있게 해주는 라이브러리입니다. 또한, 크로스 브라우징 이슈도 해결할 수 있었습니다.

3. V8 자바스크립트 엔진

웹 프로그래밍 언어로서 가능성이 확인된 자바스크립트의 사용이 늘면서 더욱 발전된 자바스크립트 엔진이 요구되었습니다. 이로 인해, 2008년 구글은 V8 자바스크립트 엔진을 선보였고 이는 자바스크립트가 웹 애플리케이션 프로그래밍 언어로 정착하게 될 수 있는 계기가 되었습니다.

4. Node.js

Node.js는 구글 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임 환경입니다. 브라우저의 자바스크립트 엔진에서만 동작하던 자바스크립트를 브라우저 이외의 환경에서도 동작할 수 있도록 자바스크립트 엔진을 브라우저에서 독립시킨 실행 환경입니다. Node.js는 비동기 입출력을 지원하며 단일 스레드 이벤트 루프 기반으로 동작하여 요청 처리 성능이 우수합니다. Node.js로 인해 프론트엔드 개발에서만 사용하던 자바스크립트를 백엔드 개발에도 활용할 수 있게 되었습니다. 그 결과, 자바스크립트는 크로스 플랫폼을 위한 언어로 주목받게 되었습니다.

5. SPA 프레임워크

현재의 웹 시스템은 뛰어난 성능과 사용자 경험을 제공해야 하는 것이 필수가 되었고, 이는 개발 복잡도를 상승시켰습니다. 이전과 달리 복잡해진 개발 과정을 수행하기 위해 많은 프레임워크들이 등장했고, 그 중 CBD(Component based development)방법론을 기반으로 하는 SPA(Single Page Application)가 대중화되어 React, Vue, Angular 등이 많은 사랑을 받고 있습니다.

자바스크립트와 ECMAScript

ECMAScript는 자바스크립트의 표준 사양으로 핵심 문법을 규정합니다. 브라우저 제조사들은 이를 준수하여 브라우저에 내장되는 자바스크립트 엔진을 구현합니다. 기본 골조를 이루는 ECMAScript를 기반으로 브라우저 제조사들이 별도로 Web API를 지원합니다.

자바스크립트의 특징

자바스크립트는 웹 브라우저에서 동작하는 유일한 프로그래밍 언어입니다. 다른 언어들과 마찬가지로 기존의 프로그래밍 언어로부터 많은 영향을 받아 기본 문법은 C언어, 자바와 유사하고 Self에서는 프로토타입 기반 상속, Scheme에서는 일급 함수의 개념을 차용했습니다. 자바스크립트는 개발자가 별도 컴파일 작업을 하지 않는 인터프리터 언어로 대부분의 자바스크립트 엔진은 인터프리터와 컴파일러의 장점을 결합하여 처리 속도가 느린 인터프리터의 단점을 해소했습니다. 또한, 자바스크립트는 명령형, 함수형, 프로토타입 기반 객체지향 프로그래밍을 지원하는 멀티 패러다임 프로그래밍 언어입니다.


참고

이웅모, ⌈모던 자바스크립트 - Deep Dive⌋, 2020, 02_자바스크립트란?

JS 이미지 / https://github.com/voodootikigod/logo.js

프로그래밍 언어 순위 이미지 / https://redmonk.com/rstephens/2023/05/16/top20-jan2023/

LINKS

© Copyright 2021

made by React.js & gatsby