Java로 프로그래밍을 시작했고, Spring Framework를 사용해 Web Application을 제작하는 것이 익숙한 나에게 Node.js는 그저 수업 때 흘러가듯이 나온 용어였다. 그 당시엔 Node.js에 대해서 큰 관심이 없었다. 그저 뒤에 붙은 .js를 보고 아 javascript랑 관련 있는 건가 보다 했다.
시간이 지나 웹 애플리케이션 제작에 더 큰 관심이 생기고, 그에 따라 Java와 Spring을 사용하지 않고도 웹 애플리케이션을 만드는 방식에 관심이 가기 시작했다. 물론, 프로그래밍을 배울 때 선생님께서 프로그래머는 공부를 게을리 하지 않아야 한다고 하시기도 하셨지만, 내 개인적인 호기심이 매우 강했다.
웹 애플리케이션을 만들 때 사용하는 언어는 매우 다양했다. Python, C#, Ruby 등이 있었다.
프로그래밍 언어 | 웹 프레임워크 |
Python | Django, Flask |
C# | ASP.Net |
Ruby | Ruby on Rails |
Java | Spring |
JavaScript | Express |
1. 웹 애플리케이션을 제작할 때 사용하는 언어와 그에 대응하는 웹 프레임워크
간단히 조사를 해보니 위 표와 같다고 할 수 있다. 이외에도 더 있겠지만, 내가 알아본 부분은 여기까지다. 위의 언어들과 웹 프레임워크는 서버 사이드 언어이다. 그런데 한가지 이상한 부분이 있었다.
자바스크립트?
자바스크립트라니? 내가 배울 때 분명 자바스크립트는 웹 브라우저에서 동작하는 언어라고 했다. 웹 페이지에서 버튼을 누르면 특정 기능이 동작하게 하거나, 애니메이션 처리 등등을 모두 자바스크립트로 했었다. 웹 애플리케이션에서 특정 동작을 담당하는건 자바스크립트였다. 그리고 웹 페이지에서 보낸 요청을 처리해서 다시 웹으로 돌려주는 역할은 (내가 만든 웹 애플리케이션에서는) 자바였다. 그래서 이상했다. 코딩 초보자인 내게는 이해하기 어려웠다. 웹 브라우저가 서버가 된다는 소리인가? 예전에 자바가 썼다는 JSP를 컨트롤러로 사용했다는 패턴과 같은 것인가?
그리고 여기서 예전에 지나가듯이 나온 Node.js가 튀어나왔다.
Node.js
나는 맨 처음에는 Node.js가 자바스크립트로 웹 애플리케이션을 만들 때 쓰는 웹 프레임워크인줄 알았다. 그런데 아니었다. Node.js의 홈페이지에 가보면 이렇게 나와있다.
Node.js®는 Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임입니다.
런타임이라...이제는 런타임이 뭔지 몰랐다. 런타임이란 용어 자체는 Java를 배울 때 JRE(Java Runtime Environment)를 통해 접해보긴 했지만 내가 깊은 관심을 가지지 않았다. 단지 용어만 보고 실행을 도와주는 건가?하고 무심히 넘겼다. 런타임에 대해 다시 찾아보았다.
Runtime
컴퓨터 프로그램의 생명 주기에서 가장 마지막 단계. 코드가 CPU 위에서 기계어로 실행되는 단계.
아마 이 뜻으로 쓴 건 아닌 것 같다... 그래서 한번 Runtime Environment를 찾아보았다.
Runtime Environment
컴퓨터가 실행되는 동안 프로세스나 프로그램을 위한 소프트웨어 서비스를 제공하는 가상 머신의 상태.
운영 체제 자체에 속하는 경우도 있고, 운영 체제에서 작동하는 소프트웨어를 뜻할 수도 있다.
아마 이것을 의미하는 것이 아닐까 싶다. 개념이 조금 잡혔다. 그러니까 Node.js는 기존의 웹 브라우저에서만 돌릴 수 있었던 JavaScript를 웹 브라우저가 아닌 환경에서도 실행할 수 있게 만든 것이다. 즉, Node.js를 통해 웹 애플리케이션을 만드는 것은 Node.js를 활용한 사례 중 하나에 불과하고, Node.js를 활용해 웹 애플리케이션이 아닌 다른 여러가지를 만들 수 있다는 말이다.
실제로 Node.js와 Electron이라는 프레임워크를 이용해서 Visual Studio Code나 Facebook Messenger, 트위치 등 유명한 애플리케이션들이 만들어졌다. 다른건 몰라도 내가 자주 사용하는 Visual Studio Code가 JavaScript로 만들어진 것이라니... 생각지도 못했다.
다음은 Node.js의 특징에 대해 정리해보려고 했으나, 아직까진 내게 크게 와닿지 않는 개념이라 좀 더 공부를 해서 적어야할 것 같다.
'프로그래밍 > Node.js' 카테고리의 다른 글
React 연습 - JSX (0) | 2021.07.26 |
---|---|
React 연습 - npx create-react-app (0) | 2021.07.25 |