logo

javascript, 어디든 쓰여요

Javascript · 2022년 12월 26일 · 24 min read
poster

2023년 현재 98.7%의 웹 사이트가 웹 페이지 동작을 위해 클라이언트 측에서 자바스크립트를 사용하고 있으며, 많은 경우 타사 라이브러리가 내장되어 있는 경우가 많다. 내장되어 있다. 모든 주요 웹 브라우저는 사용자의 기기에서 코드를 실행하기 위한 전용 자바스크립트 엔진을 갖추고 있다.

자바스크립트는 ECMAScript 표준을 준수하는 고수준, 적시 컴파일 언어인 경우가 많다. 동적 타입 지정, 프로토타입 기반 객체 지향, 퍼스트 클래스 함수를 가지고 있다. 이벤트 중심, 함수형, 명령형 프로그래밍 스타일을 지원하는 멀티 패러다임이다. 텍스트, 날짜, 정규 표현식, 표준 데이터 구조, 문서 객체 모델(DOM)을 처리할 수 있는 애플리케이션 프로그래밍 인터페이스(API)가 있다.

ECMAScript 표준에는 네트워크, 스토리지, 그래픽 기능 등의 입출력(I/O)은 포함되지 않는다. 실제로는 웹 브라우저나 다른 런타임 시스템이 I/O를 위한 자바스크립트 API를 제공한다.

자바스크립트 엔진은 원래 웹 브라우저에서만 사용됐지만, 지금은 여러 서버와 다양한 애플리케이션의 핵심 구성 요소로 자리 잡았다. 이 용도로 가장 많이 사용되는 런타임 시스템은 Node.js이다.

자바와 자바스크립트는 이름도, 구문도, 각각의 표준 라이브러리도 비슷하지만, 두 언어는 별개의 언어이며 디자인도 크게 다르다.

Javascript의 역사

Javascript의 탄생

그래픽 사용자 인터페이스를 갖춘 최초의 대중적인 웹 브라우저인 Mosaic은 1993년에 출시되었으며, Mosaic의 주요 개발자들은 이후 Netscape를 설립하고, 1994년에는 보다 정교한 브라우저인 Netscape Navigator를 출시했다. 이는 곧 가장 많이 사용되게 되었다.

이러한 웹의 형성기에는 웹 페이지는 정적인 것일 뿐, 브라우저에 페이지가 로드된 후 동적으로 동작하는 기능이 부족했다. 웹 개발이 활발해지면서 이 제한을 없애야 한다는 요구가 있었고, 1995년 넷스케이프는 네비게이터에 스크립팅 언어를 추가하기로 결정한다. 썬마이크로시스템즈와 협력하여 프로그래밍 언어인 자바(Java)를 통합하는 한편, 브렌든 아이히(Brendan Eich)를 고용하여 스킴(Scheme) 언어를 통합한다.

넷스케이프 경영진은 곧 Eich가 Scheme이나 다른 기존 스크립팅 언어와는 다른 구문을 가진 새로운 언어를 고안해내는 것이 최선의 선택이라고 판단했다. 새로운 언어와 그 인터프리터 구현은 1995년 9월 Navigator의 베타 버전의 일부로 처음 출시되었을 때 LiveScript라고 불렸지만, 12월에 정식으로 출시되면서 JavaScript로 이름이 바뀌었다.

자바스크립트라는 명칭의 선택은 그것이 자바와 직접적으로 연관되어 있다는 것을 암시하여 혼란을 야기했다. 당시 닷컴 붐이 시작되고 자바가 인기 있는 새로운 언어였기 때문에 Eich는 자바스크립트라는 이름을 넷스케이프의 마케팅 전략이라고 생각했다.

마이크로소프트는 1995년 인터넷 익스플로러를 출시하여 넷스케이프와의 브라우저 전쟁을 촉발시켰고, 자바스크립트와 관련해서는 Navigator 인터프리터를 리버스 엔지니어링하여 JScript라는 독자적인 자바스크립트 인터프리터를 개발했다. 라는 독자적인 자바스크립트 인터프리터를 만들었다.

자바스크립트는 CSS의 초기 지원 및 HTML의 확장과 함께 1996년에 처음 출시되었다. 이들 각각의 구현은 Navigator의 대응하는 것과는 분명히 달랐다. 이러한 차이로 인해 개발자는 자신의 웹사이트를 두 브라우저에서 모두 잘 작동시키는 것이 어려웠고, 몇 년 동안 '넷스케이프에서 보는 것이 가장 좋다', '인터넷 익스플로러에서 보는 것이 가장 좋다'라는 로고가 널리 사용되었다.

Javascript의 도약

1996년 11월, 넷스케이프는 모든 브라우저 벤더가 준수할 수 있는 표준 규격의 출발점으로 자바스크립트를 Ecma International에 제출했다. 이것이 1997년 6월 첫 번째 ECMAScript 언어 사양의 공식 발표로 이어졌다.

표준화 작업은 몇 년 동안 지속되어 1998년 6월 ECMAScript 2, 1999년 12월 ECMAScript 3가 출시되었고, ECMAScript 4 작업은 2000년에 시작되었다.

한편, 마이크로소프트는 브라우저 시장에서 점점 더 지배적인 위치를 차지하게 되었고, 2000년대 초에는 인터넷 익스플로러의 시장 점유율이 95%에 이르렀다. 이는 JScript가 웹에서 클라이언트 측 스크립팅의 사실상의 표준이 되었음을 의미한다.

마이크로소프트는 처음에 표준화 과정에 참여하여 자사의 JScript 언어에 몇 가지 제안을 구현했지만, 결국 Ecma의 작업에 대한 협력을 중단했다. 이렇게 해서 ECMAScript 4는 좌초되었다.

Javascript의 표준화

2000년대 초반 인터넷 익스플로러가 우세하던 시절, 클라이언트 측 스크립팅은 정체되어 있었다. 2004년 넷스케이프의 후계자인 모질라가 파이어폭스 브라우저를 출시하면서부터 변화가 시작되었고, 파이어폭스는 많은 사람들에게 받아들여져 인터넷 익스플로러의 점유율을 크게 빼앗아갔다.

2005년, Mozilla는 ECMA International에 참여하여 ECMAScript for XML (E4X) 표준 작업을 시작했다. 이는 ECMAScript 4의 초안을 기반으로 한 ActionScript 3 언어로 E4X를 구현하고 있던 Macromedia(이후 Adobe Systems에 인수됨)와 Mozilla의 공동 작업으로 이어졌다. 목표는 ActionScript 3를 새로운 ECMAScript 4로 표준화하는 것이었다. 이를 위해 어도비시스템즈는 타마린 구현을 오픈소스 프로젝트로 공개했다. 하지만 타마린과 액션스크립트 3은 기존의 클라이언트 측 스크립팅과 너무 달랐기 때문에 마이크로소프트의 협조를 얻지 못해 ECMAScript 4는 실현되지 못했다.

한편, ECMA의 활동과 무관한 오픈소스 커뮤니티에서도 매우 중요한 움직임이 있었는데, 2005년 제시 제임스 갤렛은 백서를 발표하면서 Ajax라는 단어를 만들고 자바스크립트를 근간으로 하는 일련의 기술에 대해 설명했다. 이는 자바스크립트의 르네상스 시기를 불러일으켰고, 오픈소스 라이브러리와 이를 중심으로 형성된 커뮤니티가 주도했다. jQuery, Prototype, Dojo Toolkit, MooTools 등 많은 새로운 라이브러리들이 탄생했다.

구글은 2008년 경쟁사보다 빠른 V8 자바스크립트 엔진을 탑재한 크롬 브라우저를 선보였다. 중요한 기술 혁신은 적시 컴파일(JIT)이었기 때문에 다른 브라우저 벤더들은 JIT를 위해 엔진을 정비해야 했다.

2008년 7월, 오슬로에서 이들 이질적인 관계자들이 한자리에 모여 회의를 열었다. 그 결과 2009년 초에 모든 관련 작업을 통합하고 언어를 발전시키기로 최종 합의했다. 그 결과 ECMAScript 5 표준이 2009년 12월에 발표되었다.

웹에서의 Javascript

자바스크립트는 웹의 클라이언트 측 스크립팅 언어의 주류이며, 전체 웹사이트의 98%(2022년 중반)가 이 목적으로 자바스크립트를 사용하고 있다. 스크립트는 HTML 문서에 포함되거나 HTML 문서에서 가져와 DOM과 상호 작용한다. 모든 주요 웹 브라우저에는 사용자 기기에서 코드를 실행하는 자바스크립트 엔진이 내장되어 있다.

스크립트를 통한 동작 예시

Ajax 또는 WebSocket을 통해 페이지를 다시 로드하지 않고 새 웹 페이지의 콘텐츠를 로드한다. 예를 들어, 소셜 미디어 사용자는 현재 페이지를 떠나지 않고도 메시지를 주고받을 수 있습니다.

  • 오브젝트 페이드인, 페이드아웃, 크기 변경, 이동 등의 웹 페이지 애니메이션.
  • 브라우저 게임 플레이
  • 스트리밍 미디어 재생 제어
  • 팝업 광고 및 경고 상자 생성
  • 웹 서버에 데이터를 전송하기 전에 웹 양식의 입력 값을 검증한다.
  • 사용자 행동에 대한 데이터를 기록하여 서버로 전송한다. 웹 사이트 소유자는 이 데이터를 분석, 광고 추적 및 개인화에 사용할 수 있다.
  • 사용자를 다른 페이지로 리디렉션한다.
  • 저장소 또는 IndexedDB 표준을 통해 사용자의 기기에 데이터를 저장하고 검색한다.
관련 포스트
post image
Javascript v8 엔진에 대해 알아보자
V8은 Chromium Project에서 Chromium 및 Google Chrome 웹 브라우저를 위해 개발한 무료 오픈 소스 JavaScript 및 WebAssembly 엔진이다. 이 프로젝트의 개발자는 Lars Bak이며, V8 엔진의 첫 번째 버전은 2008년
Javascript·10월 2일·8 min read
post image
javascript 보안 코딩
JavaScript와 DOM은 악의적인 제작자가 웹을 통해 클라이언트 컴퓨터에서 실행되는 스크립트를 배포할 수 있는 가능성을 제공한다. 브라우저 제작자는 두 가지 제한을 통해 이러한 위험을 최소화한다. 첫째, 스크립트는 샌드박스 내에서 실행되며, 파일 생성과 같은 범
Javascript·2월 24일·26 min read