1강 자바스크립트의 역사와 성장

cockyb·2021년 3월 5일
1
post-thumbnail
  1. 자바스크립트의 탄생
  1. 자바스크립트의 성장
  2. 마치며

1. 자바스크립트의 탄생

자바스크립트는 간단히 말하면 우리가 사용하는 브라우저를 제어하기 위한 스크립트 언어 입니다. 설명한 것 처럼 '브라우저'를 제어하기위해 탄생했습니다. 1995년 브라우저 시장의 선두주자인 넷스케이프 커뮤니케이션즈에서 SchemeScript라는 스크립트 언어를 제작한 Brendan Eich를 영입해 만들게 된 언어 입니다. 재미있는 사실은 당시 강세였던 Java언어 스러운 스크립트 언어를 만들고 싶었고 Java의 인기에 묻혀가고 싶어서 Javascript라는 이름을 지었다고 합니다. 역할은 너무나도 다르지만요.

현재 자바스크립트는 브라우저 스크립트 언어로써 독보적이지만 당시에 JScript(MicroSoft 사가 만듬)같은 언어들과 경쟁도 했다고 합니다. 이둘의 양강체제에서의 큰 문제점은 두 언어에 대한 표준화가 안되었다는 점입니다. 이 뜻은 브라우저에 따라서 내가 만든 웹페이지의 기능이 작동할 수도 있고 안될 수 도 있다는 뜻입니다. 개발자로써는 정말 끔찍한 일이죠? 결국 넷스케이프사(Javascript를 만든 회사)에서 먼저 나서서 컴퓨터 시스템의 표준을 관리하는 비영리 표준화 기구인 ECMA에 표준화를 해달라고 제안하게 됩니다. 그렇게 탄생하게 된 것이 ECMAScript 입니다. 언어가 먼저나오고 언어에 대한 표준화가 이루어 졌다고 할 수 있습니다.

어찌됐든 그렇게 시작된 ECMAScript는 97년에 ES1으로 초판이 나왔고 지금까지 성장했습니다.
현재는 ES11(ECMAScript 2020)을 표준으로 출시 되었습니다. 자세한 내용은 아래 링크를 참고해 주세요.

ECMAScript

2. 자바스크립트의 성장

자바스크립트는 초창기 단순한 브라우저를 제어하는 용도로만 쓰였습니다. 그러나 99년도 부터 어썸한 기술들이 나오기 시작합니다. 자바스크립트의 굵직한 기술들을 순서대로 나열해 보겠습니다.

Ajax

브라우저는 웹 서버로 요청을 보내고 웹 서버로부터 렌더링된 HTML을 주기도 하고 HTML, CSS, Javascrip 파일을 받아 렌더링했습니다. 그러나 Ajax는 서버에 요청을 보내긴 하지만 새롭게 HTML, CSS, Javascript 같은 파일을 받을 필요 없이 필요한 데이터만을 비동기적으로 받을 수 있게 해줍니다. 별것 아닌 것처럼 보이지만 당시에는 충격적이 였을 겁니다. 페이지의 내용이 바뀌는 데도 흰 화면이 깜빡이지 않았으니까요. 여담이지만 현재는 주로 Json형태로 데이터를 주고 받지만 당시에는 XML 형태로 데이터를 주고 받았다고 하네요.)

JQuery

2000년대 당시에 브라우저 DOM을 제어하는 것에는 꽤나 문제가 있었습니다. ECMAScript라는 표준이 있었지만서도 브라우저 마다 약간씩 다른 부분도 있었구요. 하지만 난세에 영웅이 나듯이 JQuery가 등장 했습니다. Javascirpt보다 보기 쉽고 여러 브라우저에도 편하게 대처할 수 있도록 하기위해 JQuery라는 라이브러기가 개발되었고 이를 선호하는 개발자들이 양산되던 시기 였습니다.

V8 엔진과 Node.js

점점 브라우저들은 클라이언트와 상호작용이 많아지기 시작하던 시대였습니다. 그만큼 브라우저는 많은양의 자바스크립트를 감당해야 했고 브라우저 자체적으로 엔진의 필요성이 대두 되었습니다.
이때 등장한 것이 구글의 V8엔진 입니다. 이 엔진덕에 서버에서 처리하던 일을 클라이언트에서 처리해도 될 정도로 브라우저와 자바스크립트의 기능이 넓어지면서 프론트엔드 영역 슬슬 대두되기 시작하게 되고, 2009년에 Node.js가 나오게 되며 사실상 프론트 엔드 개발이라는 영역을 창조했다고 해도 무방합니다. Node.js는 보기에는 그냥 Javascript 라이브러리 이름처럼 생겨먹었지만. 이것은 바로 Javascript Runtime입니다. 무슨 의미 냐구요? 가장 첫 문단에 말씀 드렸던것 처럼 자바스크립트는 브라우저를 제어하기 위한 스크립트 언어 였습니다. 즉 브라우저 위에서만 실행이 가능하다는 것 이였죠. 그러나 Node.js는 V8엔진으로 빌드되어 Javscript를 브라우저가 아닌 이외의 환경에서도 동작할 수 있게 해줍니다. 이 뿐만이 아니라 NPM(Node Package Manager)이라는 패키지 관리자를 통해서 온라인 데이터베이스에서 원하는 라이브러리들을 쉽게 다운받을 수 있게 해주었습니다. 이 오픈소스 시스템을 바탕으로 Javascript는 또 한번 거대한 성장을 이뤄낼 수 있었습니다.

프레임워크, SPA,

'React는 상호작용이 많은 UI를 만들 때 생기는 어려움을 줄여줍니다.' 리액트 공식 홈페이지에 걸려있는 내용입니다. 사실 저는 2020년에 입문하게 되면서 위에서 말하는 복잡한 상호작용을 프로덕션 레벨에서 겪어본적이 없습니다. 무엇이 그들을 그렇게 힘들게 했을지는 짐작이 가지 않지만 위같은 복잡한 상황들로 인해 프론트 엔드 영역에서도 프레임워크라는 개념이 생겨나기 시작했으며, 확장의 유연함을 위해 컴포넌트 베이스 방법론을 기반으로 하는 SPA가 대중화 되고, 흔히들 말하는 리, 앵, 뷰 (React, Vue.js, Angular) 같은 다양하 SPA 프레임워크가 대세가 되었다. (현재는 SPA에서 다시 SSR쪽으로 넘가는 분위기인 것 같습니다.)

3. 마치며

Javascript는 빠르게 발전해왔습니다. 언어 자체도 다른 언어들의 장점만 찝어와 문법자체도 빠르게 바뀌고 있구요. Javascript 개발자를 지망한다면 Javascript 그 자체를 이해하고 배워나가야하지 특정 기술이나 프레임워크에 너무 몰두하지 않으 셨으면 합니다. 어차피 기술이나 프레임워크는 시간이 지나면 유행이 또 바뀌게 될테고, 그때 다시 배워야할 테니까요. 그 기반에는 Javascript 언어 자체에 대한 이해도와 브라우저, 네트워크, 운영체제 같은 CS기반 지식도 빠질 수 없겠죠?

profile
Junior Frontend Developer (Javascript, React, Node js, Express)

0개의 댓글