회사에 들어가자마자 새로운 언어를 공부하게 되어 당황스러웠지만, 기존에 토이 프로젝트를 진행하면서 적지 않게 써본 언어였기 때문에 공부하는데 크게 부담이 되진 않은것 같습니다.
기본적으로는 회사에서 물려받은 책을 통해 공부하였고, 부가적으로 이해가 필요했던 부분들은 인터넷에 나와있는 자료를 찾아보면서 공부하였습니다.
해당 카테고리에서는 다른 언어와 유사한 부분들을 과감하게 생략하고, JavaScript만이 가지고 있는 특징들에 대해서만 정리하고자 합니다.
필자의 경우 새로운 언어를 공부할 때, 바로 문법 공부로 넘어가기 보다는 조금 지루하더라도 그 언어의 탄생 배경을 이해하고 넘어가는 것이 좋다고 생각하는 편이므로, 해당 포스팅에서는 이러한 내용을 위주로 다룰까 합니다.
📌 JavaScript의 탄생
때는 바야흐로 1993년, 집집마다 컴퓨터가 없었던 그 시절, 컴퓨터를 잘 모르는 사람들도 쉽게 쓸 수 있는 UI 요소가 더해진 첫 번째 웹 브라우저 모자익(Mosaic)이 시장에 등장합니다.
해당 웹 브라우저의 개발팀을 이끌던 Marc Andreessen은 대학교를 졸업함과 동시에 Netscape라는 회사를 설립하게 되는데, 이전에 만들었던 모자익 웹 브라우저의 경험을 토대로 조금 더 UI 요소가 더해진 Netscape Navigator를 시장에 내놓게 됩니다.
이 당시에는 HTML과 CSS만으로 간단하게 웹 페이지를 만들 수 있었습니다. 즉, 텍스트에 링크를 걸어서 페이지와 페이지 사이에 이동만 가능한 정적인 웹 사이트만 만들 수 있었습니다.
이에 따라 Marc Andreessen은 동적인 웹 사이트를 만들기 위해 계속 고민하였으며, 이를 위해 Scripting 언어를 추가하기로 결심합니다.
그리하여 1994년 9월에 내부적으로는 Mocha라고 불렸던 새로운 언어가 탄생하게 되는데, 추후 LiveScript로 이름이 바뀌게 되고, NetScape Nevigator안에는 LiveScript를 이해하고 실행할 수 있는 LiveScript Interpreter가 포함되어서 출시되게 됩니다.
그 말은 즉슨, 웹 개발자들이 LiveScript 언어를 통해 웹 페이지를 만들게 되면 NetScape Nevigator 브라우저가 해당 언어를 이해하면서 그 언어가 실행하고자 하는 것에 알맞게 DOM 요소를 조작하는 것이 가능해지게 된 것입니다.
그리고 그 당시에는 Java 언어가 매우 인기였는데, NetScape는 단순히 LiveScript의 이름을 JavaScript로 변경함으로써 Java의 인기를 이용해 인지도를 쌓게 되었습니다.
이 때문에 많은 주니어 개발자들이 Java와 JavaScript가 비슷한 언어라고 오해하는 경우가 발생하기도 합니다.
이렇게 하여 1995년에 공식적으로 Netscape Navigator 브라우저 위에 JavaScript와 그 JavaScript를 이해할 수 있는 엔진(JavaScript Interpreter)이 포함되어서 출시되게 됩니다.
📌 ECMAScript
이후, 이러한 NetScape사의 성공 사례를 목격하고 브라우저의 무한한 잠재성을 확인한 마이크로소프트사는 위기감을 느끼고, Netscape Navigator 브라우저를 Reverse Engineering하여 조금만 변경한 뒤, 마치 자신들만의 언어인 척 JScript라는 언어를 시장에 내놓게 됩니다.
그리하여 1995년도에 마이크로소프트사에서도 Internet Explorer를 시장에 내놓게 되고, 이것은 웹 개발자들의 고통의 시발점이 됩니다.
웹 개발자들은 너무나 다른 두 브라우저에서 모두 잘 동작할 수 있는 웹 사이트를 만들어야 했으며, 때문에 그 당시에는 아래 사진과 같이 '우리 웹 사이트는 Internet Explorer에서 더 잘 동작하니까 지금 당장 해당 브라우저를 다운받으세요!'하는 문구를 흔히 볼 수 있었습니다.
이러한 상황을 보고만 있을 수 없었던 NetScape사는 ECMA International이라는 단체에 찾아가서 JavaScript 표준안을 만드는 것을 제안합니다.
그리하여 드디어 1997년 7월, 첫 번째 표준안인 ECMAScript 1이 시장에 등장하게 됩니다.
해당 표준안은 브라우저에도 동작하는 언어를 만들 때, 그리고 그 언어를 해석할 수 있는 엔진이 이해하기 위해서는 변수는 어떻게 만들어야 하고, 함수는 어떻게 정의해야 하고 하는 문법적인 사항들을 잘 정리한 문서입니다.
이후에도 추가적으로 새로운 표준안이 업데이트 되었으며, error handling, optional type annotaion, class, Enterprise scale 등 다양한 아이디어가 제안되었습니다.
이렇게 많은 것들이 논의되는 동안 Internet Explorer의 시장 점유율이 급격히 상승하게 되어 무려 95%에 달하는 점유율을 갖게 됩니다.
이렇게 큰 시장 점유율을 확보하게 된 마이크로소프트사는 표준안이 업데이트 되면서 추가되는 다양한 아이디어에 불만을 표하면서, 더 이상 ECMAScript 표준안에 참가하지 않게 됩니다. 그래서 2000년도부터는 이러한 표준화 진행이 더뎌지게 된 것이죠.
그리고 2008년 이러한 웹 시장을 급격하게 바꾸는 정말 진취적인 사건이 하나 발생하는데, 그것은 바로 구글에서 크롬(Chrome) 브라우저를 출시한 것입니다.
크롬은 JIT(just-in-time compliation)라는 굉장히 강력한 엔진이 포함된 브라우저 였는데, 이는 바로 JavaScript를 실행하는 속도가 엄청 빠른 강력한 엔진이었던 것입니다.
이런 크롬의 획기적인 등장에 시장에 존재하던 다른 브라우저들은 좋은 자극을 받게 되죠.
그래서 2008년 7월에, 모든 브라우저들이 모여 생산적인 대화를 하게 되고, 드디어 2009년 ECMAScript 5, 2015년에는 ECMAScript 6가 등장하게 됩니다.
현재 흔히 사용하는 class, arrow function, let, const와 같은 아이템들이 바로 ECMAScript 6에 정의되어 있습니다.
그 뒤로도 매 해마다 새로운 버전이 출시되고 있으며, 사실 조금씩 변경되었다 뿐이지 가장 커다란 변화가 생긴건 ECMAScript 5와 6라고 말할 수 있습니다.
이리하여 JavaScript는 성숙하고 잘 정착된 언어가 되었습니다.
📌 현재 JavaScript가 가고 있는 방향
최근 일어나고 있는 동향에 대해 살펴보자면, SPA(Single Page Application)를 빼놓을 수 없습니다.
즉, 웹 사이트를 만드는 것 만으로는 더 이상 충분하지 않으며, 하나의 페이지 안에서 데이터를 받아와서 필요한 부분만 부분적으로 업데이트하는 것이 트렌드가 되어가고 있는데, 몰론 JavaScript만으로도 충분히 구현이 가능하겠지만, 이를 좀 더 쉽게 구현하기 위해서 React, Vue와 같은 라이브러리나 프레임워크가 출시되고 있습니다.
또한 이러한 ECMAScript의 활발한 표준화와 V8 엔진을 통해 백엔드에서 서비스를 구현할 수 있도록 Nodejs와 같은 라이브러리 역시 등장하였습니다.