Develop/Node.js

[1.Nodejs] Node.js란?

GuriZzang 2014. 7. 28. 09:31

Node.js란?

2008년 9월 구글이 크롬웹 브라우저에 이식한 자바스크립트 엔진 V8을 오픈소스로 개방하면서 재조명받기 시작함.

2009년 유럽 JSConf의 라이언 달이 V8을 이용하여 자바스크립트의 강력함과 단순함을 활용한 이벤트 기반의 논블로킹 I/O를 주 컨셉으로 만든 백엔드(Back-end) 자바스크립트기반 플랫폼을 발표하였습니다.

이것이 현재 실리콘밸리에서 이슈가 되고있는 Node.js입니다.


Node.js는 크롬 자바스크립트 엔진인 V8을 기반으로 만들어진 플랫폼이며, 빠르고 확장가능한 네트워크 프로그램을 쉽게 작성할 수 있게 합니다. 

특히, 이벤트 주도 I/O모델을 사용함으로써 분산환경에서 실행되는 가장 가볍고 효과적인 그리고 완벽한 데이터 집중적인 실시간 어플리케이션을 작성할 수 있게 해준다고 합니다.



javascript와 java의 오해


1. javascript는 인터프리터 방식이다.

자바스크립트는 웹 브라우저에서 실행되는 스크립트 언어로, HTML로 작성된 웹페이지에 함수 형태로 작성되는 언어입니다.

간혹 java와 javascript를 혼동하시는 분들이 있습니다. (저또한 java를 배울때 javascript는 java에서 파생된거라 따로 공부안해도 쓸 수 있을거야.. 라고 생각했으니...)

자바와 자바스크립트의 연관성은 두 언어 모두 C언어와 비슷한 구문을 사용하고, 객체지향 언어이며 자바스크립트를 설계할 때 자바의 구문과 표준 라이브러리를 참조하여 설계하였다는 접입니다.

차이점은 자바스크립트는 인터프리터방식의 해석형 언어이고, 자바는 컴파일을 거친 바이트코드에 의해 실행된다는 점입니다.

(예로 자바는 컴파일을 거친 class파일을 WAS에 올리려 사용하게 되지요. .jsp파일을 그냥 웹페이지에서 열게되면 아무 동작도 안합니다. asp도 마찬가지죠.. 하지만 자바스크립트는 웹브라우저상에서 해석되어 실행되기때문에 파일 자체를 브라우저에서 열게되어도 동작하게 됩니다.)


2. javascript는 타입에 대해 느슨하다.

또다른 차이점은 자바스크립트는 타입에 대해 느슨합니다.

자바는 강한타입이지요.


자바스크립트 : 

var a = 2;

var b = "2";

var c = a + b;

console.log(c);

결과 c = 4


자바

int a = 2;

string b = "2";

int c = a + b;

결과 c를 처리하는 과정에서 에러가 납니다.

타입에 대해 엄격하기 때문에 정수형과 문자형을 정확하게 구분합니다.

int c = a + parseInt(b); 처럼 b를 정수형으로 타입캐스팅을 해줄경우 결과는 4가 됩니다.


3. javascript는 코딩이 간단하다.

그리고 제일 큰 특징은 소스를 코딩할때의 차이점 입니다.

자바스크립트는 해석형 인터프리터 방식이라 따로 컴파일이 필요없습니다.

이 차이점은 상당히 큽니다.

java의 경우 java파일에 변경이 이루어지면 컴파일을 거치고 컴파일된 class파일을 was에 올립니다.

그럼 was에선 container가 재실행되고 비로서 서비스가 가능한 상태가 됩니다.

작은 규모의 사이트일경우 오랜시간이 걸리지 않지만 복잡하고 규모가 큰 사이트의 경우 컴파일과 컨테이너 재실행의 경우 상당한 시간이 걸립니다.

다만 컴파일된 바이트코드를 실행하는 자바의 경우 자바스크립트보다는 속도면에서 우위에 있습니다.



Node.js를 사용하는데 적합한 어플리케이션은?

Node.js의 특징을 살펴보면 짧은 시간에 대량의 클라이언트 요청을 대응하는 웹 어플리케이션에 적합해 보입니다.

대량의 데이터를 조회하고 cpu의 사용을 요하면서 다소 긴 처리시간을 요구한다면 node.js는 좋은 선택은 아닌것 같습니다.

node.js는 원하는 데이터를 밀어넣고 최대한 빨리 응답을 받기 위해 설계되었다고 합니다.


전 지금 웹용 채팅사이트를 만들기 위해 Node.js를 공부하고 있습니다.. 




추가:

자바의 Node.js를 향한 움직임 이라네요.

오라클에서 2014년도에 발표예정인 Java 8에서 추가되는 주요 포인트 중 하나는 JVM기반 자바스크립트 엔진 Nashorn의 탑재입니다.

Nashorn은 Node.js와 무척 닮았고 Node.js와 다른점은 100% 자바로 쓰여졌다고 합니다.


Node.jar 라는 프로젝트를 통해서 Node.js로 작성된 프로그램을 그대로 Nashorn에서 사용할수 있습니다.

앞으로 자바스크립트, Node.js로 작성된 코드를 자바 어플리케이션에 탑재하여 jre가 설치되어 있는 아무서버에 올려놓고 돌리면 어플리케이션이 구동 된다고 합니다.

즉. 서버에 node.js가 설치되어 있지 않아도 jre가 설치/세팅이 되어 있다면 구동이 된다네요. 하. 하. 하....