일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 삼성
- 인공지능
- 멤버십
- Bidirectional Associative Memory
- Python
- NarwalFreo
- 구글 앱 엔진
- Neural Network
- 파이썬
- hopfield network
- 갤럭시탭S8울트라
- BAM
- 신경회로망
- 하이퍼바이저
- 삼성소프트웨어멤버십
- 물걸레로봇청소기추천
- 가상화
- 동아리
- 패턴인식
- 패턴 인식
- 물걸레자동세척로봇청소기
- 빅데이터
- 증강현실
- 고려대학교
- SSM
- Google App Engine
- 신경망
- 나르왈프레오
- Friendship
- 삼성전자 소프트웨어멤버십 SSM
- Today
- Total
정보공간_1
[6기 수원 김병연] Node.js 이야기의 시작 본문
제가 이번 포스팅에서 소개할 내용은 Node.js 입니다.
Node.js 에 대해 대부분 '자바스크립트로 제작가능한 서버' 로 알고 계실 텐데요.
정확히 말하자면 네트워크 애플리케이션을 제작할 수 있는 하나의 플랫폼입니다.
다시 말해서 서버뿐만 아니라 클라이언트로의 역할도 가능한 것입니다.
지금 많은 곳에서 쓰여지고 있는 이 "Node.js"의 역사를 살펴보기에 앞서
Node.js 의 언어가 된 자바스크립트에 대해 알아보겠습니다.
1. 자바스크립트의 역사
이 이야기는 먼 옛날로 거슬러 올라갑니다.
지금은 잊혀진 넷스케이프와 마이크로소프트사는 브라우저 전쟁을 하고 있었죠.
물론 이 전쟁에서 마이크로소프트의 IE+Windows 전략으로 넷스케이프는 점유율을 잃고 추락하게 됩니다.
그런데 그 전에 넷스케이프에서는 하나의 웹 브라우저를 위한 프로젝트를 시작하게 되는데요
언어의 이름은
"모카" 에서 "라이브스크립트" 로 변경 되었구요,
넷스케이프가 자사 브라우저에 자바 애플릿 같은 것들을 지원하기 시작 할 때쯤
(안타깝게도 지금은 자바스크립트도 3D를 표현 할 수 있고 속도도 빠르기 때문에 자바 애플릿은 거의 사장되었죠.)
당시 자바의 저작권을 가지고있던 썬 마이크로시스템즈의 동의를 얻어 다시 한번
"라이브스크립트" -> "자바스크립트"로 개명하게됩니다.
다시 말하자면 자바스크립트는 넷스케이프에서, 웹 브라우저를 위해 시작된 것입니다.
그런데 자바스크립트가 나온지 5개월 후 마이크로소프트에서는 JScript라는, 자바스크립트와 비슷한것을 내놓게 됩니다.
즉 이 당시에 익스플로러를 쓴다는 것은 정확히 말하자면 JScript를 쓴다는 의미였지요.
넷스케이프는 곧바로 자바스크립트의 표준화를 위해 기술규격을 ECMA 국제 표준화 기구에 제출했고
ecma (국제 표준화 기구)
마이크로소프트의 JScript가 나온지 약 3개월 후부터 표준화 작업이 진행되었습니다.
결국 현재의 자바스크립트는 ECMA 표준을 따르고 있고,
브라우저마다 지원하는 자바스크립트의 버젼이 달라요.
(가장 널리 지원되는 버전은 1.5)
그럼 자바와 자바스크립트는 무슨 차이가 있을까요?
비슷한 점을 우선 볼까요?
자바의 모든 예약어는 자바스크립트에서도 예약어에요.
그리고 자바와 자바스크립트는 C언어를 바탕으로 만들어졌습니다.
하지만 자바스크립트는 Prototype 기반 객체지향 언어고
아시다시피 자바는 Class 기반 객체지향 언어입니다. 즉 자바스크립트가 자바에서 이름을 따오긴 했지만,
그 둘은 언어적으로 전혀 다른 언어죠.
2. 브라우저 외부에서의 자바스크립트
방금 자바스크립트에 대해 조금 알아봤고
자바스크립트는 넷스케이프가 웹 브라우저를 위해 개발했다고 했었는데요.
이후에 웹 브라우저 외부에서도 자바스크립트를 이용하기 위한 시도들이 많이 있었습니다.
그 프로젝트들은 다음과 같습니다.
Helma , AppJet, Jaxer, Persever, Cappucino, Rhino ...
뭐지? 처음들어보는데? 라는 생각이 드실것 같은데요.
... ... 네 그렇다고합니다.
그런데 2008년, 구글의 V8엔진이 발표되면서 새로운 국면을 맞이하게 되는데요
V8이 날개를 달아줄게!
C++기반의 이 V8엔진은 인터프리터 언어인 자바스크립트를 미리 기계어로 컴파일 하는 방식으로
기존의 엔진들보다 훨씬 성능을 높였습니다.
케빈이라는 사람은 이 구글의 V8을 유의깊게 지켜보았고
자바스크립트가 웹브라우저 외부에서도 성공하려면 기술적인 부분보다 표준이 더 중요하다고 생각하게 됩니다.
그래서 자바스크립트를 외부에서 사용하기위한 표준을 작성하는 프로젝트를 시작했는데요
그것이 바로 CommonJS 말 그대로 범용 자바스크립트 입니다.
자세한 내용은 http://www.commonjs.org/
3. Node.js
Node.js는 이 CommonJS 1.0 명세를 따르고 있습니다.
즉 자바스크립트를 웹 외부에서 사용가능 해주는 플랫폼 이죠 !
Node.js 의 큰 특징은 다음과 같습니다.
None Blocking / Event-Driven
이게 어떤 의미일까요? 그림을 통해 보도록 하겠습니다.
A. Single Thread
예를들어 점원이 한명이고 손님이 5명인데
점원이 손님 한명을 보는데 1시간이 걸린다고 생각해봅시다.
그럼 Single Thread일 경우 저는 5시간을 서 있어야 겠네요.
B. Multi Thread
아까보다는 조금 더 나은점이 있군요.
점원이 5명으로 늘었네요!
덕분에 저는 1시간만 서 있으면 될 것 같아요.
하지만 서 있는 그 1시간도 없앨 수 있다면
커피 마시면서 다른걸 할 수 있지 않을까요?
C. Event Driven
아~ 이번에는 매니져가 있어서
점원이 일이 끝났는지 계속 확인하다가 끝나면 알려주네요 !
이렇게 되면 저는 서서 기다릴 필요가 없군요.
이제 저는 다른 일을 할 수 있게 되었어요.
다시 한번 정리해 볼게요.
이번 포스팅에서는
Javascript의 역사.
이 Javascript 가 웹 밖으로 나오게 되었다는것.
그리고 간단하게 예를들어 Node.js 의 동작 원리를 살펴 보았습니다.
감사합니다.
'IT 놀이터 > Elite Member Tech & Talk' 카테고리의 다른 글
[6기 강남 김현호] 온라인 문자인식 with SVM #1 (0) | 2014.09.05 |
---|---|
[6기 강남 송태현] 안드로이드 멀티 윈도우 오픈소스 분석(HALO) (0) | 2014.08.10 |
[6기 신촌 김상훈] Simulated Annealing (0) | 2014.08.09 |
[6기 강남 김현호] Tesseract-OCR을 통한 오프라인 문자 인식과 문자 학습 (8) | 2014.08.09 |
[6기 신촌 류보원] 체감형 게임 (0) | 2014.08.08 |