1995년 웹 브라우저 시장을 지배하고 있던 넷스케이프는 웹페이지의 보조적인 기능을 수행하기 위해 브라우저에서 동작하는 경량 프로그래밍 언어를 도입하기로 결정. 브랜던 아이크가 자바스크립트를 개발함.
자바스크립트가 다른 브라우저와는 완벽히 호환되지 못하고 브라우저에 따라 정상적으로 동작하지 않는 크로스 브라우징 이슈가 발생하기 시작했다. 따라서 모든 브라우저에서 정상 동작하는 표준화된 자바스크립가 필요했고 ECMA International이 표준화된 자바스크립트인 ECMAScript를 공개했다. 계속해서 새로운 기능이 추가되고 있고 지금 ES11(ECMAScript 2020)까지 나온 상황이다.
초창기 자바스크립트는 웹페이지의 보조적인 기능을 수행하기 위해 한정적인 용도로 사용되었다. 브라우저는 서버로부터 전달받은 HTML과 CSS를 단순히 렌더링하는 수준.
이러다가 비동기asynchronous 방식으로 데이터를 교환할 수 있는 통신 기능인 Ajax(Asynchronous Javascript and XML)가 등장했다. 이전의 웹페이지는 html 태그 안의 코드를 서버로부터 받아서 웹페이지 전체를 렌더링하는 방식으로 동작했다. 즉, 화면 전환은 새로운 웹페이지 전체를 렌더링하는 것을 의미했다. 변경할 필요가 없는 부분도 새로 받아서 렌더링해야 하므로 불필요한 데이터 통신이 발생하고 성능면에서도 불리했다.
이를 해결게 바로 Ajax. 웹페이지에서 변경할 필요가 없는 부분은 다시 렌더링하지 않고 서버로부터 필요한 데이터만 전송받아 변경해야 하는 부분만 렌더링하는 방식이 가능해졌다. 웹 브라우저에서도 데스크톱 앱과 유사한 빠른 성능과 부드러운 화면 전환이 가능해졌다.
2005년 구글은 자바스크립트와 Ajax를 기반으로 동작하는 구글 맵스를 발표했는데 우수한 성능과 부드러운 화면 전환 효과를 보여주면서 자바스크립트의 가능성을 일꺠워줬다.
2006년 다소 번거로웠던 DOM 구조를 쉽게 제어할 수 있는 jQuery가 등장했고 크로스 브라우징 이슈도 어느 정도 해결되었다.
구글 맵스를 통해서 웹 애플리케이션 프로그래밍 언어로서 자바스크립트의 가능성이 확인되었기에 자바스크립트를 활용하여 웹 앱을 구축하려는 시도가 늘어났고 더욱 빠르게 동장하는 자바스크립트 엔진이 필요해졌다. 2008년 구글의 V8 자바스크립트 엔진은 이러한 요구에 부합하는 빠른 성능을 보여주었다. V8의 등장으로 자바스크립트는 웹 앱 프로그래밍 언어로 완전히 정착하게 되었다.
V8 엔진으로 자바스크립트가 발전하면서 과거 웹 서버에서 수행되던 로직들이 대거 클라이언트(브라우저)로 이동했고, 웹 앱 개발에서 프론트엔드 영역이 주목받는 계기로 작용했다.
2009년 라이언 달은 구글 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임 환경인 Node.js를 발표한다. Node.js는 브라우저의 자바스크립트 엔진에서만 동작하던 자바스크립트를 브라우저 이외의 환경에서도 동작할 수 있도록 자바스크립트 엔진을 독립시킨 환경이다. Node.js가 나오면서 프론트엔드와 백엔드 영역에서 자바스크립트를 사용할 수 있다는 동형성은 별도의 언어를 학습하기 위한 시간을 덜 수 있다는 장점이 생겼다.
Node.js 는 비동기 I/O를 지원하며 단일 스레드 이벤트 루프 기반으로 동작한다. 요청 처리 성능이 좋기 때문에 Node.js는 데이터를 실시간으로 처리하기 위해 I/O가 빈번하게 일하는 SPA에 적합하다.
Node.js의 등장으로 자바스크립트는 브라우저를 벗어나 서버 사이즈 애플리케이션 개발에서도 사용할 수 있게 되었고 이제는 웹은 물론 모바일 하이브리드 앱(PhoneGap, React Native), 서버사이드, 데스크톱(Electron),머신러닝(TensorFlow.js), 로보틱스(Johnny-Five) 등등에서 활용되기 시작했다.
웹 애플리케이션의 개발 규모와 복잡도가 기하급수적으로 상승하면서 이에 따라 많은 패턴과 라이브러리가 출현했다. 현재는 Component Based Development을 기반으로 하는 SPA가 대중화되었고 Angular, React, Vue, Svelte 등 다양한 SPA 프레임워크/라이브러리가 많은 사용층을 확보하고 있다.
자바스크립트는 HTML,CSS와 함께 웹을 구성하는 요소 중 하나로 웹 브라우저에서 동작하는 유일한 프로그래밍 언어이다. 자바스크립트는 개발자가 별도의 컴파일 작업을 수행하지 않는 인터프리터 언어이다. 대부분의 모던 자바스크립트 엔진은 인터프리터와 컴파일러의 장점을 결합해 비교적 처리 속도가 느린 인터프리터의 단점을 해결했다. 이를 통해 컴파일 단계에서 추가적인 시간이 필요함에도 빠르게 코드를 실행할 수 있다.
자바스크립트는 명령형, 함수형, 프로토타입 기반 객체지향 프로그래밍을 지원하는 멀티 패러다임 프로그래밍 언어이다. 다른 객체지향 언어와 비교하면 논쟁이 있을 수 있지만 그럼에도 자바스크립트는 강력한 객체지향 프로그래밍 능력을 지니고 있다.
'웹 > Javascript' 카테고리의 다른 글
자바스크립트 딥 다이브 스터디 4장 - 변수 (0) | 2023.06.27 |
---|---|
자바스크립트 딥 다이브 스터디 3장 - 자바스크립트 개발 환경과 실행 방법 (0) | 2023.06.22 |
자바스크립트 딥 다이브 스터디 1장 - 프로그래밍 (0) | 2023.06.22 |
React - 유효성 검사 로직 만들기 + custom hook (0) | 2022.07.19 |
javascript - async 활용 try catch 문 (0) | 2022.07.11 |