Node.js
원저자 | 라이언 라인하트 달(Ryan Lienhart Dahl) |
---|---|
개발자 | Node.js 개발자 |
발표일 | 2009년 5월 27일[1] |
안정화 버전 | 22.6.0[2]
/ 2024년 8월 6일 |
저장소 | |
프로그래밍 언어 | C++, 자바스크립트 |
운영 체제 | macOS, 리눅스, 솔라리스, FreeBSD, OpenBSD, 윈도우 (시그윈), webOS |
종류 | 런타임 환경 |
라이선스 | MIT 허가서 |
상태 | 개발 중 |
웹사이트 | nodejs |
Node.js는 크로스플랫폼 오픈소스 자바스크립트 런타임 환경으로 윈도우, 리눅스, macOS 등을 지원한다. Node.js는 V8 자바스크립트 엔진으로 구동되며, 웹 브라우저 바깥에서 자바스크립트 코드를 실행할 수 있다.[3]
주로 확장성 있는 네트워크 애플리케이션과 서버 사이드 개발에 사용되는 소프트웨어 플랫폼이며, 논블로킹(Non-blocking) I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능을 가지고 있다.
내장 HTTP 서버 라이브러리를 포함하고 있어 웹 서버에서 아파치 등의 별도의 소프트웨어 없이 동작하는 것이 가능하며, 이를 통해 웹 서버의 동작에 있어 더 많은 통제를 가능케 한다.
개요
[편집]Node.js는 V8으로 빌드된 이벤트 기반 자바스크립트 런타임이다. 웹 서버와 같이 확장성 있는 네트워크 프로그램 제작을 위해 고안되었다.
파이썬으로 만든 트위스티드, 펄로 만든 펄 객체 환경, 루비로 만든 이벤트 머신과 그 용도가 비슷하다. 대부분의 자바스크립트가 웹 브라우저에서 실행되는 것과는 달리, 서버 측에서 실행된다. 일부 CommonJS 명세[4]를 구현하고 있으며, 쌍방향 테스트를 위해 REPL 환경을 포함하고 있다.
역사
[편집]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를 운영하는 재단의 한국어 웹페이지 Archived 2019년 12월 29일 - 웨이백 머신에서는 버전별 출시 및 유지보수 일정을 명시해두고 있다.
릴리스 | 상태 | 코드명 | 출시일 | 유지보수 종료일 |
---|---|---|---|---|
0.10.x | 수명 종료 | 2013-03-11 | 2016-10-31 | |
0.12.x | 수명 종료 | 2015-02-06 | 2016-12-31 | |
4.x | 수명 종료 | Argon[11] | 2015-09-08 | 2018-04-30 |
5.x | 수명 종료 | 2015-10-29 | 2016-06-30 | |
6.x | 수명 종료 | Boron[11] | 2016-04-26 | 2019-04-30 |
7.x | 수명 종료 | 2016-10-25 | 2017-06-30 | |
8.x | 수명 종료 | Carbon[11] | 2017-05-30 | 2019-12-31 |
9.x | 수명 종료 | 2017-10-01 | 2018-06-30 | |
10.x | 수명 종료 | Dubnium[11] | 2018-04-24 | 2021-04-30 |
11.x | 수명 종료 | 2018-10-23 | 2019-06-01 | |
0.12.x | 수명 종료 | 2015-02-06 | 2016-12-31 | |
4.x | 수명 종료 | Argon[11] | 2015-09-08 | 2018-04-30 |
5.x | 수명 종료 | 2015-10-29 | 2016-06-30 | |
6.x | 수명 종료 | Boron[11] | 2016-04-26 | 2019-04-30 |
7.x | 수명 종료 | 2016-10-25 | 2017-06-30 | |
8.x | 수명 종료 | Carbon[11] | 2017-05-30 | 2019-12-31 |
9.x | 수명 종료 | 2017-10-01 | 2018-06-30 | |
10.x | 수명 종료 | Dubnium[11] | 2018-04-24 | 2021-04-30 |
11.x | 수명 종료 | 2018-10-23 | 2019-06-01 | |
12.x | 수명 종료 | Erbium[11] | 2019-04-23 | 2022-04-30 |
13.x | 수명 종료 | 2019-10-22 | 2020-06-01 | |
14.x | 수명 종료 | Fermium[11] | 2020-04-21 | 2023-04-30 |
15.x | 수명 종료 | 2020-10-20 | 2021-06-01 | |
16.x | 수명 종료 | Gallium[11] | 2021-04-20 | 2023-09-11[12] |
17.x | 수명 종료 | 2021-10-19 | 2022-06-01 | |
18.x | 유지보수 LTS | Hydrogen[11] | 2022-04-19 | 2025-04-30 |
19.x | 수명 종료 | 2022-10-18 | 2023-06-01 | |
20.x | 지원 중인 LTS | Iron[13] | 2023-04-18 | 2026-04-30 |
21.x | 현재 | [11] | 2023-10-17 | 2024-05-30 |
22.x | 보류 | Jod[13][11] | 2024-04-15 | 2027-04-28 |
23.x | 보류 | [11] | 2024-10-14 | 2025-05-27 |
범례: 오래된 버전 오래된 버전, 지원 중 최신 버전 배포 예정 |
예제
[편집]var http = 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/');
다른 예제, 7000번 포트를 여는 간단한 TCP Echo 서버:
var net = require('net');
net.createServer(function (stream) {
stream.write('hello\r\n');
stream.on('end', function () {
stream.end('goodbye\r\n');
});
stream.pipe(stream);
}).listen(7000);
같이 보기
[편집]각주
[편집]- ↑ “node-v0.x-archive on GitHub”. 2014년 8월 2일에 확인함.
- ↑ “Release 22.6.0”. 2024년 8월 8일. 2024년 8월 8일에 확인함.
- ↑ “Introduction to Node.js”. 2023년 12월 20일에 확인함.
- ↑ http://wiki.commonjs.org/wiki/Implementations/node.js
- ↑ Harris, Amber (2012년 4월 1일). “The Birth of Node: Where Did it Come From? Creator Ryan Dahl Shares the History”. Devops Angle. 2014년 10월 18일에 원본 문서에서 보존된 문서. 2013년 10월 26일에 확인함.
- ↑ Alex Handy (2011년 6월 24일). “Node.js pushes JavaScript to the server-side”. SDTimes. 2011년 9월 4일에 확인함.
- ↑ “Ryan Dahl at JSConf EU 2009”.
- ↑ “Ryan Dahl at JSConf EU 2009 Video”.
- ↑ “Porting Node to Windows”. 2014년 7월 8일에 원본 문서에서 보존된 문서. 2014년 8월 2일에 확인함.
- ↑ “Node.js Foundation Combines Node.js and io.js Into Single Codebase in New Release”. 2016년 1월 28일에 확인함.
- ↑ 가 나 다 라 마 바 사 아 자 차 카 타 파 하 거 “nodejs/Release”. 《GitHub》 (영어). 2018년 5월 3일에 확인함.
- ↑ Bringing forward the End-of-Life Date for Node.js 16, Node.js Website
- ↑ 가 나 “Node.JS CODENAMES.md”. 《GitHub》 (영어). 2023년 9월 6일에 확인함.
외부 링크
[편집]- Node.js - 공식 웹사이트
- 깃허브 저장소
- The Node Beginner Book