[JavaScript] 모던 자바스크립트 Deep Dive로 배우는 JS #2 자바스크립트란?

ChilihC·2022년 3월 29일
0
post-thumbnail

TIL(Today I Learned) 🧑🏻‍💻


2. 자바스크립트란?


내용 정리

1995년, 넷스케이프 커뮤니케이션즈(Netscape communications) 웹페이지의 보조적인 기능을 수행하기 위해 브라우저에서 동작하는 경량 프로그래밍 언어 도입을 결정한다. 그렇게 탄생한 것이 바로 브렌던 아이크(Brendan Eich)가 개발한 자바스크립트(JavaScript)이다.

  • 자바스크립트의 파생 버전인 마이크로소프트의 JScript가 나오면서 브라우저에 따라 웹페이지가 정상적으로 동작하지 않는 크로스 브라우징 이슈가 발생하기 시작했다.

  • 1996년 넷스케이프 커뮤니케이션즈는 컴퓨터 시스템의 표준을 관리하는 비영리 표준화 기구인 ECMA 인터내셔널에 자바스크립트 표준화를 요청한다.

  • 1997년 자바스크립트 초판(ECMAScript 1)이 완성되었고, 상표권 문제로 자바스크립트는 ECMAScript로 명명되었다.

  • 2015년에 공개된 ECMAScript 6(ECMAScript 2015, ES6)는 let/const 키워드, 화살표 함수, 클래스, 모듈 등과 같이 범용 프로그래밍 언어로서 갖춰야 할 기능들을 대거 도입하는 큰 변화가 있었다.

  • Ajax(Asynchronous JavaScript and XML)의 등장은 이전의 패러다임을 획기적으로 전환했다. 즉, 웹페이지에서 변경할 필요가 없는 부분은 다시 랜더링하지 않고, 서버로부터 필요한 데이터만 전송받아 변경해야 하는 부분만 한정적으로 랜더링하는 방식이 가능해진 것이다.

  • 2006년 jQuery의 등장으로 다소 번거롭고 논란이 있던 DOM(Document Object Model)을 더욱 쉽게 제어할 수 있게 되었고 크로스 브라우징 이슈도 어느 정도 해결되었다.

  • V8 자바스크립트 엔진의 등장으로 자바스크립트는 데스크톱 애플리케이션과 유사한 사용자 경험(UX: user experience)을 제공할 수 있는 웹 애플리케이션 프로그래밍 언어로 정착하게 되었다.


2009년, 라이언 달(Ryan Dahl)이 발표한 Node.js는 구글 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임 환경(Runtime Environmnet)이다.

  • Node.js는 브라우저의 자바스크립트 엔진에서만 동작하던 자바스크립트를 브라우저 이외의 환경에서도 동작할 수 있도록 자바스크립트 엔진을 브라우저에서 독립시킨 자바스크립트 실행 환경이다. 서버 사이드 애플리케이션 개발에 주로 사용되며, 이에 필요한 모듈, 파일 시스템, HTTP 등 빌트인 API를 제공한다.

  • Node.js비동기 I/O를 지원하며 단일 스레드(single thread) 이벤트 루프 기반으로 동작함으로써 요청(request)처리 성능이 좋다. 따라서 데이터를 실시간으로 처리하기 위해 I/O가 빈번하게 발생하는 SPA(single Page Application)에 적합하다. 하지만 CPU 사용률이 높은 애플리케이션에는 권장하지 않는다.


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

  • 클라이언트 사이드 Web API는 ECMAScript와는 별도로 월드 와이드 웹 콘소시엄(World Wide Web Consortium: W3C)에서 별도의 사양으로 관리하고 있다.

인터프리터 언어(Interpreter Language) vs 컴파일러 언어(Compiler Language)

  • 자바스크립트는 웹 브라우저에서 동작하는 유일한 프로그래밍 언어이다. 개발자가 별도의 컴파일 작업을 수행하지 않는 인터프리터 언어(Interpreter Language)이다. 대부분의 모던 자바스크립트 엔진은 인터프리터와 컴파일러의 장점을 결합해 비교적 처리 속도가 느린 인터프리터의 단점을 해결했다.

  • 자바스크립트는 명령형(Imperative), 함수형(functional), 프로토타입 기반(prototype-based), 객체지향(Object-Oriented) 프로그래밍을 지원하는 멀티 패러다임 프로그래밍 언어다.


새로운 용어 정리


  • 크로스 브라우징 이슈(Cross Browsing Issue): 국제 웹 표준화 기구(W3C)의 가이드 라인을 따르지 않는 브라우저 각각의 동작 방식에 따라 나타나는 호환성 문제.

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

  • Ajax(Asynchronous JavaScript and XML): 자바스크립트를 이용해 서버와 브라우저가 비동기(asynchronous)방식으로 데이터를 교환할 수 있는 통신 기능.

  • 런타임 환경(Runtime Environment): 컴퓨터가 실행되는 동안 프로세스나 프로그램을 위한 소프트웨어 서비스를 제공하는 가상 머신의 상태이다. 운영 체제 자체에 속하는 경우도 있고 운영 체제에서 작동하는 소프트웨어를 뜻할 수도 있다.

  • 단일 스레드 처리(single-thread processing): 하나의 트랜잭션(transaction)에 대한 처리가 모두 완료되지 않는 동안에는 다음 트랜잭션을 받지 않는 방식.

  • 스레드(thread): 온라인 실시간 시스템에서는 하나의 트랜잭션이 받아들여지면 이것에 대해서 일련의 처리가 실시된다. 이런 일련의 처리를 스레드(thread)라고 한다.

  • CBD(Component Based Development): 컴포넌트의 재사용을 통해 개발 생산성 향상, 개발기간 단축 및 신뢰성 높은 소프트웨어를 생산할 목적으로 컴포넌트의 생성, 조립하여 소프트웨어를 개발하는 방법론


참고 문헌


* 모던 자바스크립트 Deep Dive ( 자바스크립트의 기본 개념과 동작 원리 ) / 이웅모 지음

profile
developer junior

0개의 댓글