Javascript의 개념과 배경_Javascript
Javascript의 개념
Javascript란?
자바스크립트(영어: JavaScript)는 객체 기반의 스크립트 프로그래밍 언어이다. 이 언어는 웹 브라우저 내에서 주로 사용하며, 다른 응용 프로그램의 내장 객체에도 접근할 수 있는 기능을 가지고 있다. 또한 Node.js와 같은 런타임 환경과 같이 서버 프로그래밍에도 사용되고 있다.
* 출처 : "자바스크립트", 위키백과, 2021.12.03 접속, https://ko.wikipedia.org/wiki/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8
자바스크립트는 웹 브라우저를 위해 개발된 언어!!
다른 언어는 프로그램을 설치를 해야 그 언어를 쓸 수 있지만 (환경을 따로 구축을 해야 함!!) 자바스크립트는 브라우저에 사용할 수 있다. 브라워저에는 console창이 있는데 거기에다가 언어를 치면 구동이 된다.
Javascript 배경
1993년 Mosaic Web Browser가 시장에 나왔다. Mosaic Web Browser 개발팀을 이끌던 Marc Andreessen은 대학교를 졸업하는 동시에 Netscape 회사를 설립했다. 이전에 만들었던 Mosaic Web Browser 경험을 토대로 UI요소가 더해진 Netscape Navigator을 시장에 내놓는다. 이 당시에는 HTML과 CSS로 간단히 웹페이지를 만들 수 있었는데 텍스트에 링크를 걸어서 페이지와 페이지 사이 이동만 가능한 정적인 웹페이지만 가능했다. Netscape Navigator을 시장에 내놓자 80%의 점유율을 자랑하면서 급격히 성장해나간다. 그리고 Marc Andreessen는 계속 어떻게 하면 동적인 웹사이트를 만들 수 있을까 고심하게 된다. 그러다가 Scripting언어를 추가를 하도록 결심을 한다. 그 때 뜨던 언어는 Java 언어인데 웹 개발자들이 쓰기에는 Java 언어는 무겁고 어려운 단어였기에 Brendan Eich를 스카웃을 해서 기존에 존재했던 Scheme Script 언어를 변형해서 문법은 자바스럽고 10일 만에 만들자고 했다. 그래서 Brendan Eich은 프로토타입을 기반으로 한 유연한 언어를 개발한다. 1994년 9월 Mocha라는 새로운 언어가 탄생됐다. 추후 LiveScript라고 이름이 바뀌게 되고 Netscape Navigator 안에는 LiveScript를 이해하고 실행할 수 있는 LiveScript 엔진 ( Interpreter )가 호환이 돼 브라우저가 출시되었다. 이제 웹개발자들이 LiveScript를 이용해서 웹페이지를 만들게 되면 Netscape Navigator 브라우저가 그 언어를 이해하면서 그 언어가 실행하고자 알맞게 DOM 요소를 조작하는 것이 가능해졌다. 그 당시에 Java 언어가 많이 쓰였으며 그 언어의 유명세를 이어가려고 LiveScript가 이름을 Javascript라고 이름을 바꾸었다. 그래서 1995년도에 공식적으로 Netscape Navigator 브라우저 위에 Javascript와 Javascript를 이해할 수 있는 엔진이 포함이 되어 출시가 된다. 그 후 Microsoft가 1995년도에 Netscape 회사에 만든 Netscape Navigator 브라우저를 Reverse engineering하게 된다. Reverse engineering이란 만들어진 프로그램에 바이너리 코드를 분석해서 소스코드를 복원해 내는 과정을 말한다. Netscape 회사에 만든 Javascript와 그 엔진의 소스코드를 그대로 복원하고 베껴서 기능들을 조금 변경해서 자신들의 언어를 만들었다. 그 언어가 바로 JScript다. 1995년 Microsoft에서 인터넷 익스플로어를 시장에 내놓았다. 그 두개의 브라우저에서 똑같이 만들어야 하는 개발자들 사이에서 고통스러웠다. 그래서 1996년 11월 Netscape 회사에서 ECMA International 단체에 찾아가 Javascript로 표준화를 만들어보자고 제안을 한다. 그래서 1997년 7월 ECMAScript 1이 시장에 내놓게 되었다. ECMAScript는 브라우저에서 동작하는 언어를 만들 때 ( 그 언어를 이해할 수 있게 만드는 엔진이 이해하기 위해서는) 변수는 이렇게 만들고 함수는 이런 식으로 정의를 해야 된다는 문법적인 사항들을 정리한 문서다. 그 다음에 새로운 버전들이 나왔는데 ECMAScript3에서는 error handing이 나왔고 ECMAScript4에는 optional type, annotation, class, Enterprise scale이 나왔다. 그 와중에 인터넷 익스플로어에 점유율이 상승되는데 사람들이 95%나 사용한다. 익스플로어가 점유율에 차치하면서 ECMAScript 표준안에 참가하지 않게 되면서 2000년도 부터는 표준안 진행이 더뎌지게 된다. 2004년도에 Mozilla에서 Firefox 브라우저가 출시된다. Mozilla가 ECMA International 단체에 찾아가 ActionScript3 언어가 있고 이 언어를 이해하는 Tamarin이라는 엔진이 있다며 이걸로 표준안을 검토해보자고 제안을 한다. 그러나 기존에 쓰이고 있던 Javascript와 JScript 언어와는 너무 다른 언어였기에 이걸로 표준안을 하기에는 무리가 있었다. 그래서 표준화를 앞에 두고 3사(Mirosoft - 익스플로어, Mozilla - Firefox , Netscape - Netscape Navigator )간 신경전을 펼치게 된다. 2004년 Jesse James Garrett가 AJAX라는 기술 명세서가 표기되어 있었다. 바로 Asynchronous JavaScript and XML (비동기적으로 데이터를 서버에서 받아오고 처리할 수 있게 도와준다) 이런 AJAX 도입에도 불구하고 ECMAScript 표준안에 앞두고 3사간 신경전은 계속되었다. 그러는 도중 시장에서는 다양한 브라우저들이 쏟아져 나왔다. 웹 시장에 수요가 많음에 따라 개발자들이 많아지는데 개발자들 사이에서 커뮤니티가 생겨났다. 커뮤니티 사이에 JQuery, dojo, mootools 와 같은 라이브러리들이 많이 나왔다. 라이브러리들 사이에서 공통적으로 해결하고 싶은 것이 있었는데 그것은 브라우저간의 구현사항을 신경쓰고 싶지 않는 것이다. 그 중에 JQuery가 많이 사랑을 받았다.
그리고 2008년 Google에서 Chrome을 개발했다. 크롬은 JIT ( Just-in-time cmpilation ) 이라는 엔진을 포함하고 있었는데 JIT 엔진은 Javascript를 실행하는 속도가 엄청나게 빨랐다. 그래서 다른 브라우저들이 자극을 받게 되어 2008년 7월에 4사간 표준안을 만들어보자고 얘기를 나누었다. 그래서 2009년 ECMAScript5가 나오고 2015년 ECMAScript6이 나왔다. 우리가 지금 쓰고 있는 let, const, arrow function, default parameter이 ECMAScript6에 정의가 돼있다. 그리고 매 해마다 새로운 버전들이 나오고 있는데 ECMAScript5, ECMAScript6에서 조금씩 변경되거나 수정되서 나오는 것들이다.
그리고 ECMAScript 표준안을 잘 따라가고 있어서 JQuery, dojo, mootools 라이브러리 도움없이 충분히 Javascript와 APIs에서 제공하는 api만으로도 모든 브라우저에서 잘 동작할 수 있는 웹 사이트나 웹 어플리케이션을 만들 수 있게 되었다. 그리고 브라우저들마다 ECMAScript의 표준안을 따라가는 Javascript Engines들이 존재한다. 크롬에선 V8, 파이어폭스에는 spiderMonkey, 사파리에서는 JSCore, MS Edge에서는 Chakra, 오페라에서는 Carakan, 어도비 플래쉬에서는 Tamarin 등이 들어있다.
* 출처 : 드림코딩 by 엘리