자바스크립트 Deep Dive - 02장 자바스크립트란?

ddullgi·2022년 9월 18일
0
post-thumbnail

chapter2. 자바스크립트란?


2.1 자바스크립트의 탄생

  • 브렌던 아이크(Brendan Eich)가 1995년 개발
  • 모카(Mocha) => 라이브스크립트(LiveScript) => 자바스크립트(JavaScript)

2.2 자바스크립트의 표준화

1996년 8월 마이크로소프트가 자바스크립트의 파생 버전인 Jscript를 이너넷 익스플로러에 탑재하면서 서로 다른 브라우저에서는 일부 기능이 실행되지 않는 크로스 브라우징 이슈가 발생했다. 그 결과 브라우저별로 개발을 따로 해줘야하는 어려움이 생겼다.


이러한 문제들 때문에 자바스크립트를 ECMASCript라는 이름으로 표준화 시켰다.


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

  • 초창기
    • 대부분의 로직은 웹서버에서 실행
    • 브라우저는 서버로부터 전달받은 HTML과 CSS를 단순히 렌더링하는 수준이였다.
  • Ajax(Asynchronous JavaScript and XML)
    • 서버와 브라우저가 비동기(asynchronous)방식으로 데이터를 교환할 수 있는 통신기능이 등장
    • 기존 방식은 수정된 부분을 받기 위해서는 전부 다시 랜더링 해야했지만 비동기방식을 활용하여 서버로 붜 필요한 부분만 랜더링 할 수 있게 되었다.
  • jQuery
    • 자바스크립트를 조금 더 편하게 쓸 수 있는 라이브러리 등장
  • V8 자바스크립트 엔진
    • 자바스크립트의 엔진 성능을 대폭 개선
  • Node.js
    • 자바스크립트 실행 환경
    • 기존에는 브라우저 환경에서만 개발 가능했던 자바스크립트를 브라우저에서 독립시킴
    • 비동기 I/O 지원
    • 단일 스레드 이벤트 루프기반으로 동작 (요청 처리 성능이 좋다)
    • SPA에 적합
  • SPA 프레임 워크
    • CBD(Component based development) 방법론을 기반으로 한다.

2.4 자바스크립트와 ECMAScript

image-20220916021939303

자바스크립트는 일반적으로 프로그래밍 언어로서 기본 뼈대를 이루는 ECMAScript와 브라우저가 별도 지원하는 클라이언트 사이드 WEB API이다. 즉, JS는 ECMAScript를 아우르는 개념이다.


2.5 자바스크립트의 특징

  • 웹브라우저에서 동작하는 유일한 프로그래밍 언어
  • 별도의 컴파일 작업을 수행하지 않는 인터프리터 언어



렌더링(rendering)

렌더링이란 HTML, CSS, 자바스크립트로 작성된 문서를 해석해서 브라우저에 시각적으로 출력하는 것을 말한다. 때로는 서버에서 데이터를 HTML로 변환해서 브라우저에게 전달하는 과정(SSR: Server Side Rendering)을 가리키기도 한다.


인터프리터 언어 vs 컴파일러 언어

컴파일러 언어인터프리터 언어
코드가 실행되기 전 단계인 컴파일 타임에 소스코드 전체를 한 번에 머신 코드로 변환 후 실행한다.코드가 실행되는 단계인 런타임에 문 단위로 한 줄씩 중간 코드인 바이트 코드로 변환 후 실행한다.
실행 파일을 생성한다.실행 파일을 생성하지 않는다.
컴파일 단계와 실행 단계가 분리되어 있다. 명시적인 컴파일 단계를 거치고, 명시적으로 실행 파일을 실행한다.인터프리터 단계와 실행 단계가 분리되어 있지 않다. 인터프리터는 한 줄씩 바이트 코드로 변환하고 즉시 실행한다.
실행에 앞서 컴파일은 단 한 번 수행된다.코드가 실행될 때마다 인터프리트 과정이 반복 수행된다.
컴파일과 실행 단계가 분리되어 있으므로 코드 실행 속도가 빠르다.인터프리트 단계와 실행 단계가 분리되어 있지 않고 반복 수행되므로 코드 실행 속도가 비교적 느리다.

하지만 대부분 모던 브라우저에서 사용되는 인터프리터는 전통적인 컴파일러 언어처럼 명시적인 컴파일 단계는 거치지 안히만 복잡한 과정을 거치며 일부 소스코드를 컴파일하고 실행한다.

이를 통해 인터프리터 언어의 장점인 동적 기능 자원을 살리면서 실행 속도가 느리다는 단점을 극복한다. 따라서 현재는 컴파일러와 인터프리터의 기술적 구분이 점차 모호해져 가고 있다. 하지만 자바스크립트는 런타임에 컴파이되며 실행 파일이 생성되지 않고 인터프리터의 도움 없이 실행할 수 없기 때문에 컴파일러 언어라고 할 수는 없다.

profile
프론트엔드개발자를 꿈꾸는 예비 개발자

0개의 댓글