이름도 비슷하면서 중요한 위치를 차지하고 있는 두 개의 컴퓨터 언어인 자바(Java)와 자바스크립트(JavasSript)에 대한 간단한 이야기이다. 상당히 재미있는 내용이며, 컴퓨터 언어에서는 중요한 내용이기도 하다.
[1] 자바(Java)와 자바스크립트(JavaScript)의 관계
자바(Java)와 자바스크립트(JavaScript)의 관계는, 아마도 아는 사람들은 너무 잘 알지만, 모르는 사람들은 전혀 모르는 내용일 것이다. 두 언어는 서로 아무 관계가 없다.
무엇이 다르냐고 묻는 것은 이상한 것이다. 같은 점이 전혀 없는 언어이다.
- 문법이 C랑 비슷한 것이 유일한 공통점이다. 하지만 대부분의 언어 문법은 C와 비슷하기 때문에 그것은 공통점이라고 볼 수 없다. 전혀 다른 환경에서 작동되는 전혀 다른 언어이다.
[2] 자바스크립트(JavaScript)
웹 페이지는 HTML, CSS, JavaSciprt의 세 가지 언어로 구성되는데, 이는 웹 브라우저(클라이언트/프론트)의 인터프리터로 해석되어, 우리 눈에 보여진다. HTML과 CSS로만 웹 페이지를 구성하면, 웹 페이지가 마치 종이에 글자를 써놓은 것처럼 보인다. HTML로 웹 문서의 형태를 만들고, CSS로 웹 문서를 디자인하기 때문이다. 그리고 자바스크립트는 해당 웹 문서에 움직임을 부여한다. 웹에서 무언가 동적인 움직임이 있었다면, 자바스크립트가 활용된 것일 가능성이 높다.
※ 예전에는 VBScript가 있었지만, 경쟁에서 밀려서 사라졌다.
웹 개발자라면 서버 사이드 언어의 선택과 관계없이, 클라이언트 사이드에서는 자바스크립트를 반드시 사용해야 한다. 그래서 중요한 언어인 것이다. 클라이언트 사이드 언어에서 대안이 없다.
- Javascript는 jQuery, AngularJS, React, Nodes.js, Express.js, Deno, Svelte 등 수많은 라이브러리가 있다. 참고로 이 라이브러리 하나를 익히는 것이 언어 하나 익히는 것과 난이도가 비슷하다. 라이브러리의 선택에 따라서 환경이 바꾸기 때문이다.
[3] 자바(Java)
썬 마이크로시스템즈(현재 오라클에 인수됨)에서 1995년에 출시한 플랫폼이다. Java라는 것은 단순히 Java라는 언어를 지칭할 수도 있지만, Java라는 소프트웨어 플랫폼 혹은 환경을 의미하기도 한다. 자바가 지금처럼 유명한 것은 자바라는 소프트웨어 플랫폼이 혁신적이었기 때문이다.
- Java 언어도 훌륭하지만, 그만큼 훌륭한 언어는 많다.
- Java 플랫폼은 Java가 아닌 다른 언어도 지원한다.
고전적인 내용이다. 현실에서 가장 많이 사용되는 개인용 컴퓨터를 위한 OS는 윈도, 맥OS, 리눅스가 있다. 어떤 응용 프로그램을 개발한다면, 일반적으로 하나의 OS를 위해서만 개발하게 된다. 만약 다른 OS를 위한 같은 프로그램을 개발한다면 해당 OS의 환경에 맞춰서 다시 개발해야 한다.
※ 여담이지만, 이 문제는 오늘날 윈도의 독점 환경을 낳았다.
- 예를 들어서 C로 윈도용 응용 프로그램을 개발하여 컴파일했다면 “.exe” 확장자를 가진 파일이 생성되고, 해당 파일을 실행하면 윈도에서 잘 실행이 된다. 하지만 맥OS나 리눅스에 그 파일을 가져가서 실행하면 실행되지 않는다. 맥OS나 리눅스는 “.exe” 파일이 뭔지 모른다.
Java는 위와 같은 환경을 제공한다. 중요한 OS들에 대한 JRE를 만들어서 배포한다. 그리고 Java로 만들어진 프로그램은 OS의 위에서 실행되는 것이 아니고, 위 그림처럼 JRE 위에서 실행되는 것이다.
※ JRE : Java Runtime Environment
※ JVM : Java Virtual Machine(자바 가상 머신), JRE에 포함되어 배포된다.
- 예를 들어서 자바로 응용 프로그램을 개발하여 컴파일했다면 “.class” 확장자를 가진 파일이 생성되고, JRE가 설치된 환경에서 해당 “.class” 을 실행하면 JVM(자바가상머신)이 해당 프로그램을 실행시켜준다. OS의 위가 아니라, JRE 위에서 실행되는 것이다. 1990년대 중반 당시에는 획기적인 발명이었다.
그래서 1995년부터 현재까지 자바를 가장 상징하는 문장(광고 문구)은 “Write once, run anywhere”이다. 한번 쓰면(프로그래밍 하면), 어디서든 실행된다.
[4] 자바(Java)의 실제 사용
Java라는 소프트웨어 플랫폼 혹은 환경은 매우 복잡한데, 그 중에 JSP(Java Server Pages)라는 서버 사이드 템플릿 엔진(웹 프로그래밍쪽)이 있다. 2010년 이전에는 보안이 필요한 대규머 기업용 시스템 구축에 많이 사용됐다. 위의 자바를 상징하는 “Write once, run anywhere”라는 문장과는 관계없이, 웹에서 많이 사용됐었다.
요즘은 웹 개발 환경이 많이 변해서 예전처럼 많이 사용되지 않는 것으로 알려져 있다.
- 혹시 자바가 다른 어딘가에 많이 사용되고 있다면, 꼭 답변을…
[5] 닷넷(.NET)
.NET은 마이크로소프트에서 개발한 환경이다. 현재는 닷넷 재단이 관리하는 오픈소스 프로젝트이다. “닷넷”이라고 읽는다. .NET 환경이 Java의 환경과 유사하다. C#, C++, F#, Q#, VB.NET. Delphi.NET 등의 언어를 지원하며, 윈도/맥OS/리눅스의 환경을 지원한다. 사실상 자바를 따라서 만든 것이지만, MS가 밀어주는 환경이고 오픈소스로 변경이 되었으니 힘은 있는 편이다.
※ C#이 메인 언어이다. #은 4개의 “+”를 뜻한다.
닷넷의 .NET Framework이 자바의 JRE와 동일한 역할을 하고, 닷넷의 CLR(Common Language Runtime, 공용 언어 런타임)이 자바의 JVM 역할을 한다.
- 가끔 .NET Framework을 설치하라는 메세지가 나오는데 그 이유는 닷넷 환경에서 만들어진 프로그램을 실행하기 위해서이다.
[6] 여담
1990년대에는 자바의 “Write once, run anywhere”이 중요했다. 윈도의 독점 시대였고, 웹의 영향력은 거의 없던 시절이기 때문이다. 하지만 2000대 중반 이후에 여러가지 사건들(아이폰, 크롬 등)로 인하여 윈도의 독점이 연해졌고, 웹의 영향력은 절대적이 되었다. 이를 통해 응용 프로그램 개발 방식이 많이 변했다.
첫째, 기존의 OS 종속적인 응용 프로그램에서 웹 프로그램으로 변경되는 경우가 많아졌다. 웹 프로그램은 브라우저(크롬, 엣지 등) 위에서 실행되는 것이기 때문에 이미 OS 종속에서 벗어나는 것이다. 둘째, 기존처럼 OS 종속적인 응용 프로그램을 만들더라도, 베이스는 웹 프로그램인 경우가 많아졌다. 특히 모바일 응용 프로그램들이 이런 경우가 많다. 껍데기만 해당 OS에 종속된 응용 프로그램이고, 내부는 모두 웹에서 온 데이터를 나열하여 사용하는 방식이다. 핵심이 웹 개발에 있고, 껍데기만 만들면 되므로 만들기가 쉬워졌기 때문이다.
- 단, 아쉽게도 게임은 여전히 먼 옛날과 비슷하게 매우 OS 종속적으로 만들어진다. 대형 게입 개발사에서 가끔 윈도OS가 아닌 OS를 위해서도 개발을 해주지만, 대부분은 윈도OS에 종속적으로 만들어진다. 이 시장도 변화가 있겠지.
- 또한 클라우드 컴퓨팅도 OS의 종속에서 벗어날 수 있는 방법 중 하나이다.
결론, 오늘날 Java의 지위는 더 이상 예전 같지는 않다.