주로 확장성 있는 네트워크 애플리케이션과 서버 사이드 개발에 사용되는 소프트웨어 플랫폼이며, 논블로킹(Non-blocking) I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능을 가지고 있다.
내장 HTTP 서버 라이브러리를 포함하고 있어 웹 서버에서 아파치 등의 별도의 소프트웨어 없이 동작하는 것이 가능하며, 이를 통해 웹 서버의 동작에 있어 더 많은 통제를 가능케 한다.
개요
Node.js는 V8으로 빌드된 이벤트 기반 자바스크립트런타임이다. 웹 서버와 같이 확장성 있는 네트워크 프로그램 제작을 위해 고안되었다.
파이썬으로 만든 트위스티드, 펄로 만든 펄 객체 환경, 루비로 만든 이벤트 머신과 그 용도가 비슷하다. 대부분의 자바스크립트가 웹 브라우저에서 실행되는 것과는 달리, 서버 측에서 실행된다. 일부 CommonJS 명세[4]를 구현하고 있으며, 쌍방향 테스트를 위해 REPL 환경을 포함하고 있다.
역사
라이언 달: Node.js의 개발자 (2010년)
2009년 라이언 달은 플리커의 파일 업로드 진행 표시줄을 보았을 때, 파일이 얼마나 업로드되었는지 알기 위해서는 서버에 쿼리를 전송해야 한다는 점을 보고 조금 더 쉬운 방법을 찾다가 고안해 내었으며,[5] 그가 일하던 Joyent라는 회사에서 개발 및 운영을 담당하고 있다.[6]
최초 버전은 2009년 리눅스 기반으로 출시되었고, 첫 JSConf EU 콘퍼런스에서 라이언 달의 발표[7] 직후 국제적인 관심을 끌기 시작했다.[8] 패키지 매니저인 npm은 2011년에 처음 소개되었다.
2011년 6월 마이크로소프트는 Joyent와 파트너십을 맺고[9] 같은 해 7월 윈도우용 최초 버전을 출시했다.
2014년 12월, Fedor Indutny는 Node.js의 포크인 io.js를 시작했다.
2015년 9월, Node.js v0.12와 io.js v3.3은 병합되어 Node v4.0으로 합쳐졌다.[10]
종전 서드파티 모듈인 CommonJS만을 사용하고 있었으나, 2019년 4월 Node.js v12부터 ECMA스크립트의 공식 모듈 시스템 사용을 실험적으로 지원하기 시작했다.
출시
Node.js의 버전별 출시 및 관리는 규칙적인 주기를 가지고 이루어지고 있으며, v4 이후로 약 6개월 주기로 새로운 버전을 출시하고 있다. 이 중 짝수버전의 경우 장기지원 버전(LTS) 이라고 하여 별도의 코드명을 부여받으며, 약 3년간 유지보수 대상이 된다.
Node.js를 운영하는 재단의 한국어 웹페이지보관됨 2019-12-29 - 웨이백 머신에서는 버전별 출시 및 유지보수 일정을 명시해두고 있다.
varhttp=require('http');http.createServer(function(request,response){response.writeHead(200,{'Content-Type':'text/plain'});response.end('Hello World\n');}).listen(8000);console.log('Server running at http://localhost:8000/');