[JavaScript] 자바스크립트(JavaScript)의 역사
JavaScript

[JavaScript] 자바스크립트(JavaScript)의 역사

그래픽 웹브라우저의 탄생

모자이크(Mosaic) 웹 브라우저

1993년, NCSA 사에서 현대 그래픽 웹브라우저의 시초로 알려진 모자이크(Mosaic) 웹 브라우저가 탄생했습니다. 하나의 창에 텍스트와 이미지를 동시에 출력한 최초의 웹브라우저로, 당시 컴퓨터를 잘 모르는 사람들도 쉽게 쓸 수 있는 UI 요소가 더해져 있었습니다.

 

이 모자이크 웹브라우저의 개발팀을 이끌던 Marc Andreessen은 대학교를 졸업함과 동시에 Nescape라는 회사를 설립하게 됩니다. 1994년 Marc는 모자이크 웹브라우저 기술을 발전시켜 조금 더 UI요소가 더해진 Netscape Navigator 브라우저를 만듭니다. 이 당시에는 HTML과 CSS로 정적인 웹사이트 밖에 만들 수 없습니다. page와 page 에 링크를 걸어서 페이지 이동만 가능한 정말 정적인 웹사이트만 가능했기에 Marc는 이후에도 "어떻게 하면 동적인 웹사이트를 만들 수 있을까?" 계속 고민하게 됩니다.


새로운 언어의 탄생 (Mocha, LiveScript, JavaScript)

그래서 Marc 는 Scripting 언어를 추가하기로 합니다. 이미 사용자들에게 보여지는 웹사이트 안에서 DOM 요소들을 조작하면서 다이나믹한 요소들을 만드는 개념을 생각한 것이죠.

당시 한창 뜨고있던 자바는 웹사이트를 주로 개발하던 개발자들이 쓰기에는 조금 무거웠기 때문에 Marc는  Brendan Eich를 스카웃해서 기존에 있던 Scheme 언어를 조금 변형해서 사용하는 것을 택합니다. 그리고 Scheme 언어의 컨셉은 유지하며 문법을 좀 더 자바(Java)스럽게 만들기로 합니다.

 

그리하여 1994년 9월, Brendan은 내부적으로 Mocha 라고 불리는 새로운 언어를 탄생시킵니다! 이는 추후 LiveScript로 이름이 바뀌게 되고 Netscape Navigator 브라우저 안에는 LiveScript를 이해하고 실행할 수 있는 LiveScript 엔진 (인터프리터)이 포함되어 출시되게 됩니다. (인터프리터에 대한 설명은 여기 참고 -> [언어] 컴파일러(Compiler)와 인터프리터(Interpreter))

 

그리고 당시에는 자바(Java)언어가 BTS급의 엄청난 인기를 끌고있었는데.. 이 인기에 동승하고자 LiveScript의 이름을 JavaScript로 변경하면서 JavaScript 가 탄생하게 됩니다.


경쟁자의 등장 (feat. Microsoft)

Netscape Navigator 로 브라우저의 무한한 가능성을 엿본 마이크로소프트(Microsoft)는 브라우저를 개발해야한다는 위기감을 느끼게 됩니다.그래서 이들은 Netscape Navigator 를 직접 리버스 엔지니어링 (Reverse Engineering - 만들어진 프로그램에 코드를 분석해서 소스코드를 복원해내는 과정) 합니다.

 

이과정에서 Netscape 사에서 만든 자바스크립트의 그 엔진과 소스코드를 고대로 복원해서 (배껴와서) 자신들만의 언어인 척 JScript 를 만듭니다. 이를 기반으로 Microsoft사에서 Internet Explorer 브라우저를 내놓게 됩니다. 웹개발자들 고통이 시작된것이죠. 스크립트에 대한 표준이 정해져있지 않으니 한 브라우저에서 나오면 한 브라우저에서는 안나오게되는 상황이 빈번하게 생겼습니다.


스크립트 표준화 및 통일 과정 (거의 삼국사기급..)

1996년, 더이상 참지 못한 Netscape사는 ECMA(European Computer Manufacturers Association) international 이라는 정보와 통신 시스템을 위한 국제적 표준화 기구에 찾아가서 "우리가 JavaScript라는 언어를 만들었는데 이걸로 표준안을 한번 만들어보자"! 라고 제안합니다. 그리고 1997년 첫번째  ECMA Script1 language specification 등장합니다. ECMA 스크립트는 브라우저에서 동작하는 언어를 만들떄, 그리고 그 언어를 이해할 수 있는 엔진을 만들기 위한 문법적인 사항들을 정리한 문서입니다.

 

모든게 순조롭게 진행되는 듯 했지만... 그 사이 Microsoft사에서 만든 Internet Explorer이 시장 점유율이 95%까지 올라갔습니다. 콧데가 높아진 Microsoft는 ECMA의 방향에 대해 점점 불만을 표시하더니 더이상 ECMA Script 표준안에 참가하지 않았습니다.

 

시간이 흘러 2004년 모질라(Mozilla (moz://a)) 사에서 Firefox 브라우저를 출시합니다. 모질라 사는 ECMA 에 찾아가서  "야, 우리가 만든 actionScript3라는 멋진 언어가 있고, Tamarin이라는 엔진이 있는데, 이걸로 우리 다시한번 표준화를 검토해보자"라고 제안합니다. 하지만 ECMA에서는 이미 자바스크립트와 그에 맞는 엔진이 있었기에 다시 새롭게 표준안을 작성하기엔 무리라고 판단합니다.

 

그래서 표준안을 앞에 두고 Netscape / Microsoft / Mozilla 3사의 치열한 신경전이 있었죠. 그 와중에 Jesse James Garrett가 나와서 비동기적으로 데이터를 서버에서 받아서 처리할 수 있도록 도와주는 정말 획기적인 AJAX (Asynchronous JavaScript and XML) 를 들고왔고,  웹개발시장이 커지면서 JQuery, dojo, mootools 같은 라이브러리들이 많이 나오게 됩니다.

 

다시 시간이 흘러 2008년, 브라우저의 끝판왕 Google사의 Chrome 브라우저가 출시됩니다. 크롬브라우저는 JIT (just-in-time comilation) 이라는 굉장히 강력한 엔진이 포함되어 있어서 JavaScript 실행속도가 엄청나게 빠릅니다. 이때 Netscape / Microsoft / Mozilla 에 Google 까지 포함된 4사가 모야 표준화에 대한 의논을 합니다.

 

그리고 2009년! 표준화가 완료된 ECMAScript5 이 출시됩니다. 이후

  • 2015 ECMAScript 6 탄생
    • default parameter, class, arrow function, const, let
    • 이 이후에 매년 새로운 버전 탄생!
    • 커다란 변화들은 5, 6 버전에서 많이 정의되었고 이 이후에는 조금씩 변했다.
    • 이제는 더이상 jQuery같은 라이브러리의 도움 없이 언어만으로도 충분히 모든 브라우저에서 잘 동작할 수 있는 웹 사이트나 웹 어플리케이션을 만들 수 있다.
  • 2016 ECMAScript 7 탄생
  • 2017 ECMAScript 8 탄생
  • 2018 ECMAScript 9 탄생
  • 2019 ECMAScript 10 탄생
  • 2020 ECMAScript 2020 탄생

와 같은 표준화를 거칩니다.

 

**개발할때는 최신 버전의 ECMAScript(ES)를 사용하고, 사용자에게 배포할 때만 Javascript transcompiler를 이용해 ES 버전을 5, 6 등으로 변환된 코드를 생산해주는 곳이 BABEL입니다.


최신 동향

SPA (Single Page Application)

하나의 페이지 안에서 데이터를 받아와서 필요한 부분만 부분적으로 업데이트 하는 것이 굉장히 유행하고 있습니다. 물론 JavaScript 만으로도 충분히 구현이 가능하겠지만, 이 SPA를 조금 더 쉽게 만들기 위해서 REACT, ANGULAR, VUE 같은 프레임워크가 동작했습니다.

 

Node.js

그리고 이런 자바스크립트는 브라우저를 위한, 브라우저에서 동적인 요소를 추가하기 위해서 만들어진 언어 node.js가 등장하게 됩니다. node.js는 V8 자바스크립트 엔진을 이용한 백엔드에서 서비스를 구현할 수 있도록 만들어졌습니다. react 네이티브나 콜더와 같은 아이들을 이용해서 모바일 어플리케이션도 만들 수 있고, electron을 이용해 데스크탑 어플리케이션도 만들 수 있습니다.

 

 

출처:
- 자바스크립트의 역사와 현재 그리고 미래!(드림코딩)
- 자바스크립트의 역사