본문 바로가기

Programming Language/JavaScript

JavaScript란 이름은 어떻게 지어졌을까?

"JavaScript? Java랑 관련 있나?"

 

JavaScript를 처음 들어본 사람이라면 한 번쯤 생각해봤을 질문이다.

하지만 이것은 큰 오해다.

자바스크립트와 자바?

자바스크립트

Brendan Eich가 처음 언어를 만들었을 때는 이름을 Mocha라고 지었다. 

추후에 Netscape사 안에서 사용될 때는 LiveScript라는 이름을 가지게 되었다. 

하지만 공식적으로 언어를 알리고 이름을 정할 때는 JavaScript라는 이름이 선택되었다. 

왜 자바스크립트라는 이름을 사용했을까?

JavaScript라는 이름이 사용된 이유는 언어가 Java 개발자들을 타깃으로 하고 있었고 당시에 가벼운 프로그램을 지칭하기 위한 단어로 script가 많이 사용되었기 때문이다.

그리고 이 가벼운 "script"가 당시에 생긴 지 얼마 안 된 웹에서 사용될 것이었기 때문이다. 

즉, JavaScript는 당시의 무겁고 잘 알려진 Java를 대체하는 언어로 자리매김하고자 사용된 마케팅 전략이다.

그렇기 때문에 이와 같은 이유로 단순하게 "WebJava"라고 불렸어도 됐을 것이다.

자바와는 다른 언어?

둘은 완전히 다른 언어이지만 둘 사이에 유사점들이 존재한다.

하지만 이러한 유사점은 같이 개발되었기 때문이 아니라 C/C++의 구문을 예상하고 있을 개발자들을 대상으로 만들어졌기 때문이다.

예를 들어, JavaScript는, C/C++과 Java와 마찬가지로, 코드 블록을 { 로 시작하고 }로 끝난다. 

또한, 명령문은 ; 로 끝난다. 

둘은 완전히 다른 언어이다

이 둘의 법적 관계는 단순히 구문뿐만 아니라 더 깊게 얽혀있다. 

Java를 소유하고 운영하는 회사인 Oracle (Sun)은 "Javascript"라는 이름의 공식 상표를 소유하고 있다.

이러한 이유로 몇 사람들은 JavaScript 대신 JS를 사용해야 한다고 제안하기도 했다. 

하지만 Oracle이 소유하고 있는 이름과 더욱 멀어지기 위해서 TC39에서 지정하고 ECMA 표준 기관에서 공식화 한 언어의 공식 이름은 ECMAScript이다.

그리고 2016년 이후로는 공식 언어 이름에 개정 연도가 추가되었다. 따라서 현재 시점의 공식 이름은 ECMAScript 2019, 줄여서 ES2019이다.

즉, 브라우저 또는 Node.js에서 실행되는 JavaScript / JS는 ES2019 표준을 구현한 것이다.

자바스크립트는 ES2019 표준의 구현?

자바스크립가 나온 후 인기가 많아지자 Microsoft 사에서도 이를 채택해서 IE 3.0에서 동작하는 JScript라는 비슷한 언어를 만들었다. IE 외에도 다양한 브라우저들이 개별적으로 자바스크립트 문법을 만들어 내게 되자 각 브라우저 간 호환성을 위해 개발자들은 많은 고생을 해야 했다. 

 

표준화를 하기 위해 Netscape 사는 표준화 기구인 ECMA Intenational에 요청했고, 1997년 7월에 표준이 완성되었다. 

자바스크립트의 여러 이름

ECMAScript는 JavaScript의 표준화된 버전이다. 같은 말을 다르게 표현하자면, ECMAScript의 구현이 JavaScript인 것이다.

하지만 요즘에는 표준이나 구현 모두 구분 없이 단순히 'JavaScript'라고 불린다. 

ECMAScript를 줄여서 "ES + 버전 숫자"로 불리기도 하고 6번째 버전인 ECMAScript 2015부터는 버전명에 연도를 붙이게 되었다.

(ex: ES6, ES2015)

결론

JavaScript, JS, ECMAScript, ES10, ES2019는 다 같은 자바스크립트를 지칭하는 것이다. 

JavaScript라는 이름은 Java의 유명세를 이용해 마케팅 차원에서 의도적으로 지은 것이다.

하지만 JavaScript는 Java와 전혀 관계가 없는 단독적인 언어이다.

둘은 전혀 연관이 없다

"햄이 햄스터에 관련 있는 만큼 자바는 자바스크립트에 관련 있다." - Jeremy Keith, 2009

즉, 둘은 전혀 연관이 없다.

 

 

References

github.com/getify/You-Dont-Know-JS/blob/2nd-ed/get-started/ch1.md?__scribleNoAutoLoadToolbar=true

edu.goorm.io/learn/lecture/557/%ED%95%9C-%EB%88%88%EC%97%90-%EB%81%9D%EB%82%B4%EB%8A%94-node-js/lesson/174353/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%9D%98-%EC%97%AD%EC%82%AC