Node.js
Node.js 는 웹브라우저 밖에서도 자바스크립트 코드를 실행할 수 있는 실행환경(Runtime Environment) 이다.
node.js 에 대해 갖고있던 오해
"Node.js" 는 JavaScript를 이용해서 서버를 만들 수 있는 개발 도구 입니다"
Node.js 관련 서적을 읽으며 처음 접한 Node.js 의 정의였다. 오해는 여기서부터 시작된 것 같다. 부끄럽게도 최근까지 node.js를 웹 서버 프레임워크로 알고있었다.
https://nodejs.org/en/about/ 에 들어가면 가장 먼저 볼 수 있는 예제이다. http://localhost:3000 으로 접속하면 "Hello World" 를 출력하는 간단한 "웹 애플리케이션" 이다.
위 코드는 SpringBoot 로 만든 http://localhost:8080/ 으로 접속했을 때, Hello World을 출력하는 코드이다. 이 두 코드를 놓고서 "Spring 프레임워크" 처럼 node.js를 JavaScript 백엔드 프레임워크 로 잘못 이해하고 있었다.
node.js ≠ SpringBoot
Node.js Http Module
node.js에서 http 모듈을 이용해 Response를 만들어 내보내는 형태는 SpringBoot를 이용해 구현한 것보다 Servlet을 구현한 코드와 비슷해 보인다.
hello.js
HelloServlet.java
http Module ≒ Tomcat
JRE, node.js
node.js 는 웹 브라우저 밖에서 JavaScript 코드를 실행할 수 있는 JavaScript runtime environment 이다. Java는 javac에서 컴파일해서 나온 바이트 코드를 JRE 로 실행한다. node.js는 jre에 대응할 수 있다.
node.js ≒ JRE
Java, JavaScript 비교
Java | JavaScript | |
실행환경 | JRE | node.js |
웹서버 라이브러리 | Tomcat | Http |
백엔드 프레임워크 | Spring Framework 등 | Nest.js 등 |
빌드, 의존성 관리 도구 | Maven, Gradle | npm, yarn |