자바스크립트의 역사

sue·2020년 10월 27일
0

javaScript note

목록 보기
1/9

자바스크립트 배우기전 꼭 봐야할 영상 | 자바스크립트의 역사와 현재 그리고 미래 (JavaScript, ECMAScript, JQuery, Babel, Node.js)
드림코딩 by 엘리의 유튜브 강의를 정리한 내용입니다.

자바스크립트의 역사

1993, Mosaic Web Browser

1993년, 집집마다 컴퓨터가 없던 시절, 컴퓨터를 잘 모르던 사람도 쉽게 쓸 수 있는 UI요소가 더해진 모자이크 웹 브라우저(Mosaic Web Browser)가 세상에 등장했다.

1994, Netscape Navigator

당시 모자이크 웹 브라우저의 개발 팀장 마크 앤더슨(Marc Andreessen)은 대학교를 졸업함과 동시에 Nescape라는 회사를 설립하고, 이전에 만들었던 Mosaic Web Browser 기술을 더해 조금 더 ui요소가 추가된 Netscape Navigator를 만든다.

1994, LiveScript -> Javascript

Netscape Navigator는 시장에서 80% 이상의 점유율을 차지했는데, 마크는 이후에도 "어떻게 하면 동적인 웹사이트를 만들 수 있을까?" 계속 고민하다 새로운 언어를 추가하기로 한다.

새로운 언어 후보자는 다음과 같았다.

1) Java - 그 때 당시 한창 뜨고 있던 언어, 하지만 웹사이트를 주로 개발하던 개발자들이 쓰기엔 다소 무거운 언어이기에 패스
2) Scheme - Brendan Eich라는 사람을 스카웃해와서 기존에 존재했던 Scheme 언어를 조금 변형해서 사용하는 방법

마크는 브랜든과 Scheme 언어의 컨셉은 유지하며 문법을 좀 더 자바스럽게 만들기로 결정했다. 그리하여 브랜든은 10일 안에 프로토타입을 베이스로 한, 내부적으로는 Mocha 라고 불렸던 새로운 언어를 탄생시켰고 추후 LiveScrpt로 이름을 바꾼다. Netscape Navigator 브라우저 안에는 LiveScript를 이해하고 실행할 수 있는 LiveScript 엔진, interpreter가 포함되어 출시되었다.

이것은 웹개발자들이 LiveScript를 이용해 웹페이지를 만들게 되면 Netscape Navigator가 그 언어를 이해하면서 그 언어가 실행하고자 하는 것과 알맞게 dom 요소들을 조작하는 것이 가능해졌다는 말이다.

그리고 그 당시 자바가 인기가 많았기 때문에, 어떻게 하면 자바의 인기에 올라탈 수 있을까 고민 끝에 라이브스크립트를 자바스크립트(JavaScript) 로 이름을 변경하게 된다.

1995, JScript

브라우저의 무한한 가능성을 엿본 Microsoft 회사에서 브라우저를 개발해야 겠다는 위기감을 느꼈고, 이들이 선택한 방법은 Netscape에서 출시한 브라우저(Netscape Navigator)를 reverse engineering 하는 일이었다.

reverse engineering이란, 만들어진 프로그램에 코드를 분석해서 소스코드를 복원해내는 과정이다. 그래서 결국 Netscape사에서 만든 자바스크립트의 그 엔진과 소스코드를 그대로 복원해서 자신들만의 언어인 척 만들게 된다. 그리고 이 이름을 JScript라고 살짝 변경해 시장에 내놓았다.

그렇게 Microsoft사에서도 Internet Explorer라는 브라우저를 내놓게 된다.
=> 웹개발자들 고통의 시작점😨

왜냐하면 웹개발자들은 너무나 다른 이 두 브라우저에서도 동작할 수 있는 웹사이트들을 만들어야 했기 때문이다.

1996, ECMA International에 표준안 제안

이에 Netscape사는 언어의 표준화 및 명세화를 위해 ECMA International 이라는 단체에 찾아가서 본인들이 만든 JavaScript언어로 표준안을 만들어보자는 제안을 한다.

1997, 7 ECMA Script1 등장

드디어, 첫번째 ECMA Script1 language specification이 시장에 등장한다.
이크마스크립트는 ECMA-262 기술 규격을 따르면서 브라우저에서 동작하는 언어를 만들때, 그리고 그 언어를 해석하는 엔진이 이해하기 위한 문법적인 사항들을 잘 정리한 문서이며, 매년마다 새로운 버전들이 계속 나오게 되었다.

ECMAScript는 스크립트 언어가 따라야하는 규격 사항들을 정의한 문서고, 그 규격대로 만들어진, 개발자들이 쓸 수 있는 프로그래밍 언어가 자바스크립트!

2000

그러다 인터넷 익스플로러의 시장 점유율이 95%에 이르게 되자, 마이크로 소프트사는 "야, 우리가 개발자들이 쉽게 사용하게 하려고 스크립트 언어를 만들었지, 클래스를 추가하면 더이상 스크립트 언어가 아니다" 하면서 불만을 표시하더니, 인터넷 익스플로러가 표준이라고 선언하면서 더 이상 ecma script의 표준안에 참가하지 않게 된다. 그래서 2000년도부터 표준안 진행이 더디어지게 되었다.

2004

이후 모질라 사에서 firefox가 출시되고 ecma 단체에 "우리가 actionScript3라는 멋진 언어가 있고, 이 언어를 해석할 수있는 Tamarin이라는 엔진이 있는데, 이걸로 우리 다시한번 표준화를 검토해보자." 라고 제안한다.

하지만 이 actionscript3와 tamarin은 기존에 쓰던 javascirpt와 jscript와 너무나 달랐기 때문에 이걸로 다시 표준화를 진행하기에는 무리라고 판단했고, 그래서 표준안을 두고 3사(mozila, microsoft, netscape)의 치열한 경쟁이 있었다.

그 와중에 웹 시장에서는 제시 제임스(Jesse James Garrett)가 AJAX(Asynchronous JavaScript and XML) 들고와, 비동기적으로 데이터를 서버에서 받아오고 처리할 수 있도록 도와주는 획기적인 기술이 도입되게 된다.

이런 아작스의 도입에도 불구하고 3사의 치열한 신경전과 다른 브라우저들이 나오면서 개발자들은 다양한 브라우저에서 잘 동작하는 웹페이지를 만들기 위해 고생하게 된다. 또 이와 동시에 웹 시장이 점점 커지면서 개발자들의 커뮤니티가 강력해졌다.

이런 커뮤니티 사이에서 JQuery, dojo, mootools와 같은 라이브러리들이 등장했다. 이런 라이브러리들이 해결하고자 했던 공통된 문제점은 딱 하나, 개발자들이 더이상 다른 브라우저의 구현 사항을 신경쓰지 않아도 되게 만드는 것이었다.

그 중에서도 제이쿼리가 write less, do more란 철학으로 가장 인기를 끌었다.

2008

이중에서도 더욱 급격하게 웹 시장을 진취적으로 바꾸는 사건이 하나 있었다.

그것은 바로 2008년도에 구글에서 크롬 브라우저가 출시된 것이다. 크롬은 JIT(just-in-time compilation) 라는 자바스크립트를 실행하는 속도가 엄청나게 빠른 강력한 엔진이 포함된 브라우저이다.

그래서 다른 브라우저들이 성능 개선을 해야겠다는 좋은 자극을 받았고, 4사가 모여 표준화를 만들어보자, 서로 윈윈의 관계를 형성해보자 하며 생산적인 대화를 하게 된다.

2009, 2015

그렇게 2009년 ecma script 5, 뒤를 이어 2015 ecma script 6이 나오게 된다. 매해마다 새로운 버전이 나오고 있지만 거의 커다란 변화는 5와 6에서 나왔다.

현재

이제 javascript 성숙하고 잘 정착된 언어이다. 모든 브라우저들이 이제는 이크마스크립트의 표준화를 잘 따르고 있기 때문에 이제는 더이상 제이쿼리, 도조 같은 라이브러리의 도움없이 자바스크립트와 웹 APIs에서 제공하는 APIs들 만으로도 모든 브라우저에서 잘 동작할 수 있는 웹사이트나 웹어플리케이션을 만들 수 있다.

그리고 각 브라우저들 마다 이크마스크립트의 표준안을 따라가는 다양한 엔진들이 존재한다. 크롬브라우저에서 쓰이는 V8 자바스크립트 엔진은 node.js와 electron에서도 많이 이용되며, 2020년도 2월 경에는 MS Edge사에서도 V8 엔진으로 대체해서 사용하고 있다.

사용자들은 다양한 브라우저를 쓰고, 또 모두가 최신 버전의 브라우저를 쓰고 있는 건 아니다. 하지만 개발자들은 최신 버전의 쿨한 ecma script를 쓰고 싶기에 개발할 때는 최신 버전으로 쓰고, 사용자에게 배포를 할 때만 JavaScript transcompiler를 이용해서 최신 버전을 5,6버전으로 변환해 변환된 코드를 생산해주는 것이 Babel이다.

가고 있는 방향

요즘은 SPA(Single Page Application)가 뜨고 있다. 웹사이트를 만드는 것은 더이상 충분하지 않다며 하나의 페이지 안에서 데이터를 받아와 필요한 부분만 부분적으로 업데이트 하는 것이 굉장히 유행중이다. 물론 자바스크립트만으로도 충분히 구현이 가능하겠지만 이 SPA를 조금 더 쉽게 만들기 위해서 React, Angular, Vue 같은 아이들이 나오게 되었다. 이런 라이브러리나 프레임 워크들을 이용해 SPA를 조금 더 쉽게 구현해 낼 수 있다.

그리고 자바스크립트는 브라우저를 위한, 브라우저에서 동적인 요소를 추가하기 위해서 만들어진 언어인데 이런 이크마 스크립트의 활발한 표준화를 통해서, 강력한 V8 자바스크립트 엔진을 통해서 Node.js가 등장했다. Node.js는 V8 자바스크립트 엔진을 이용한 백엔드에서 서비스를 구현할 수 있도록 만들어진 아이이다.

또한 react native나 콜더와 같은 아이들을 이용해서 모바일 어플리케이션도 만들 수 있으며, electron을 이용해 데스크탑 어플리케이션도 만들 수 있다.

자바스크립트를 배워 이용할 수 있는 분야는 무궁무진하다!

뜨고 있는 다른 기술

브라우저에서 동작할 수 있는 유일한 언어는 자바스크립트였는데 요즘에는 웹 어셈블리가 등장해서 java, c#, c++, python 등 다양한 언어들을 이용해서 웹 애플리케이션을 만드는 게 가능해졌다. figma도 웹 어셈블리로 만들어진 좋은 예이다.

0개의 댓글