02 자바스크립트란?

연우·2024년 11월 1일
0

2.1 자바스크립트의 탄생

  • 1995년 웹페이지의 보조적인 기능을 수행하기 브라우저에서 동작하는 경량 프로그래밍 언어 도입 결정
  • 1996년 3월 모카로 명명되었고 그해 9월 라이브스크립트로 변경되었다가 12월에 자바스크립트라는 이름으로 최종 명명

2.2 자바스크립트의 표준화

  • 1996년 8월 마이크로소프트는 자바스크립트의 파생버전인 'JScript'를 인터넷 익스플로러에 탑재

  • 두 회사는 자사브라우저의 시장 점유율을 높이기 위해 자사 브라우저에서 동작하는 기능을 추가하였고 이로인해 크로스 브라우징 이슈가 발생

  • 1996년 11월 표준화된 자바스크립트의 필요성이 대두되어 EMCA 인터내셔널에 자바스크립트의 표준화를 요청

  • 1997년 7월 ECMA-262라 불리는 표준회된 자바스크립트 초판 사양이 완성
    상표권 문제로 ECMAScript로 명명

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

  • 초창기 자바스크립트는 HTML/CSS를 단순히 렌더링 하는 수준의 한정적인 용도로 사용

2.3.1 Ajax

  • 1999년 자바스크립트를 이용해 서버와 브라우저가 비동기 방식으로 데이터를 교환할 수 있는 통신기능인 Ajax가 XMLHttpRequest라는 이름으로 등장
  • 이전의 웹페이지는 완전한 HTML 코드를 전송받아 웹페이지 전체를 렌더링하는 방식으로 동작
    - 따라서 화면이 전환되면 새로운 HTML을 전송받아 웹페이지 전체를 다시 렌더링
    - 처음부터 다시 렌더링하기 때문에 화면이 순간적으로 깜빡이는 현상이 발생
  • Ajax의 등장으로 변경할 필요가 없는 부분은 다시 렌더링하지 않고 필요한 데이터만 전송받아 부분만 렌더링하는 방식이 가능

2.3.2 jQuery

  • 2006년 jQuery의 등장으로 DOM을 더욱 쉽게 제어할 수 있게 되었고 크로스 브라우징 이슈도 어느정도 해결

2.3.3 V8 자바스크립트 엔진

  • 2008년 등장한 구글의 V8 자바스크립트 엔진의 등장으로 데스크톱 에플리케이션과 유사항 사용자 경험을 제공할 수 있는 웹 애플리케이션 프로그래밍 언어로 정착
  • 이는 웹 애플리케이션 개발에서 프런트엔드 영역이 주목받는 계기로 적용

2.3.4 Node.js

  • V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임 환경
  • 브라우저 이외의 환경에서도 동자갈 수 있도록 자바스크립트 엔진을 독립시킨 실행환경
  • 주로 서버 사이드 애플리케이션 개발에 사용
  • 비동기 I/O를 지원하며 단일 스레드 이벤트 루프 기반으로 동작
  • SPA에 적합하나 CPU 사용률이 높은 애플리케이션에는 권장하지 않음

2.3.5 SPA 프레임워크

  • 상승한 개발 규모와 복잡도로 개발 과정의 수행이 어려워졌고 이러한 필요에 따라 많은 패턴과 라이브러리 출현
  • CBD(Component based develoment) 방법론을 기반으로 하는 SPA(Single Page Application)가 대중화되면서 Angular, React, Vue.js 등 다양한 프레임워크 또한 많은 사용층 확보

2.4 자바스크립트와 ECMAScript

  • ECMAScript는 자바스크립트의 표준 사양인 ECMA-262
  • 자바스크립트는 기본 뼈대를 이루는 ECMAScript와 브라우저가 별도 지원하는 클라이언트 사이트 Web Api, 즉 DOM, BOM, Canvas, XMLHttpRequest, fetch, requestAnimatuinFrame, SVG, Web Component, Web Worker 등을 아우르는 개념

2.5 자바스크립트의 특징

  • 웹 브라우저에서 동작하는 유일한 프로그래밍 언어
  • 기본 문법은 C, 자바와 유사하고 셀프에서는 프로토타입 기반 상속, 스킴에서는 일급 함수의 개념을 차용
  • 개발자가 별도의 컴파일 작업을 수행하지 않는 인터프리터 언어
  • 모던 자바스크립트 엔진은 인터프리터와 컴파일러의 장점을 결합해 비교적 처리속도가 느린 인터프리터의 단점을 해결
  • 자바스크립트는 명령형, 함수형, 프로토타입 기반 객체지향 프로그래밍을 지원하는 멀티 패러다임 프로그래밍 언어
컴파일러 언어
 - 코드가 실행되기 전 단계인 컴파일 타임에 소스코드 전체를 한번에 머신 코드로 변환한 후 실행
 - 실행 파일을 생성한다
 - 컴파일 단계와 실행 단계가 분리되어 있다. 명시적인 컴파일 단계를 거치고, 명시적으로 실행파일을 실행
 - 실행에 앞서 컴파일은 단 한번 수행된다
 - 컴파일과 실행 단계가 분리되어 있으므로 코드실행속도가 빠르다
 
 인터프리터 언어
 - 코드가 실행되는 단계인 런타임에 문 단위로 한 줄씩 중간코드인 바이트코드로 변환한 후 실행한다.,
 - 실행 파일을 생성하지 않는다.
 - 인터프리트 단계와 실행 단계가 분리되어 있지않다. 인터프리터는 한 줄씩 바이트코드로 변환하고 즉시 실행한다.
 - 코드가 실행될 때 마다 인터프리트 과정이 반복 수행된다.
 - 인터프리트 단계와 실행 단계가 분리되어 있지 않고 반복 수행되므로 코드 실행속도가 비교적 느리다

0개의 댓글