본문 바로가기

① 기본/웹브라우저의 이해

자바스크립트와 브라우저의 관계

728x90

 동적인 웹사이트를 위한 언어의 탄생

 

넷스케이프 브라우저는 모자이크 브라우저에 비하면 이미지가 들어가 조금 더 사용자들에게 fancy한 느낌을 주었지만, 여전히 갈증을 느낀 Marc Andereeson은 웹사이트를 더욱 동적으로 만들고자 했다. 이에 프로그래밍 언어를 브라우저에 추가하고자, Brendan Eich를 영입해 sheme script를 변형해 새로운 언어를 만들었다. 짧은 시간안에 Mocha(1994년)라는 언어를 개발하고 추후 LiveScript로 이름을 바꾼다. 넷스케이프 브라우저 안에 LiveSctipt Interpreter 엔진을 탑재해 내놓게 되고, 이로서 개발자들이 LiveScript를 배워 코드를 작성하면 넷스케이프 브라우저가 해석해 DOM을 조작하는 등의 동적 브라우저를 만들 수 있게 되었다. 당시 자바 언어의 인기가 높아, LiveScript의 이름을 JavaScript로 변경해 1995년 공식적으로 JavaScript Interpreter 엔진이 탑재된 브라우저를 출시한다. 

 

 

 

 스크립트 표준화 전쟁(feat. 개발자들의 고통 시작)

 

브라우저 시장 진입을 노리고 있던 MS는 넷스케이프의 브라우저를 리버스 엔지니어링(reverse engineering)해서 JScript라는 언어를 만들고, JScript Interpreter 엔진이 탑재된 IE를 출시한다. 이에 열받은 넷스케이프는 1996년, ECMA International 단체를 찾아가 Javascript 언어를 표준화하자고 제안한다. 그렇게 1997년 브라우저를 작동시키기 위한 언어인 ECMAScript 명세가 처음으로 시장에 나온다. 개발자들의 제안으로 지속적으로 ECMAScript를 발전시켜나갔지만, 2000년 MS가 표준화에 참여하지 않겠다고 선언하면서 발전이 조금 더뎌 진다. 2000년 당시 MS는 넷스케이프 시장 점유율을 이미 앞서간 상황이었고, 넷스케이프를 이어 받은 모질라사가 ActionScript와 Tamarin을 들고 ECMA International에 찾아가 표준화를 다시 시도하지만, 기존 ECMAScript와 너무나 다른 언어라 표준화를 거절 당한다. 언어의 표준화를 놓고 브라우저 제작사들 간의 갈등에 개발자들의 고통은 시작된다.  

 

 

 

 

 JavaScript 라이브러리의 등장

 

브라우저 마다 언어가 다르고 해석기가 다르니 시장에 존재하는 모든 브라우저들에 맞게 웹사이트를 제작해야했던 개발자들은 매우 고통스러웠다. 이 시기 웹 시장이 급속도로 커지면서 개발자의 수도 폭증했고, 이 고통을 참지 못한 개발자들이 JQuery, dojo, moo tools 등 여러 라이브러리를 만든다. 이 라이브러리들은 개발자가 여러 브라우저에 신경안쓰고 라이브러리가 제공하는 APIs만 쓰면, 알아서 여러 브라우저들에 알맞게 대응해줬고, 그 중 JQuery가 가장 많은 인기를 얻게 된다.

 

 

 

 

 크롬의 등장과 함께 다시 시작된 스크립트 표준화

 

2008년 구글이 JIT(just-in-time) compliation이 탑재된 빠른 속도의 브라우저 chrome을 내놓자, 브라우저 시장에는 새로운 바람이 분다. 덕지덕지, 여기저기 더러워진(?) 언어를 다시 표준화하자는 움직임이 일고, 이에 2009년 ECMAScript 5, 2015년 ECMAScript 6가 나온다. 이후 지속적으로 업데이트되어 2019년 ECMAScript 10까지 나왔다. 각 브라우저들이 표준안에 따라 자신들만의 Interpreter 엔진을 내놓았으므로, 더이상 JQuery, dojo, moo tools 등 라이브러리는 필요없게 되었고, 점점 시장에서 사라지는 추세를 보이게 되었다. 

 

※ 각 브라우저의 자바스크립트 엔진 참고 : Chrom(V8), Firefox(SpiderMonkey), safari(JScore), MS Edge(Chakra->V8), Opera(Carakan), Adobe Flash(Tamarin)

 

 

 

 

 

 정리

 

JavaScript가 표준화 되었지만, 모든 사용자가 최신 버전 브라우저를 쓰는 것은 아니었기 때문에 개발자가 작성한 최신 ECMAScript를 사용자의 브라우저 엔진에 맞게 해석해주는 BABEL(JS transcompiler)가 등장한다. 최근에는 페이지 안에 필요한 부분만 부분적으로 업데이트하는 SPA가 유행하면서 react, vue, angular 같은 JavaScript 라이브러리들도 등장하였다.

 

 

 

 

 자료 출처

 

[드림코딩 by 엘리] - youtu.be/wcsVjmHrUQg

728x90