확장성 있는 네트워크 애플리케이션(특히 서버 사이드) 개발에 사용되는 소프트웨어 플랫폼이다. 작성 언어로 자바스크립트를 활용하며 논블로킹(Non-blocking) I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능을 가지고 있다.
본래 넷스케이프 커뮤니케이션즈 코퍼레이션의 브렌던 아이크(Brendan Eich)가 처음에는 모카(Mocha)라는 이름으로, 나중에는 라이브스크립트(LiveScript)라는 이름으로 개발하였으며, 최종적으로 자바스크립트가 되었다. ECMA스크립트(ECMAScript)의 표준 사양을 가장 잘 구현한 언어로 인정받고 있으며 ECMAScript 5 (ES5) 까지는 대부분의 브라우저에서 기본적으로 지원되었으나 ECMAScript 6 이후부터는 브라우저 호환성을 위해 트랜스파일러로 컴파일된다.
- 트랜스파일러: 같은 언어지만, 문법적으로 변환해주는 도구
그럼 이제 차이점을 알아봅시다.
JavaScript는 독립적인 언어가 아니라 스크립트 언어로써, 크롬, 파이어폭스, 사파리, 익스플로러와 같은 브라우저 안에서만 동작을 할 수 있는데, 이런 웹 브라우저가 없으면 사용할 수 없었다. 따라서 client 개발을 위한 위한 스크립트 언어였다. 하지만 V8으로 빌드된 이벤트 기반 자바스크립트 런타임인 Node.js의 등장으로 터미널 프로그램(원도우 cmd, mac terminal 등)에서 node를 입력하여 브라우저 없이도 실행할 수 있게 됐다.
Node.js 자체는 웹서버가 아니다. 위에 말씀드렸다싶이 Node.js는 자바스크립트 런타임(JavaScript Runtime)으로 Node.js는 웹 서버를 만들 수 있는 하나의 방법에 불과하다.
크롬(Chrome)과 Node.js는 따라서 같은 엔진(Google의 V8 엔진)을 공유하지만, 다른 런타임(runtime) 환경, 즉 크롬(Chrome)과 Node.js라는 다른 실행 환경을 가지고 있다고 할 수 있다.
- 프로그래밍 언어
- JS 자체적으로는 브라우저에서만 동작하며 document를 다룸
- 브라우저 밖의 자바스크립트 런타임
- 데스크탑에서 동작하며 JS언어로 서버개발이 가능하도록 해주는 환경