자바스크립트란?

개발 블로그·2022년 3월 26일
0

DeepDive

목록 보기
1/2
post-thumbnail

자바스크립트의 탄생

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)부터는 프로그래밍 언어로서 갖춰야될 기능이 대거 도입되었고 매년 꾸준히 업데이트하며 공개되고 있습니다.


자바스크립트의 성장과 역사

1. Ajax

자바스크립트를 이용해 서버와 브라우저가 비동기 방식으로 데이터 교환할 수 있는 기능이 등장했습니다. 이제 웹 페이지 전체를 렌더링하지 않고 변경이 필요한 부분만 데이터 요청을 해 부분만 렌더링을 다시 하는 방식이 가능해졌습니다.


Google Maps
- 웹 브라우저에서 자바스크립트와 ajax 기반으로 동작하는 웹 어플리케이션 등장

Jquery
- 자바스크립트 라이브러리, 보다 편한 DOM 조작과 크로스 브라우징 이슈를 해결

document.querySelector('div').onclick = function(){
  console.log("클릭")
}

// Jquery
$('div').click(() => console.log('클릭'))

2. V8 자바스크립트 엔진

2008년, 구글에서 등장한 V8 자바스크립트 엔진이 등장하면서 성능이 좋아져 기존 웹 서버에서 수행되던 역할들이 클라이언트로 이동했습니다.

Node.js
- 브라우저 이외의 자바스크립트 실행기(런타임) 프로그램 등장
- 서버사이드 개발

복잡해진 웹 어플리케이션을 좀 더 패턴화하고 개발하기 위해 프레임워크나 라이브러리들이 등장했습니다.
- React.js, Vue.js, Angular.js

데스크톱 어플리케이션(Electron), 머신러닝(TensorFlow.js) 등등 영역이 확장되었습니다.

자바스크립트의 특징

자바스크립트는 개발자가 명시적으로 별도의 컴파일 작업을 수행하지 않는 인터프리터 언어(Interpreter language)이다.

컴파일러 언어인터프리터 언어
코드가 실행되기 전
소스코드 전체를 한번에 머신코드로 변환 후 실행
코드가 실행되는 단계에서
한줄 한줄 바이트코드로 변환해 실행
실행파일 생성실행파일 생성되지 않음
컴파일과 실행 단계 분리되어 있
실행 속도 빠름
인터프리트 단계와 실행 단계가 분리되어 있지 않다.
코드가 실행될때마다 반복 수행으로 비교적 느림

현재 브라우저에서 지원하는 자바스크립트 엔진들은 이런 인터프리터와 컴파일러의 장점을 결합해
단점을 극복했습니다.

profile
프론트엔드 개발자의 TIL

1개의 댓글

comment-user-thumbnail
2023년 1월 23일

dd

답글 달기