📌 Outline
- 이번에 회사에 처음 입사하게 되면서 JavaScript에 대해 공부하게 되었습니다.
- 회사에 들어가자마자 새로운 언어를 공부하게 되어 당황스러웠지만, 기존에 토이 프로젝트를 진행하면서 적지 않게 써본 언어였기 때문에 공부하는데 크게 부담이 되진 않은것 같습니다.
- 기본적으로는 회사에서 물려받은 책을 통해 공부하였고, 부가적으로 이해가 필요했던 부분들은 인터넷에 나와있는 자료를 찾아보면서 공부하였습니다.
- 해당 카테고리에서는 다른 언어와 유사한 부분들을 과감하게 생략하고, 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와 같은 라이브러리 역시 등장하였습니다.
'🍦 JavaScript > JavaScript 기초' 카테고리의 다른 글
[JavaScript 기초] 4. JavaScript 최신 문법(ES6, ES11) (0) | 2023.08.27 |
---|---|
[JavaScript 기초] 3. 비동기 처리(Callback, Promise, async/await) (1) | 2023.08.26 |
[JavaScript 기초] 2. Variable (0) | 2023.08.26 |
[JavaScript 기초] 1. async와 defer (0) | 2023.08.26 |