Node.js
![]() | |
원저자 | 라이언 라인하트 달(Ryan Lienhart Dahl) |
---|---|
개발자 | Node.js 개발자 |
발표일 | 2009년 5월 27일(15년 전)(2009-05-27)[1] |
안정화 버전 | |
저장소 |
|
프로그래밍 언어 | 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 환경을 포함하고 있다.
역사
![](http://upload.wikimedia.org/wikipedia/commons/thumb/b/b2/Ryan_Dahl.jpg/220px-Ryan_Dahl.jpg)
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);
같이 보기
- 자바스크립트
- V8 (자바스크립트 엔진)
각주
- ↑ “node-v0.x-archive on GitHub”. 2014년 8월 2일에 확인함.
- ↑ “Release 22.0.0”. 2024년 4월 24일.
- ↑ “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일에 확인함.
외부 링크
![](http://upload.wikimedia.org/wikipedia/commons/thumb/4/4a/Commons-logo.svg/30px-Commons-logo.svg.png)
- Node.js
- 공식 웹사이트
- 깃허브 저장소
- The Node Beginner Book
- v
- t
- e
- Node.js
- NPM
- V8
- CommonJS
![](http://upload.wikimedia.org/wikipedia/commons/thumb/d/d9/Node.js_logo.svg/100px-Node.js_logo.svg.png)
- MEAN
- 몽고DB
- Express.js
- AngularJS/Angular
- MEEN (Ember.js로 대체)
- Backbone.js
- Meteor
- Lodash
- Underscore.js
- React.js