[IT열쇳말] 자바스크립트

가 +
가 -

우리가 매일 접속하는 웹사이트는 크게 3가지 요소로 구성된다. ‘HTML(HyperText Markup Language)’, ‘CSS(Cascading Style Sheets)’, ‘자바스크립트(Javascript)’다. HTML은 웹페이지의 큰 뼈대를 제공하고, CSS는 색깔이나 글씨체와 같은 디자인 요소를 관리한다. 자바스크립트는 크로스 플랫폼, 객체지향 스크립트 언어로 웹페이지의 동작을 담당한다. 예를 들어 자바스크립트를 이용하면 ‘버튼을 클릭하면 밑에 날짜를 보여줘’라는 식의 명령을 내릴 수 있다.

자바스크립트를 이용하면 웹에 풍부한 효과를 넣을 수 있지만, 2000년대 초반만 해도 자바스크립트는 개발자들에게 무시당하는 언어였다. 별다른 기능도 없고, 성능도 별로 좋지 않았기 때문이다. 하지만 최근 몇 년 사이에 다양한 자바스크립트 프레임워크와 라이브러리가 생기면서 자바스크립트 생태계는 크게 확장되고 있으며, 그 위상도 점점 높아지고 있다.

▲자바스크립트 로고 (출처: 위키피디아 https://en.wikipedia.org/wiki/JavaScript#/media/File:Javascript-736400_960_720.png *자바스크립트는 따로 공식 로고는 존재하지 않는다)

▲자바스크립트 로고 (출처: 위키피디아. *자바스크립트는 따로 공식 로고는 존재하지 않는다)

1995년 탄생한 동적 언어

프로그래밍 입문자들은 자바스크립트와 자바(Java)가 서로 비슷한 기술이라고 생각하곤 한다. 두 언어 모두 자바라는 단어를 사용하기 때문이다. 하지만 자바스크립트는 자바와는 전혀 관계가 없다. 언어를 만든 사람부터 기능과 사용법까지 완전히 다르다.
자바스크립트는 브랜든 아이크가 개발했다. 브랜드 아이크는 1995년 넷스케이프에 근무하면서 자바스크립트 개념을 만들었다. 그는 처음에는 자바스크립트가 아닌 ‘모카’라는 이름을 붙였다. 모카는 1995년 12월 ‘라이브 스크립트’라는 이름으로 바뀌었는데, 당시 자바가 큰 인기를 끌자 마케팅 효과를 노려 이름을 자바스크립트로 변경했다. 이후 자바스크립트 기술이 다양하게 발전했고, 이에 대한 표준과 명세를 ECMA 인터내셔널에서 관리하고 있다.

▲자바스크립트와 자바 비교 (출처: MDN. CC-BY-SA 2.5)

▲자바스크립트와 자바 비교 (출처: MDN. CC-BY-SA 2.5)

자바스크립트 창시자 브랜든 아이크에 대해 보다 자세히 알아보자. 그는 미국 산타클라라대학교에서 수학과 컴퓨터과학을 전공했으며, 이후 일리노이대학교 어바나-샴페인캠퍼스에서 석사학위를 받았다. 대학 졸업 이후 그는 주로 운영체제와 네트워크 관련 개발을 맡았고, 1995년 넷스케이프에 합류한 이후부터 웹 기술에 깊숙이 관여했다. 넷스케이프는 당시 마이크로소프트(MS)가 만든 ‘인터넷 익스플로러(IE)’의 가장 강력한 라이벌 웹브라우저를 만들고 있었다.

넷스케이프는 원래 브랜든 아이크에게 프로그래밍 언어 ‘스킴’을 웹브라우저에서 활용할 수 있는 방법을 알아봐달라고 요청했지만, 브랜든 아이크는 이와 달리 자바스크립트라는 언어를 새로 개발했다. 1998년 그는 웹 개방성을 옹호하는 모질라 프로젝트를 새로 시작했고, ‘파이어폭스’라는 웹브라우저를 만들었다. 이후 모질라에서 개발하는 기술은 그가 총괄하게 된다. 이러한 이유로 자바스크립트와 관련해 다양하고 자세한 문서를 모질라 커뮤니티 홈페이지에서 볼 수 있다.

2014년 브랜든 아이크는 모질라 기업의 CEO 자리에 올라갔다. 하지만 문제가 닥쳤다. 내부 직원들이 “브랜든 아이크가 동성결혼을 금지하는 ‘동성결혼금지법(California’s Proposition 8)’을 위해 1천달러를 낸 경력이 있다”라며 “파이어폭스가 추구하는 가치인 다양성과 맞지 않다”라고 공개적으로 비판했다. 이후 브랜든 아이크는 CEO 자리에 올라선 지 열흘 만에 사퇴했다.

모질라 기업을 떠난 브랜드 아이크는 2015년 브레이브소프트웨어라는 새로운 기업을 설립하고, 여기서 오픈소스 모바일 웹브라우저를 개발하고 있다. 브레이브소프트웨어는 ‘더 빠르고 안전한’ 웹브라우저를 지향한다. 기업이 함부로 개인 정보 및 쿠키 데이터를 추적하지 못하고, 가독성을 방해하는 광고를 없애는 방식의 기술을 만들고 있다.

▲자바스크립트 창시자 브랜드 아이크 (출처: 브레이브소프트웨어 홈페이지 https://brave.com/about.html)

▲자바스크립트 창시자 브랜드 아이크 (출처: 브레이브소프트웨어 홈페이지)

배우기 쉽고 확장성 높지만, 보안엔 취약해

자바스크립트는 다양한 장점과 단점을 가진다. 먼저 장점부터 살펴보자. 자바스크립트는 컴파일 과정이 없기 때문에 다른 언어와 비교했을 때 빠른 시간 안에 스크립트 코드를 작성할 수 있게 도와준다. 기존 C나 자바 언어와 달리 굉장히 단순한 구조와 원칙을 가지고 있기 때문에 초보 개발자들이 쉽게 배우고 이해할 수 있다.
예를 들어 자바스크립트 코드 안에서는 변수, 클래스 및 메소드를 선언하지 않아도 되고, 메소드가 ‘public’, ‘private’ 또는 ‘protected’인지 구분하지 않아도 된다. 이러한 특징은 개발자마다 서로 다른 방식으로 코드를 짜는 부작용도 있다. 그래서 구글이나 에어비앤비 같은 기업들은 ‘자바스크립트 스타일 가이드’라는 문서를 따로 만들어 읽기 쉽고 실수를 피할 수 있는 자바스크립트 작성법을 공개하기도 했다.

자바스크립트는 웹에 특화된 기술이기 때문에 운영체제나 플랫폼에 상관없이 잘 작동되고 확정성도 높다. 단점은 성능이나 보안 측면이다. 일단 내부에서 제공되는 기능이 제한적이고, 관련된 개발도구도 적은 편이다. 또한 자바스크립트는 HTML 소스코드에 함께 작성되면서 소스코드가 외부로 공개되는데, 이 과정에서 보안 취약점이 발생할 수 있다.

‘개발자가 가장 관심 많이 갖는 언어’로 꼽혀

▲깃허브에 작성된 소스코드 언어 종류. 2013년 이후 자바스크립트가 가장 많이 활용되고 있다. <출처: 깃허브 블로그https://github.com/blog/2047-language-trends-on-github)

▲깃허브에 작성된 소스코드 언어 종류. 2013년 이후 자바스크립트가 가장 많이 활용되고 있다. (출처: 깃허브 블로그)

개발자들의 대표 커뮤니티인 스택오버플로우는 2015년 157개국에 있는 사용자 2만6천여명에게 다양한 기술 관련 설문조사를 실시했다. 그 결과 자바스크립트는 ‘스위프트’와 함께 개발자들이 가장 많이 관심을 가지는 언어로 뽑혔다. 스택오버플로우는 설문조사 결과를 발표하면서 “자바스크립트는 가장 많이 사용하고 있는 프로그래밍 언어이며, 노드JS와 앵귤라JS가 눈에 띄게 성장하고 있다”라고 밝혔다. 오픈소스 개발자들이 많이 모이는 깃허브에서도 “자바스크립트가 소스코드 저장소에서 가장 많이 활용되고 있다”라는 통계를 공개했다. 그만큼 자바스크립트가 눈에 띄게 성장하고 있다는 뜻이다. 오픈소스 커뮤니티처럼 개인 개발자가 만든 기술도 많지만, 기업이 직접 자바스크립트 기술을 배포해 사용자를 모으는 경우도 적잖다.

특히 최근에는 자바스크립트 관련 라이브러리나 프레임워크가 개발자들 사이에서 큰 화제다. 위키피디아에 올라온 ‘자바스크립트 라이브러리 목록’을 보면 관련된 기술이 90여개인데다 데이터과학, 이용자조작화면(UI), 서버 등 활용 분야도 다양하다. 다음은 최근 큰 인기를 끄는 자바스크립트 기술들이다.

▲자바스크립트 관련 기술들 로고 (출처: 각 홈페이지)

▲자바스크립트 관련 기술들 로고 (출처: 각 홈페이지)

앵귤라JS

앵귤라JS는 웹 애플리케이션 프레임워크로, 개발과 테스트 환경을 단순화시킨 기술이다. 구글이 직접 만들었으며, 현재 버전은 2.0까지 나왔다. 해외에는 ‘앵귤라JS잡닷컴’이라는 구직 웹사이트가 있을 정도로 앵귤라JS의 인기는 높다. 앵귤라JS는 제이쿼리나 자바스크립트 UI 컴포넌트를 쉽게 재사용할 수 있다. 양방향 데이터 바인딩을 통해 불필요한 코드를 제거해 향후 유지보수를 쉽게 할 수 있는 장점도 지녔다.

D3.JS

D3는 ‘Data Drivened Document’(데이터 기반 문서)의 약자로, 자바스크립트 라이브러리다. 데이터와 이미지를 함께 묶어 표현해줘 데이터 시각화를 웹페이지에서 표현할 때 많이 사용된다.

노드JS

노드JS는 자바스크립트 엔진 ‘V8’ 위에서 동작하는 이벤트 처리 I/O 프레임워크다. 서버 환경에서 자바스크립트로 애플리케이션을 작성할 수 있게 돕는다. 노드JS의 장점은 비동기 프로그래밍이다. 동기 프로그래밍은 무엇인가 요청하면 결과를 즉시 받는 것을 의미한다. 비동기는 이벤트를 요청하고 바로 결과를 받지 않아도 된다. 따라서 결과값을 기다리지 않고 보다 다양한 요청을 처리할 수 있다. 웹 분야에서는 비동기 프로그래밍을 쓰는 경우가 드물었는데, 노드JS로 비동기 프로그래밍을 비교적 쉽게 할 수 있게 됐다.

리액트JS

리액트는 사용자 인터페이스를 만들기 위한 자바스크립트 라이브러리다. 페이스북이 만든 기술로, 2013년에 공개됐다. 커스텀 태그, 가상 DOM, 단방향 데이터 바인딩 기능을 제공해 주목을 받고 있다. 실제로 워드프레스, 넷플릭스가 리액트JS를 사용하고 있다고 밝히기도 했다. 리액트JS 기술 중 일부는 모바일 쪽에서 활용되고 있다.

※ 참고 링크

https://www.w3.org/community/webed/wiki/A_Short_History_of_JavaScript
http://www.bloter.net/archives/187690
http://www.bloter.net/archives/248319
https://en.wikipedia.org/wiki/List_of_JavaScript_libraries

이 글은 ‘네이버캐스트→테크놀로지월드→용어로 보는 IT’에도 게재됐습니다. ☞‘네이버캐스트’ 보기

네티즌의견(총 1개)