1995년, 웹 브라우저 시장에서 약 90%의 점유율을 갖고 있던 Netscape Communications는 웹페이지의 보조적인 기능을 수행하기 위해 브라우저에서 동작하는 경량 프로그래밍 언어를 도입합니다.
자바스크립트는 ‘웹페이지에 생동감을 불어넣기 위해’ 만들어진 프로그래밍 언어입니다.
1996년 말에 Mocha - LiveScript에서 Javascript
로 최종 결정되었습니다.
원래 LiveScript로 불리기로 되어 있었습니다만 Sun Microsystem의 Java 언어의 성공에 편승해보려고 -두 언어 사이의 공통점이 매우 적음에도 불구하고- 불행이 예견된 마케팅 결정에 따라 이름이 바뀌게 됩니다. 이 결정은 역사상 유래가 없는 혼란의 근원이 되어버립니다.
이야기를 하기에 앞서 익스플로어와 크롬 브라우저에서 다르게 동작하는 함수 예제를 하나 가져왔습니다.
[1,4,3,2,5].sort(function(num1, num2) {
return num1 > num2;
});
// chrome: [1,2,3,4,5]
// IE: [1,4,3,2,5] ????
1996년 8월, 마이크로소프트는 자바스크립트의 파생 버전인 JScript
를 Internet Explorer 3.0에 탑재하였는데, JScript와 자바스크립트가 적당히 호환된다는 문제가 생겻습니다.
자사 브라우저의 시장 점유율을 점유하기 위해 자사 브라우저에서만 동작하는 기능을 경쟁적으로 추가하면서 브라우저에 따라 웹 페이지가 정상 동작하지 않는 크로스 브라우징 이슈가 발생하기 시작했고 모든 브라우저에서 동작하는 웹 페이지를 개발하는 것은 무척 어려워졌습니다.
그 후 넷스케이프는 컴퓨터 시스템의 표준을 관리하는 비영리 표준화 기구인 ECMA 인터내셔널에 자바스크립트의 표준화를 요청하였고 그 후 ECMAScript
라는 자바스크립트 표준이 공개되었습니다.
2015년, 공개된 ES2015(ES6)부터는 프로그래밍 언어로서 갖춰야될 기능이 대거 도입되었고 매년 꾸준히 업데이트하며 공개되고 있습니다.
자바스크립트를 이용해 서버와 브라우저가 비동기 방식으로 데이터 교환할 수 있는 기능이 등장했습니다. 이제 웹 페이지 전체를 렌더링하지 않고 변경이 필요한 부분만 데이터 요청을 해 부분만 렌더링을 다시 하는 방식이 가능해졌습니다.
Google Maps
- 웹 브라우저에서 자바스크립트와 ajax 기반으로 동작하는 웹 어플리케이션 등장
Jquery
- 자바스크립트 라이브러리, 보다 편한 DOM 조작과 크로스 브라우징 이슈를 해결
document.querySelector('div').onclick = function(){
console.log("클릭")
}
// Jquery
$('div').click(() => console.log('클릭'))
2008년, 구글에서 등장한 V8 자바스크립트 엔진이 등장하면서 성능이 좋아져 기존 웹 서버에서 수행되던 역할들이 클라이언트로 이동했습니다.
Node.js
- 브라우저 이외의 자바스크립트 실행기(런타임) 프로그램 등장
- 서버사이드 개발
복잡해진 웹 어플리케이션을 좀 더 패턴화하고 개발하기 위해 프레임워크나 라이브러리들이 등장했습니다.
- React.js, Vue.js, Angular.js
데스크톱 어플리케이션(Electron), 머신러닝(TensorFlow.js) 등등 영역이 확장되었습니다.
자바스크립트는 개발자가 명시적으로 별도의 컴파일 작업을 수행하지 않는 인터프리터 언어(Interpreter language)이다.
컴파일러 언어 | 인터프리터 언어 |
---|---|
코드가 실행되기 전 소스코드 전체를 한번에 머신코드로 변환 후 실행 | 코드가 실행되는 단계에서 한줄 한줄 바이트코드로 변환해 실행 |
실행파일 생성 | 실행파일 생성되지 않음 |
컴파일과 실행 단계 분리되어 있 실행 속도 빠름 | 인터프리트 단계와 실행 단계가 분리되어 있지 않다. 코드가 실행될때마다 반복 수행으로 비교적 느림 |
현재 브라우저에서 지원하는 자바스크립트 엔진들은 이런 인터프리터와 컴파일러의 장점을 결합해
단점을 극복했습니다.
dd