fffo

자바스크립트 개요 본문

Programming/Javascript

자바스크립트 개요

gggs 2021. 9. 17. 22:40

결국 프로그래밍은 요구사항의 집합을 분석해서 적절한 자료구조와 함수의 집합으로 변환한 후, 그 흐름을 제어하는 것이다.

js의 탄생

  • 넷스케이프 커뮤니케이션즈에서 웹페이지의 보조적인 기능을 수행하기 위해 브라우저에서 동작하는 경량 프로그래밍 언어를 도입 → Brendan Eich의 자바스크립트
  • 마이크로소프트에서 자바스크립트의 파생 버전인 JScript를 IE3.0에 탑재. 크로스 브라우징 이슈 발생. 표준화 필요성 대두
  • 컴퓨터 시스템의 표준을 관리하는 비영리 표준화 기구 ECMA 인터네셔널의 자바스크립트 표준화 → ECMAScript

js 성장 역사

  • 초창기 js는 웹페이지의 보조적 기능 수행을 위한 한정적 용도로 사용. 대부분의 로직은 웹서버에서 실행. 브라우저는 서버로부터 받은 html, css를 단순히 렌더링하는 수준

Ajax

  • 1999년, js를 이용해 서버와 브라우저가 비동기방식으로 데이터교환 가능한 통신기능인 Ajax가 XMLHttpRequest라는 이름으로 등장
  • 2005년 웹브라우저에서 js와 Ajax를 기반으로 동작하는 구글 맵스가 데스크톱 애플리케이션과 비슷한 성능과 부드러운 화면 전환 효과를 보여줌 →웹 애플리케이션 프로그래밍 언어로서 js의 가능성을 확인하는 계기를 마련

jQuery

  • 2006년 jQuery 등장. 이전까지 제어가 번거로웠던 DOM을 쉽게 제어할 수 있게 하였고 크로스 브라우징 이슈도 어느 정도 해결됨.

V8 자바스크립트 엔진

  • 구글 맵스를 시작으로 js로 웹앱을 구축하려는 시도가 늘면서 더욱 빠르게 동작하는 js엔진의 필요성 대두
  • 2008년 구글의 V8 js엔진 등장. 빠른 성능으로 js가 데스크톱 앱과 유사한 UX제공할 수 있는 웹앱언어로 정착
  • V8으로 촉발된 js의 발전으로 과거 웹서버에서 수행되던 로직들이 대거 클라이언트(브라우저)로 이동. 이는 웹앱에서 프론트엔드단이 주목받는 계기가 됨

Node.js

  • 2009년, Ryan Dahl이 V8로 빌드된 자바스크립트 런타임 환경 Node.js를 발표
  • Node.js는 브라우저의 js엔진에서만 동작하던 js를 브라우저 이외의 환경에도 동작하게끔 js엔진을 브라우저로부터 독립시킨 js 실행 환경임
  • 주로 서버 사이드 애플리케이션 개발에 사용. 이에 필요한 모듈, 파일 시스템, HTTP 등 built-in API를 제공
  • Node.js는 비동기 I/O를 지원, single thread event loop 기반으로 동작하여 request 처리 성능이 좋음
    • 데이터를 실시간으로 처리하기 위해 I/O가 빈번하게 발생하는 SPA(Single Page Application)에 적합하나 CPU 사용률이 높은 앱에서는 권장하지 않음

SPA 프레임 워크

  • 모던 웹 앱은 데스크톱 앱과 비슷한 성능과 UI를 제공하는 것이 필수가 되어 개발 규모와 복잡도 상승
  • 이에 따라 많은 패턴과 라이브러리 출현했지만 변경에 유연하면서 확장 쉬운 앱 아키텍처의 구축을 어렵게 함 → 프레임워크 등장

자바스크립트와 ECMAScript

  • ECMAScript는 자바스크립트의 표준 사항인 ECMA-262를 말하며 핵심 문법을 규정, 각 브라우저 제조사는 ECMAScript 사양을 준수하여 브라우저에 내장되는 js엔진을 구현함
  • 자바스크립트는 일반적으로 ECMAScript와 브라우저가 별도 지원하는 클라이언트사이드 Web API (DOM, BOM 등)을 아우르는 개념임
  • 클라이언트 사이드 Web API는 ECMAScript와 별도로 W3C에서 별도의 사양으로 관리 중

자바스크립트 특

  • 웹브라우저에서 동작하는 유일한 프로그래밍 언어
  • 개발자가 별도의 컴파일 작업을 수행하지 않는 인터프리터 언어
  • 대부분의 모던 js 엔진은 인터프리터와 컴파일러의 장점을 결합해 인터프리터의 처리 속도 단점을 보완함
  • 명령형, 함수형, 프로토타입 기반 객체지향 프로그래밍을 지원하는 멀티 패러다임 프로그래밍 언어

'Programming > Javascript' 카테고리의 다른 글

제어문  (0) 2021.09.23
연산자  (0) 2021.09.22
데이터 타입  (0) 2021.09.21
표현식과 문  (0) 2021.09.20
js 실행환경, 변수  (0) 2021.09.19
Comments