JavaScript

JavaScript-logo.png

JavaScript는 오늘날 월드 와이드 웹 환경에서 광범위하게 쓰이는 프로그래밍 언어이다.

Java하고는 문법이 조금 비슷해 보인다는 점을 빼면 전혀 다른 언어이다. 인도인도네시아 car와 carpet처럼 관련이 없다. #역사 문서로.

역사[편집 | 원본 편집]

웹 브라우저넷스케이프 네비게이터 2.0의 스크립트 언어로 쓰기 위해 1995년부터 개발되었다. 당시 넷스케이프 사에서 일했고, 훗날 모질라 재단CTO로 재직하는 Brendan Eich가 10일 만에(......) 만들었다고 한다.

JavaScript라는 이름이 된 것은 순전히 마케팅적인 이유로, 처음에는 Mocha, 그 다음에는 LiveScript라는 이름을 쓰다가 지금은 회사 째로 오라클에 먹힌 썬 마이크로시스템즈와 상표권 라이센스를 맺게 되면서[1] JavaScript라는 이름으로 발표하고 덤으로 문법까지 Java와 비슷하게 고쳐져 버렸다.

넷스케이프 네비게이터와 함께 JavaScript는 큰 성공을 거두었고, 당시 넷스케이프와 경쟁하던 인터넷 익스플로러도 JScript라는 이름으로 호환 엔진을 만들게 되었다. 이렇게 한동안 비슷한 듯 다른 두 개의 언어가 공존하는 상태가 지속되다가, 이 애매한 상태를 해소하기 위해 공동으로 Ecma 인터내셔널이라는 유럽의 표준화 단체에서 이 언어에 대한 표준화를 진행하게 되었다. 이때, 어쨌거나 JavaScript라는 이름을 쓰는 건 상표권 이슈가 있었으므로, 표준화 단체의 앞글자를 딴 ECMAScript라는 이름 공식적인 표준의 이름으로 쓰게 되었다. 따라서 형식적으로는 JavaScript는 ECMAScript 표준을 구현한 한 구현체의 이름이 된다. ECMAScript 표준을 따르는 다른 프로그래밍 언어로는 Adobe Flash에서 쓰이는 ActionScript가 있다.

현재 JavaScript라는 이름은 Oracle의 등록상표이다. Sun의 상표권을 그대로 인수했기 때문이다. 현재 JavaScript라는 이름을 구글을 비롯한 여러 회사에서 그냥 사용하고 있기는 한데, 이것은 일종의 공정 이용으로, 오라클의 그 JavaScript를 구현한 무언가를 지칭하기 위해서는 오라클의 허락 없이도 JavaScript라는 단어를 사용할 수 있다. 위키백과:en:Nominative use 문서로.

특징[편집 | 원본 편집]

언어적으로, JavaScript는 동적 타입을 쓰며 프로토타입 기반 객체 지향 프로그래밍을 지원하는 절차형 언어이다.

절차형 언어임에도 불구하고 함수형 프로그래밍 언어들처럼 익명 함수와 클로져를 쓸 수 있는데, 이는 JavaScript가 처음 설계될 적에 Scheme이라는 LISP 사투리로부터 영향을 받았기 때문이다.[2] JavaScript에 영향을 준 또 다른 언어로는 Self가 있는데, 이것은 Smalltalk를 기반으로 클래스 대신 프로토타입 기반의 객체지향 시스템을 적용한 언어이다. 이는 JavaScript의 .prototype 프로퍼티를 사용하는 특이한 객체 모델의 바탕이 되었다.

원래 인터프리터를 쓸 것을 염두에 두고 디자인되었고 따라서 실행 성능도 보잘것없었다. 하지만 2000년대 후반부터 HTML5와 웹 애플리케이션이 크게 대두되기 시작하면서 구글 크롬V8, 파이어폭스SpiderMonkey, 사파리JavaScriptCore 등 여러 우수한 JavaScript 엔진들의 성능 경쟁이 일어났고, 그 덕에 지금은 인터프리트되는 언어 중에서는 상당히 성능이 좋은 편에 속한다.

태생이 웹 브라우저의 스크립트 언어였기에, 언어 자체의 표준 라이브러리보다는 웹 브라우저API에 의존하는 경향이 매우 강하다. 따라서 언어 자체의 표준안인 ECMAScript 표준 이상으로 W3C문서 객체 모델 표준, HTML5의 브라우저 API 표준 등에 강하게 영향을 받는다. V8 엔진을 활용한 서버측 JavaScript 구현인 Node.js가 히트하기 전에는 변변한 파일 입출력 API조차 제대로 합의된 게 없었을 정도.

표준[편집 | 원본 편집]

ECMAScript 표준 개정판
ECMAScript 5
ECMAScript 2015
ECMAScript 2016
ECMAScript 2017
ECMAScript 2018
ECMAScript 2019
ES Next

JavaScript의 표준은 ECMA에서 관리하고 있으며 ECMAScript라고 부른다. 매해 새 표준이 확정되는 만큼, 활발히 발전하고 있는 언어이다.

기타[편집 | 원본 편집]

asm.js라고 하는 특이한 표준이 있는데, JavaScript를 어셈블리어처럼 컴파일할 수 있도록 JavaScript 문법을 매우 제약한 스펙이다.

각주