1995년 웹 브라우저를 지배하던 넷스케이프 커뮤니케이션즈
에서 웹 브라우저의 보조적인 기능을 수행하기 위해 브라우저에서 동작하는 경량 프로그래밍언어를 도입하기로 했다. 그래서 탄생한 것이 '브렌던 아이크'가 개발한 자바 스크립트이다 .
자바 스크립트는 넷스케이프의 웹 브라우저인 네비게이터에 탑재되어 모카->라이브 스크립트
-> 자바스크립트 순으로 이름이 바뀌게 되었다.
비슷한 시기 마이크로소프트에서 JScript
라는 자바스크립트 비슷한 언어를 만들게 되고, 넷스케이프와 마이크로소프트는 자사 브라우저에서만 돌아가는 기능들을 구현하기 시작하며 크로스 브라우징 이슈가 지속적으로 발생한다.
그래서 넷스케이프는 컴퓨터 시스템의 표준을 관리하는 ECMA에 자바스크립트의 표준화를 요청했고 ECMA-262라고 불리는 표준화된 자바스크립트가 탄생했다. 상표권 문제로 자바스크립트가 아닌 ECMAScript로 불리게 되었다. 그렇게 버전에 따라 ES1, ES2... 가 되었고 흔히 듣는 ES6 표준을 따른다 라는 말이 여기서 생기게 된 것이다.
초기 자바스크립트는 브라우저의 보조적인 기능을 수행하기 위해서 이용되었다. 당시에는 서버에서 전체 HTML을 다 받아서 렌더링하는 방식으로 웹을 돌렸기 때문이다.
그러다가 1999년, 'Ajax'라는 통신 기능이 등장하게 되었고 전체 HTML을 계속해서 받아오는게 아닌 필요한 정보만 받아서 부분적인 렌더링을 하는 방식이 가능해졌다. 이 덕분에 데스크탑 어플리케이션과 같은 성능을 내고 빠른 화면 전환을 할 수 있게 되었다.
내가 자바스크립트를 배웠던 2021년 하반기에는 JQuery는 배우지 않아도 된다는 말이 많았다. 그래서 실제로 웹 페이지를 만들면서 한 번도 사용보지 않은 것 같다. 2006년, JQuery가 등장하면서 논란이 있었던 DOM을 더욱 쉽게 제어할 수 있게 되었고 JQuery 사용자는 많아졌었지만 지금은 많이 사용되지 않는 추세라고 한다.
자바스크립트가 웹 어플리케이션의 중심이 되려는 가능성이 보이자 구글은 고성능의 V8 엔진을 만들었다. 이로 인해 웹 서버에서 수행되던 많은 로직들이 클라이언트(프론트엔드)로 옮겨가게 되는 계기가 되었다.
그리고 V8으로 만들어진 Node.js
가 탄생한다. Node.js
는 자바스크립트의 런타임 환경으로 브라우저에서만 동작하던 자바스크립트를 브라우저에서 독립시킨 실행환경이다. 서버사이드 개발에 주로 이용되고 있다. 자바스크립트 환경에서 개발을 하기 때문에 자바스크립트를 배웠다면 따로 언어를 배우지 않아도 된다는 장점이 있다.
Node.js
의 등장으로 자바스크립트는 프런트엔드, 백엔드를 가리지 않고 사용될 수 있는 범용 프로그래밍 언어로서 한 걸음을 더 내디뎠다고 볼 수 있다.
자바스크립트는 인터프리터 언어이다. 인터프리터는 컴파일러와 다르게 컴파일 단계와 실행 단계가 분리되어 있지 않다. 하지만 자바스크립트는 컴파일러의 장점을 가져와서 인터프리터의 느린 실행속도를 개선했다고 한다. 조금 구체적으로는 명시적인 컴파일 단계를 거치지는 않지만 복잡한 과정을 거치며 일부 소스코드를 컴파일하고 실행한다고 한다. 이를 통해 느린 실행 속도라는 단점을 극복했다. 하지만 앞서 말한것 처럼 컴파일러와는 다르게 실행파일을 만들지 않기 때문에 컴파일러라고 볼 수는 없다. 요즘은 인터프리터와 컴파일러를 구분하는 경계가 모호해지고 있다고 한다.