자바스크립트(javascript)란
자바스크립트는 객체 기반의 스크립트 프로그래밍 언어이다. 이 언어는 웹 브라우저 내에서 주로 사용하며, 다른 응용 프로그램의 내장 객체에도 접근할 수 있는 기능을 가지고 있다. 또한 Node.js와 같은 런타임 환경과 같이 서버 프로그래밍에도 사용되고 있다. (위키백과: https://ko.wikipedia.org/wiki/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8)
자바스크립트의 엔진은
개발자가 작성한 자바스크립트 코드를 해석하고 실행시켜준다. 각각의 자바스크립트 엔진은 특정 버전의 ECMAScript를 구현하기 때문에, ECMAScript가 발전하는 만큼 엔진도 발전한다. (
V8 : 오픈소스로 구글에서 개발했습니다. C++로 작성되었으며, 구글 크롬과 Node.js에서 사용됩니다. 가장 유명합니다.
SpiderMonkey : 최초의 자바스크립트 엔진입니다. 넷스케이프 네비게이터 웹 브라우저를 위해 브랜던 아이크에 의해 개발되었습니다. 지금은 모질라 파이어폭스에 사용됩니다.
Rhino : 모질라 재단에서 운영합니다. 오픈소스이며, 전체가 자바로 개발되었습니다.
JavaScriptCore : 오픈소스, 니트로라는 이름으로도 알려져 있으며 애플이 사파리를 위해 개발했습니다.
Chakra(Jscript9) : 인터넷 익스플로러용입니다.
Chakra(JavaScript) : 마이크로소프트 엣지용입니다.
Nashron : 오픈JDK의 일환으로 오픈소스이며 Oracle Java Languages and Tool Group이 개발하였습니다.
JerryScript : 사물인터넷을 위한 경량 엔진입니다.
자바스크립트 엔진의 구성요소는
- Memory Heap: 메모리의 할당이 일어나는 곳
- Call Stack: 코드 실행에 따라 호출 스택이 쌓이는 곳
자바스크립트에서 호출 스택(call stack) 이란
- 자바스크립트는 기본적으로 싱글 쓰레드 기반 언어이다. 즉, 호출 스택이 하나이며 한 번에 한 작업만 처리할 수 있다.
- 호출 스택은 기본적으로 우리가 프로그램 상에서 어디에 있는지를 기록하는 자료구조이다. 만약 함수를 실행하면, 해당 함수는 호출 스택의 가장 상단에 위치하고, 함수의 실행이 끝날때, 해당 함수를 호출 스택에서 제거한다.
- 호출 스택의 각 단계를 스택 프레임(stack frame)이라고 한다.
(캡틴판교: https://joshua1988.github.io/web-development/translation/javascript/how-js-works-inside-engine/)
'인터넷 상식' 카테고리의 다른 글
통신 프로토콜이란 무엇일까 (0) | 2021.07.16 |
---|---|
HTTP란 무엇일까 (0) | 2021.07.16 |
JIT 컴파일은 무엇일까 (0) | 2021.07.16 |
인터프리터란 무엇일까 (interpreter) (0) | 2021.07.16 |
컴파일러란 무엇일까 (Compiler) (0) | 2021.07.16 |