minzzl

[Javascript] Javascript 역사 본문

프로젝트/자바스크립트

[Javascript] Javascript 역사

minzzl 2022. 10. 6. 16:59
728x90
반응형

 

 

이 글에서는 Javascript의 역사에대해 알아보겠습니다.

 

 

MOSAIC

1993년 집집마다 컴퓨터가 없었던 시절, 컴퓨터를 잘 모르는 사람들고 쉽게 쓸 수 있는 UI 요소가 더해진 MOSAIC이라는 웹브라우저가 시장에 나오게 됩니다. MOSAIC 웹 브라우저의 개발 팀을 이끌던 Marc Andreessen은 대학교를 졸업함과 동시에 Netscape라는 회사를 설립하게되는데요, 이 전에 만들었던  MOSAIC 웹 브라우저의 경험을 토대로하여 조금 더 UI 요소가 더해진 Netscape Navigator를 시장에 내놓게 됩니다.

 

Netscape Navigator

 

이 당시에는 html과 css로 간단하게 웹페이지를 만들 수 있었는데요, HTML의 약자인 Hyper Text, 텍스트에 링크를 걸어서 페이지와 페이지 사이에 이동만 가능한 정말 정적인 웹사이트만 가능했습니다. 이 Netscape는 시장에서 80% 정도의 점유율을 자랑하면서 급격히 성장해 나갑니다.

 

그리고  Marc Andreessen는 계속 고심하면서, "어떻게하면 사용자들로 하여금 조금 더 동적으로 웹사이트를 만들수 있을까?" 라는 생각하게 되죠.

 

그래서 고안된 것이 *Script 언어를 추가하는 것이었습니다. 

 

Script Language - 응용 소프트웨어를 제어하는 컴퓨터 프로그래밍 언어

 

즉, 사용자들에게 이미 보여주고 있는 웹사이트 안에서 돔 요소들을 조작하면서 다이나믹한 웹 사이트를 만들기 위해 새로운 언어를 추가하기로 결심합니다.

 

가장 처음으로 고려되었던 것은 그 당시 한참 뜨고 있었던 JAVA 언어였습니다. 그러나 웹사이트를 주로 개발하던 개발자들이 쓰기에는 다소 무겁고 어려운 언어였기 때문에 무산됩니다.

 

그 다음으로 시도한 것은 Brendan Eich를 스카웃해와서 기존에 존재했던 Schem Script 언어를 조금 변형하는 것이었습니다.

기존의 Schem Scripting 언어의 컨셉을 유지하면서 문법은 조금 더 JAVA스럽게 만들도록 말이죠.

 

그리하여 Brendan Eich는 프로토타입을 베이스로한 정말 유연한 언어를 개발하게됩니다. 

 

1994년, 내부적으로는 Mocha라고 불렸던 새로운 언어가 탄생하게 되는데요, 추후 LiveScript라는 이름으로 변경하게됩니다. 

그리하여 Netscape Navigator안에는 LiveScript를 이해할 수 있는 LiveScript 엔진, 즉 Interpreter가 포함이 되어서 브라우저가 출시되게 됩니다.

즉 이제 개발자들은 LiveScript 언어를 이용해서 웹 페이지를 만들게되면 Netscape Navigator라는 웹 브라우저가 그 언어를 이해하면서 그 언어가 실행하고자하는 것에 알맞게 DOM 요소들을 조작하는 것이 가능해지게된것입니다. 

 

그 당시 JAVA 언어의 인기가 치솟고 있었는데요, 

Netscape 는 어떻게 하면 이 JAVA의 인기에 살짝 얹혀서 잘 올라탈 수 있을까 고민하면서 이 LiveScript언어의 이름을 JavaScript로 변경하게됩니다.

그래서 이것 때문에 많은 개발자들이 JAVA와 JavaScript가 비슷한 걸로 오해하게 되는 일들이 많이 발생하곤 하지만 이 역사를 이해하면 완전히 별개의 언어라는 것을 확인할 수 있습니다.

 

거두절미하고, 이렇게 하여 1995년도에 공식적으로 Netscape Navigator 브라우저 위에 JavaScript와 그 JavaScript를 이해할 수 있는 엔진이 포함이 되어서 드디어 출시가됩니다.

 

 

이러한  Netscape의 성공을 목격하고 이 브라우저의 무한한 잠재성을 확인한 Microsoft가 Netscape 사에서 출시한 브라우저를 바로 *Reverse engineering하여 JScript라는 언어를 시장에 내놓게됩니다.

 

* Reverse engineering 
- 프로그램의 바이너리 코드를 분석해서 소스코드를 복원해내는 과정

 

 그리하여 Microsoft도 같은 해에 InternetExplorer를 시장에 내놓게 되는데, 바로 이것은 우리 개발자들의 고통의 시발점이 되었습니다. 왜냐하면 웹개발자들은 너무나 다른 브라우저 위에서도 잘 동작할 수 있는 웹사이트를 만들어야했기 때문입니다. 

 

그래서 그 당시에는 다음과 같이 UI가 최적화된 웹브라우저로 안내하는 문구가 자주 보였다고 합니다. 

이와 같은 상황이 마음에 들지 않았던 Netscape는 ECMA International 이라는 단체를 찾아가서 자신들이 Javascript를 만들었으니 이와 관련한 표준안을 만드는 것을 제안하게됩니다. 그리하여 1997년 7월 첫 번째 ECMAScript 1이 시장에 나오게됩니다. 이 때 ECMAScript는 브라우저에서 동작하는 언어를 만들 때, 그리고 그 언어를 이해할 수 있는 엔진이 이해하기 위한 문법적인 사항들을 정리한 문서를 의미합니다. 그 이후로도 새로운 버전들이 계속 추가적으로 나오게되었는데, 그 동안에 Internet Explorer의 시장 점유율은 급격히 상승하여 95%가량을 차지했다고 합니다.

 

이렇게 큰 시장 점유율의 확보하게 된 마이크로소프트사는 더 이상 Netscape에서 고안한 ECMAScript 표준안에 참가하지 않음을 밝히는데요, 그리하여 2000년도 부터는 ECMAScript의 표준안 진행이 급격히 느려지게됩니다.

 

그리고 4년 뒤인 2004년도에 mozila 에서 Firefox를 출시합니다. 

 

mozila는 ECMA International 단체를 찾아가 ActionScript3라는 언어와 Tamarin이라는 엔진을 제시하며 다시 한 번 표준화를 진행하자고 제안합니다. 그러나 ActionScript나 Tamarin은 기존의 브라우저에서 쓰여지고 있는 JScript와 JavaScript와는 너무나도 달랐기 때문에 이를 가지고 표준화을 진행하기에는 조금 무리가 있었습니다. 그래서 표준화를 앞에 두고 3사의 치열한 신경전이 계속 벌어지고 있었죠. 그러는 동안 우리 개발자들은.. 이런 시장에 존재하는 다양한 브라우저에서 동작할 수 있도록 웹 페이지를 만들어야했습니다.

 

그리고 2004년 웹시장에서는 굉장히 획기적인 일이 발생합니다. 바로 Jesse James Garrett라는 사람이 AJAX(Asynchronous JavaScript and XML)라는 기술 명세서가 표기되어있었는데, 이는 비동기적으로 데이터를 서버에서 받아오고 처리할 수록 도와주는 것이 가능하게끔 하였기에 아주 획기적인 도입이었습니다. 

 

그러나 AJAX 도입에도 불구하고 ECMAScript 표준화를 앞두고 Netscape, Microsoft, Mozila의 치열한 신경전은 계속되어졌습니다. 그러는 동안 시장에는 다른 브라우저들이 많이 나오게되었고 당연히 개발자들은 다양한 브라우저에서 동작하는 웹페이지를 만드느라 너무 많은 고생을 하고 있었습니다.

 

이와 같이 웹 시장이 증가하고 수요가 많아짐에 따라 개발자들은 점점 늘어났고, 이런 많은 개발자들 사이에서 서서히 강력한 커뮤니티가 생성되기 시작하는데요, 이런 커뮤니티 사이에서 드디어 jQuery, dojo, mootoos와 같은 라이브러리들이 많이 나오게 됩니다. 이런 라이브러리들이 해결하고자하는 공통된 문제점은 딱 하나였습니다. 개발자들이 더 이상 다른 브라우저간에 신경쓰지 않게하는 것이었습니다. 이와 같은 라이브리를 통해, 해당 라이브러리에서 제공하는 API를 사용하면 서로 다른 브라우저 간에 구애받지 않고 동작이 가능했고 그 중에서도 JQuery가 많은 사랑을 받게됩니다. 

 

그런데 2008년 웹 브라우저 시장에 큰 바람이 불어오게됩니다.

Google이 Chrome 브라우저를 출시한 것인데요,  

Chrome 브라우저는 Just-in-time compliatation 이라는 강혁한 엔진을 포함하였으며, 이 엔진은 Javascript를 실행하는 속도가 굉장히 빨랐습니다. 이런 Chrome의 획기적인 등장에 시장에 존재하던 다른 브라우저들은 자극을 받아 성능 개선에 힘쓰게됩니다. 

 

2008년 7월에는 모든 브라우저들이 모여 표준화를 함께 하게되고, 그리하여 나온 것이 2009년에 ECMAScript5가, 그 뒤를 이어 2015년도 CMAScript6가 나오게됩니다. 현재 우리가 자주 볼 수 있는 class, arrow fuction, const, let 이 CMAScript6에 정의되어있습니다. 그 뒤로도 매 해마다 새로운 버전들이 나오고 있는데, 아주 조금씩 수정되었을 뿐 ECMAScript6에서 모든 것이 정의되었다고 봐도 무방합니다.

 

즉 이제의 JavaScript는 성숙하고 잘 정착된 언어라고 볼 수 있습니다. 그리고 모든 브라우저들이 ECMAScript의 표준 사항을 잘 따라가고 있기 때문에 이제는 더 이상 JQuery나 dojo 등과 같은 라이브러들의 도움 없이도 충분히 자바스크립트와 웹 api 만으로도 모든 브라우저에서 잘 동작 할 수 있는 웹사이트나 웹 어플리케이션을 만들 수 있습니다. 그리고 각각의 브라우저들마다 ECMAScript의 표준을 따라가는 다양한 엔진들이 존재하는데요,  엔진들은 아래와 같습니다. 

브라우저마다의 Javascript Engines

 

시장에서 다양한 사용자들은 다양한 브라우저들을 사용하고 있고 모든 사용자들이 최신 브라우저를 사용하고 있는 것은 아닙니다. 하지만 개발자들은 최신 버전의 ECMAScript를 사용하여 개발한다면,  최신 브라우져 조차도 지원하지 못하는 문법과 여러 기술들이 있을 수 있습니다. 이 때 BABEL과 같은 JavaScript transcompiler를 이용해 ECMAScript 최신 버전을 5나 6로 변환하여 변환된 코드를 생성하여 모든 브라우저에서 작동이 가능하도록 할 수 있습니다. 

 

요즘에는 SPA(Single Page Application)이 뜨고 있습니다. 즉 웹사이트를 만드는 것은 더 이상 충분하지 않습니다. 하나의  페이지 안에서 데이터를 받아와서 필요한 부분만 부분적으로 업데이트하는 것이 유행하고 있는데, 이에 React, Vue, Angular 등이 이에 해당합니다. 이를 사용하면 SPA를 쉽게 구현 할 수 있습니다. 그리고 이러한 Javascript는 브라우저에서, 브라우저를 위한 동적인 요소를 추가하기 위해 만들어진 언어인데요, ECMAScript의 활발한 표준화를 통해서 강력한 자바스크립트 엔진을 통해서 nodeJS가 등장하게됩니다. nodeJS는 V8 자바스크립트 엔진을 이용한 백엔드에서 서비스를 구현할 수 있도록 만들어진 것입니다. 

그리고 브라우저에서 동작할 수 있는 유일한 언어는 Javascript 였는데, 요즘에는 웹 어셈블리가 등장해서 C C# 등의 언어를 이용해서 웹 어플리케이션을 만드는 것이 가능해졌습니다. 우리가 잘 알고 있는 피그마도 웹 어셈블리로 만들어졌습니다. 

 

다음 시간 부터는 Javascript의 문법을 알아보도록 하겠습니다.

 

* 아래의 영상을 시청한 후 정리한 글입니다. 

https://www.youtube.com/watch?v=wcsVjmHrUQg&list=PLv2d7VI9OotTVOL4QmPfvJWPJvkmv6h-2&index=1 

 

728x90
반응형