원저자 | Ryan Lienhart Dahl |
---|---|
개발자 | Node.js 개발자 |
최근 버전 | 0.2.4 / 2010년 10월 23일 |
프로그래밍 언어 | C++, 자바스크립트 |
운영 체제 | 맥 OS X, 리눅스, 솔라리스,FreeBSD, OpenBSD, 마이크로소프트 윈도 (Cygwin), webOS |
종류 | 네트워크 애플리케이션 프레임워크 |
라이선스 | MIT 허가서 |
웹사이트 | http://nodejs.org/ |
Node.js는 V8 (자바스크립트 엔진) 위에서 동작하는 이벤트 처리 I/O 프레임워크이다. 웹 서버와 같이 확장성 있는 네트워크 프로그램 제작을 위해 고안되었다.
Node.js는 파이썬으로 만든 Twisted, 펄로 만든 펄 객체 환경, 루비로 만든 이벤트머신과 그 용도가 비슷하다. 대부분의 자바스크립트가 웹 브라우저에서 실행되는 것과는 달리, Node.js는 서버 측에서 실행된다. Node.js는 일부 CommonJS 명세[1]를 구현하고 있으며, 쌍방향 테스트를 위해 REPL 환경을 포함하고 있다.
목차[숨기기] |
[편집]예제
Node.js로 작성한 hello world HTTP 서버:
var sys = require('sys'), http = require('http'); http.createServer(function (request, response) { response.writeHead(200, {'Content-Type': 'text/plain'}); response.end('Hello World\n'); }).listen(8000); sys.puts('Server running at http://127.0.0.1:8000/');
다른 예제, 7000번 포트를 여는 간단한 TCP Echo 서버:
var net = require('net'); var server = net.createServer(function (stream) { stream.setEncoding('utf8'); stream.addListener('connect', function () { stream.write('hello\r\n'); }); stream.addListener('data', function (data) { stream.write(data); }); stream.addListener('end', function () { stream.write('goodbye\r\n'); stream.end(); }); }); server.listen(7000, 'localhost');
[편집]같이 보기
[편집]주석
[편집]바깥 고리
===================================================================================
저자 | 라이언 다르 |
---|---|
개발원 | Node.js Developers |
초판 | 2009 년 |
최신 버전 | 0.6.9 / 2012 년 1 월 27 일 |
최신 평가판 | 0.7.1 / 2012 년 1 월 24 일 |
프로그래밍 언어 | C + + , JavaScript |
지원 OS | Mac OS X , Linux , Solaris ,FreeBSD , OpenBSD , Windows, webOS |
종류 | 이벤트 중심 |
라이센스 | MIT License |
공식 사이트 | http://nodejs.org/ |
Node.js 은 이벤트화된 되는 입출력 처리 Unix 계열 플랫폼에서 서버측 JavaScript 환경이다 ( V8 JavaScript 엔진 으로 동작한다). Web 서버 등의 확장 가능한 네트워크 프로그램의 계정을 의도하고있다 [1] . 라이언 다르 의해 2009 년 만들어진, 다르을 고용하고있다 Joyent 의 지원에 의해 성장하고있다 [2] [3] .
Node.js는 Python 의 Twisted , Perl 의 Perl Object Environment , C 언어 의 libevent , Ruby 의EventMachine 과 같은 목적을 가진다. 대부분의 JavaScript 와는 달리 Web 브라우저에서 실행되는 것이 아니라, 오히려 서버측 JavaScript의 일종이다. Node.js 일부 CommonJS 사양을 구현하고있다 [4] .Node.js는 대화형 테스트에 REPL (Read-eval-print loop) 환경을 포함한다.
목차[ 숨기기 ] |
예제 [ 편집 ]
Node.js에 따르면 HTTP 서버 버전의 Hello world :
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://127.0.0.1:8000/' ) ;
포트 번호 7000 번으로 연결을 기다리고, 보낸 데이터를 에코 하는 간단한 TCP 서버 :
var NET = require ( 'net' ) ; var Server = net. createServer ( function ( stream ) { stream. write ( 'hello \ r \ n ' ) ; stream. on ( 'data' , function ( data ) { stream. write ( data ) ; } ) ; stream. on ( 'end' , function ( ) { stream. end ( 'goodbye \ r \ n ' ) ; } ) ; } ) ; server. listen ( 7000 , 'localhost' ) ;
모듈 [ 편집 ]
Node.js는 바이너리로 컴파일되는 많은 "코어 모듈"와 함께 제공된다. 그것은 네트워크 비동기 래퍼인 net 모듈의 다른 경로 또는 파일 시스템 버퍼 타이머보다 일반적인 스트림과 같은 기본적인 모듈을 포함한다. 타사 모듈을 사용하는 것도 가능하다. 그것은 미리 컴파일된 "node"기능 또는 일반적인 JavaScript 파일의 어느 쪽의 형식도 좋다. JavaScript 모듈 CommonJS 모듈 사양 [5] 에 따라 구현된 모듈이 구현하는 함수나 변수에 액세스하려면 exports 변수가 사용된다 [6] .
타사 모듈은 node.js을 확장하거나 추상화 수준을 제공함으로써, Web 응용 프로그램에서 사용되는 다양한 미들웨어 구현할 수있다. 예를 들어 인기있는 프레임 워크로 connect 및 express가있다. 모듈은 단순한 파일로 설치할 수도 있지만 일반적으로 Node Packaeg Manager (npm)를 사용하여 설치된다. 그것은 의존 취급도 포함하여 모듈 빌드, 설치, 업데이트 도와 준다. 또한 모듈은 Node의 디폴트의 모듈 디렉토리에 설치하지 않고도 상대적인 경로 이름을 요청하여 찾아낸다. Node.js wiki 에 사용할 수있는 타사의 모듈 목록이 있습니다.
커뮤니티 [ 편집 ]
주로 2 개의 메일링리스트 nodejs 과 nodejs-dev , 그리고 freenode 에 IRC 채널 # node.js을 중심으로 매우 활발한 개발자 커뮤니티가 존재한다. 커뮤니티 Node.js에 초점을 맞춘 개발자 회의이다 NodeConf 집결 [7] .
Windows 버전 [ 편집 ]
0.5.1보다, Windows 네이티브 버전 바이너리 릴리스를했다 [8] . Windows 기본 릴리스에 대해서는 Microsoft 의 지원이 이뤄졌다. Windows 용 비동기 I / O (IOCP) 환경에 대응하기 위해 libuv [9] 을 만들어 추상화를 진행했다. 결과 libev, libeio 사용할 수있는 UNIX 기반 플랫폼과 IOCP를 사용하는 Windows 플랫폼의 출시가 가능하게되었다.
관련 항목 [ 편집 ]
- JavaScript
- Google V8 JavaScript Engine
- NPM (Node Package Manager) - Node.js에서 지배적인 패키지 관리 시스템
- JSAN (JavaScript Archive Network) -별로 사용되지 않은 JavaScript 패키지 관리 시스템
===================================================================================
개발자 | 구글 |
---|---|
개발 상태 | 개발중 |
프로그래밍 언어 | C++, 자바스크립트 |
운영 체제 | 마이크로소프트 윈도, 맥 OS X, 리눅스, FreeBSD, 안드로이드, 웹OS |
플랫폼 | x86, x64, ARM |
종류 | 자바스크립트 엔진 |
라이선스 | BSD 라이센스 |
웹사이트 | http://code.google.com/p/v8/ |
V8 자바스크립트 엔진(V8 JavaScript Engine)은 구글에서 개발된 오픈 소스 JIT 가상 머신형식의 자바스크립트 엔진이며 구글 크롬 브라우저와 안드로이드 브라우저에 탑재되어 있다.[1] V8로 줄여 불리기도 하며, 현재 라스 백이 책임 프로그래머이다.[2] ECMAScript(ECMA - 262) 3rd Edition 규격의 C++로 작성되었으며, 독립적으로 실행이 가능하다. 또한 C++로 작성된 응용 프로그램의 일부로 작동할 수 있다.
[편집]같이 보기
[편집]주석
- ↑ Lenssen, Philipp (1 September 2008). Google on Google Chrome - comic book. 《Google Blogoscoped》. Google. 17 August 2010에 확인.
- ↑ Minto, Rob (27 March 2009). The genius behind Google’s web browser. Financial Times. 17 August 2010에 확인.
[편집]바깥 고리
===================================================================================
Google V8 JavaScript Engine 은 Google 이 개발하는 오픈 소스 의 JIT Virtual Machine 형식의 JavaScript실행 엔진이다 [2] . 문맥에 따라서는 단순히 V8 라고 불리는이 이름은 또한 "V8"로 알려진 V 형 8 기통 엔진에 유래하고있다 [3] . Google Chrome 과 안드로이드 Browser에서 채용되고있다.
ECMAScript (ECMA-262) 3rd Edition 규격, C + + 로 작성되어있다. 독립적으로 실행이 가능하며, C + +로 작성된 응용 프로그램의 일부로 작동할 수도있다.
Firefox 는 인터프리터에서 실행하여 통계 정보를 캡쳐 [4] 먼저 중간 코드로 변환하고 그 위에 JIT 컴파일하지만 V8에서는 중간 코드없이 인터프리터도 탑재하지 않고 처음 실행할 때 에서 컴파일하는 [2] .
개발 리더는 Java HotSpot 의 개발자이기도 한, Lars Bak .
V8의 어셈블러는 Strongtalk 어셈블러를 기반으로하고있다.
2010 년 12 월 '크랭크 샤프트'로 불리는 새로운 컴파일 환경을 도입 속도가 개선되었다.
===================================================================================
JIT 컴파일(just-in-time compile) 또는 동적 번역(dynamic translation)은 프로그램을 실제 실행하는 시점에 기계어로 번역하는 컴파일 기법이다. 이 기법은 프로그램의 실행 속도를 빠르게 하기 위해 사용된다.
전통적인 입장에서 컴퓨터 프로그램을 만드는 방법은 두가지가 있는데, 인터프리트 방식과 정적 컴파일 방식으로 나눌 수 있다. 이 중 인터프리트 방식은 실행 중 프로그래밍 언어를 읽어가면서 해당 기능에 대응하는 기계어 코드를 실행하며, 반면 정적 컴파일은 실행하기 전에 프로그램 코드를 기계어로 번역한다.
JIT 컴파일러는 두 가지의 방식을 혼합한 방식으로 생각할 수 있는데, 실행 시점에서 기계어 코드를 생성하면서 그 코드를 캐싱하여, 같은 함수가 여러 번 불릴 때 매번 기계어 코드를 생성하는 것을 방지한다.
최근의 자바 가상 머신에서는 JIT 컴파일을 지원한다. 즉, 자바 컴파일러가 자바 프로그램 코드를 바이트코드로 변환한 다음, 실제 바이트코드를 실행하는 시점에서 가상 머신이 바이트코드를 기계어로 변환한다
출처 - http://ko.wikipedia.org/wiki/Node.js
'Framework & Platform > Node.js' 카테고리의 다른 글
node.js - npm 1.0 사용하기 (0) | 2012.07.16 |
---|---|
node.js - socket.io 소개 (0) | 2012.07.12 |
node.js - CentOS에서 설치(install in linux) (0) | 2012.07.03 |
node.js - 소개 3 (0) | 2012.06.07 |
node.js - 소개 2 (0) | 2012.06.07 |