2015년 4월 19일 일요일

자바스크립트, Node.js

참고: 실시간 웹 애플리케이션 개발을 위한 Node.js 프로그래밍

특징:
- 동적 형변환
- 프로토타입 기반 객체지향: 런타임 중에도 객체의 속성과 값 변경 가능
- 실행시 평가: 런타임에 동적으로 코드 실행
- 고차 함수: 인자로 함수를 취하거나 함수를 반환 가능

자바스크립트 벤치마크: SunSpider

온라인 자바스크립스 학습 서비스: jsfiddle.net

Ajax: Asynchronous JavaScript and XML. 클라이언트 측에서 비동기 웹 앱을 개발 가능(화면 새로 고침하지 않아도 데이터 주고 받을 수 있음). XMLHttpRequest 객체를 통해 데이터 교환

jQuery: 네이티브 자바스크립트를 아주 간결하고 직관적으로 기술하게 만들어 줌

CommonJS: 웹 브라우저 밖에서 자바스크립트를 효율적으로 사용하고자 진행된 프로젝트

참고할 만한 자바스크립트
- JSON: JavaScript Object Notation. 데이터 교환을 목적으로 하는 포맷
- jQuery, Prototype, Dojo: 클라이언트 사이드에서 간단하게 DOM 접근 조작
- Objective-J: 자바스크립트 확장 버전
- Processing.js: 이미지, 시각화, 상호작용 컨텐츠 개발
- CoffeeScript: 루비 또는 파이썬 유사한 문법
- Google Dirt: 구글의 웹 프로그래밍 언어
- TypeScript: MS의 웹 프로그래밍 언어
- BoltJS: 모바일 웹 앱 UI 프레임워크

* 비동기 프로그래밍 모델
- C libevent: 이벤트 통지 라이브러리
- python twisted
- ruby EventMachine
- Perl Object Environment

Node.js: 싱글 스레드와 이벤트 기반의 비동기 I/O 처리
--> 문맥전환에 소모되는 시간을 줄임으로써 성능 향상
--> 아파치+PHP 조합에 비해 CPU와 메모리 사용량이 더 많음
--> V8 엔진이 가상머신이므로 가비지 컬렉션에 의한 메모리 관리 한계
- npm을 통한 다양한 확장 모듈
- c/c++ (레이어와 시스템 통합) 및 자바스크립트 (대부분) 로 만들어짐
- 서버 사이트 자바스크립트

V8 JavaScript Engine
- 구글에서 개발된 오픈소스 JIT 가상 머신
- JVM를 개발한 Lars Bak이 C++로 개발

노드의 스레드 풀: libeio (비동기로 동작하는 C언어용 i/o 라이브러리). POSIX의 비동기 버전에 해당
노드의 이벤트루프: libev (고성능 이벤트 루프 라이브러리)

댓글 없음:

댓글 쓰기