JavaScript의 간략한 역사
(deno.com)- 올해 자바스크립트 30주년을 맞아서 Deno가 그동안의 역사를 간략히 요약
- 자바스크립트는 10일 만에 개발된 스크립트 언어에서 시작해, 현재 세계에서 가장 인기 있는 언어로 자리잡음
- JavaScript가 어떻게 발전해 왔고 앞으로 어디로 향하는지 보여주는 몇 가지 주요 역사적 순간을 소개
A brief history of JavaScript (1994-2025)
[1994]
-
Netscape Navigator 1.0 출시
- 1994년 12월, Netscape Navigator 1.0 출시
- 이전 브라우저들보다 빠르고, GUI를 갖춘 점이 인기 요인
- HTML 2.0 지원과 함께, 이후 자바스크립트가 이 브라우저에서 실행될 기반이 마련됨
[1995]
-
JavaScript의 탄생
- 1995년 5월, Brendan Eich가 10일 만에 자바스크립트 초안 개발
- 당시 인기 있던 Java와 유사한 문법을 갖춘 스크립트 언어 요청에 따라 개발됨
- 이름은 마케팅 목적상 JavaScript로 결정
-
Netscape와 Sun의 공식 발표
- 1995년 12월, 자바스크립트를 “웹을 위한 경량 객체지향 스크립팅 언어” 로 발표
- 28개 기술 기업들의 지지를 받아 발표되며, 엔터프라이즈 환경까지 고려한 언어로 포지셔닝됨
[1996]
-
Microsoft의 대응
- 1996년 3월, Microsoft가 Internet Explorer 3에 JScript 탑재
- JScript는 ActiveX와 연동되어 Excel 같은 응용프로그램을 제어할 수 있었음
-
JavaScript 1.0 탑재된 Navigator 2.0 출시
- 같은 해 3월, Netscape Navigator 2.0에서 JavaScript 1.0 정식 데뷔
- DOM(Document Object Model) 개념이 이 시점에서 시작됨
[1997]
-
ECMA에 표준화 제안
- 1997년 6월, Netscape가 자바스크립트를 ECMA International에 표준화 제안
- Microsoft의 JScript와의 호환 문제 해결 목적
- ECMA-262라는 명세가 만들어지고, 명칭은 ECMAScript로 지정
- TC39 위원회 구성되어 언어 발전 관리 시작
[1998]
-
Mozilla 프로젝트 출범
- 1998년 1월, Microsoft의 브라우저 시장 독점에 대응해 Netscape가 소스코드 오픈
- 프로젝트 명칭은 “Mozilla”로, 이후 Firefox, Rust 등 다양한 오픈소스 성과로 이어짐
-
ECMAScript 2 발표
- 1998년 9월, ECMAScript 2 정식 발표
- 새로운 기능은 없었으나, 명세의 일관성 및 정제된 문서화가 주요 목표였음
[1999]
-
IE5와 XMLHttpRequest 도입
- 1999년 3월, IE5에서
XMLHttpRequest
도입 - 이는 이후 AJAX 기술의 기반이 됨
- 1999년 3월, IE5에서
-
JSDoc 등장
- 1999년 4월, JavaScript 문서화를 위한 JSDoc 도입
- 자바 기반 Javadoc의 영향을 받았으며, 현재도 문서 생성 도구로 사용 중
-
ECMAScript 3 발표
- 1999년 12월, ECMAScript 3 정식 발표
-
do-while
, 정규표현식, 문자열 메서드 추가, 예외처리 등으로 언어의 본격적인 성장 기반 마련 - 이후 10년 이상 웹 표준 자바스크립트의 사실상 기준으로 사용됨
[2001]
-
JSON의 첫 등장
- 최초의 JSON 메시지가 전송됨
- 웹 페이지 내 스크립트에서
{ to, do, text }
형태의 객체 구조 사용 - 자바스크립트 기반의 경량 메시지 포맷으로, 이후 웹 API 통신의 표준이 됨
[2002]
-
JSLint 도입
- Douglas Crockford가 정적 문법 검사 도구 JSLint를 발표
- 자바스크립트 코드 품질을 높이고, 이후 그의 저서 “JavaScript: The Good Parts” 로 이어짐
-
Firefox의 전신 Phoenix 0.1 출시
- Mozilla 커뮤니티가 기존 제품군의 무거움에 반발해 경량 브라우저 Phoenix를 개발
- 탭 브라우징, 팝업 차단 등 혁신적 기능 제공 → 후에 Firefox로 발전
[2003]
-
Apple의 Safari와 WebKit 발표
- Safari 브라우저와 WebKit 엔진 도입으로, Mac의 Microsoft 종속성 탈피
- 이후 iPhone에서 Mobile Safari의 기반이 됨
[2004]
-
Gmail과 AJAX
- Gmail의 AJAX 기반 인터페이스로, 새 시대의 웹앱 UX 기준 제시
- 페이지 전체 리로드 없이 서버와 데이터 교환 → Web 2.0 시대 개막
[2005]
-
AJAX 용어의 정립
- Jesse James Garrett가 “AJAX”라는 개념 명문화
- JavaScript + XML 조합을 통해 비동기 서버 통신 구조 정립
-
Mozilla DevMo 출범 → MDN으로 발전
- 표준 기반 자바스크립트 문서화 허브 MDN 시작
- 파편화된 브라우저 지원 문서의 통합된 기준 제공
[2006]
-
jQuery 등장
- John Resig가 jQuery 프로젝트 시작
- DOM 조작, 이벤트 처리, AJAX 등 크로스브라우저 이슈 해결에 큰 기여
- 간결한 API로 폭발적 확산
[2007]
-
아이폰 출시와 Flash 미지원
- Apple iPhone 발표, Safari는 Flash 미지원
- 이는 모바일 환경에서 HTML+JavaScript 기반 콘텐츠로의 전환을 가속화
[2008]
-
Netscape Navigator 공식 종료
- AOL이 Netscape 개발 종료, 1차 브라우저 전쟁 종료
- MS의 IE 독점 → 반독점 소송으로 이어짐
-
JavaScript: The Good Parts 출간
- Crockford의 저서가 자바스크립트를 전문 개발 언어로 재평가하는 계기 제공
-
Google Chrome과 V8 엔진 발표
- Chrome 출시와 함께 V8 JavaScript 엔진 공개
- JIT 컴파일, 가비지 컬렉션 최적화로 성능 대폭 향상
- 이후 Node.js 등 서버 사이드 확장 기반 마련
[2009]
-
CommonJS 등장
- 브라우저 외 환경(서버 등)에서 모듈화된 JS 코드 사용 표준화 시도
- 이는 이후 Node.js 생태계의 모듈 구조 기반이 됨
-
Node.js 프로젝트 시작
- Ryan Dahl이 Node.js 개발 착수
- JavaScript를 서버 환경에서 실행할 수 있게 하며, 풀스택 언어로 확장
-
Oracle의 Sun Microsystems 인수
- Java와 함께 JavaScript 상표권도 Oracle로 이관
- JavaScript 명칭에 대한 상표 이슈 발생
-
Express.js 등장
- Express.js 첫 커밋, Node.js 기반의 웹 프레임워크
- REST API 구축 중심의 미들웨어 구조 제안
-
ECMAScript 5 발표
-
엄격 모드(strict mode),
JSON
지원,Array
메서드 추가 등 현대 JS 기능 기반 정비
-
엄격 모드(strict mode),
-
CoffeeScript 등장
- 간결한 문법, 화살표 함수, 구조 분해 등 ES6 이전의 문법 개선 실험
- 이후 JavaScript 문법 발전에 간접적 영향 끼침
[2010]
-
npm 1.0 출시
- 자바스크립트용 패키지 매니저 npm이 정식 출시되어 코드 공유와 재사용의 표준화 시작
- 현재 3백만 개가 넘는 패키지를 보유한 세계 최대 오픈소스 레지스트리로 성장
-
WebStorm 1.0 출시
- JetBrains에서 최초의 전용 자바스크립트 IDE 출시
- 정적 분석, 오류 탐지, 자동완성, 디버깅 기능을 통합 제공
-
AngularJS & Backbone.js 등장
- SPA 프레임워크 붐의 시작
- Angular는 선언형/의존성 주입 중심, Backbone은 절차형/간결성 중심
- 이 시기부터 프레임워크의 빈번한 등장과 소멸 현상이 나타남 ("Framework churn")
[2011]
-
Node.js의 Windows 포팅
- Joyent와 Microsoft의 협업으로 Node.js가 Windows에서도 동작하게 됨
- libuv 라이브러리 개발 → 비동기 I/O 통합 플랫폼 제공
- 이후 TypeScript, VSCode, Azure 전략 등으로 이어지는 MS의 오픈소스 행보의 시작
[2012]
-
Webpack 등장
- 웹 자산 번들링 도구로서 모듈 시스템을 클라이언트로 확장
- 이후 React, Angular, Vue 등의 핵심 빌드 시스템으로 채택
-
TypeScript 0.8 공개
- Microsoft에서 정적 타입 기반 자바스크립트 슈퍼셋 발표
- 대규모 프로젝트에 적합한 구조 제공, 이후 ES 표준에 영향
[2013]
-
Electron의 전신 Atom Shell 시작
- HTML/CSS/JS로 데스크탑 앱 개발 가능
- Slack, Visual Studio Code 등에서 채택되며 데스크탑 개발 방식 변화
-
asm.js 공개
- C/C++ 코드를 JS로 변환하여 브라우저 내 고성능 계산 가능
- 이후 WebAssembly로 발전
-
MEAN 스택 정의
- MongoDB + Express + Angular + Node.js 조합 명명
- JavaScript 기반 풀스택 개발 방식 확산
-
React 공개
- Facebook에서 내부 사용 후 오픈소스로 공개
- 컴포넌트 기반 UI 개발 패러다임 정착
-
ESLint 개발 시작
- Nicholas C. Zakas에 의해 시작된 확장 가능한 린팅 도구
- 기존 린터들보다 커스터마이징 가능성이 높아 빠르게 확산
-
Gulp 출시
- 구성 중심의 Grunt와 달리 코드 기반 스트리밍 빌드 도구
- 자바스크립트로 빌드 작업을 자동화하는 흐름 형성
[2014]
-
Vue.js 출시
- Evan You가 발표한 점진적 UI 프레임워크
- React의 선언형 UI와 Angular의 템플릿 기능을 절충
-
Express.js 인수
- StrongLoop가 Express.js 인수 → 이후 IBM에 인수됨
- 커뮤니티 독립성 문제 제기로 Koa 등 후속 프레임워크 등장
-
Babel.js 시작 (구 6to5)
- 최신 JS 문법을 구형 브라우저에서도 실행 가능하게 해줌
- 모든 프레임워크의 표준 트랜스파일러로 정착
-
Meteor 1.0 출시
- 실시간, 단일 스택 웹앱 개발 도구로 주목
- 이후 GraphQL, Firebase 등 실시간 기술에 영향을 줌
-
Facebook의 Flow 공개
- 정적 타입 검사 도구로 JS 오류를 사전에 탐지
- 이후 TypeScript의 성장으로 사용률은 감소
-
AWS Lambda 발표
- JavaScript(Node.js) 기반 서버리스 컴퓨팅 도입
- 이벤트 기반 함수 실행을 통해 인프라 관리 없이 백엔드 구현 가능
-
io.js 포크
- Joyent의 느린 Node.js 릴리스에 반발해 커뮤니티에서 io.js 분기
- 이후 2015년 Node.js로 재병합됨
[2015]
-
Jamstack 용어 등장
- JavaScript + API + Markup 조합 강조
- SSR과 SSG 방식이 각광받으며 정적 사이트 생성기 부상
-
Node.js Foundation 설립
- io.js와의 통합을 포함해 커뮤니티 거버넌스 정비
- IBM, Microsoft 등 주요 기업 참여
-
GraphQL 런칭
- 페이스북에서 개발한 API 쿼리 언어
- 선언형 방식, 강타입 설계, 서버 요청 최소화를 특징
-
Redux 출시
- React의 상태관리를 위한 예측 가능한 상태 컨테이너
- 이후 Vue, Angular 등에서도 채택
-
WebAssembly 발표
- 브라우저에서 C/C++ 등의 고성능 코드 실행 가능
- asm.js의 후속으로 웹의 범용 실행 환경으로 자리매김
-
Atom 1.0 출시
- GitHub에서 만든 Electron 기반 해커블 텍스트 에디터
- VSCode에 직접적 영향을 미침
-
ECMAScript 6 (ES2015) 정식 발표
-
import/export
,let/const
,Promise
,fetch
등 대규모 문법 개선 - 현대 자바스크립트의 기반이 되는 버전
-
-
Node.js와 io.js 통합
- Node.js v4.0 발표로 두 프로젝트가 하나로 재통합
- 장기 지원(LTS), 의미있는 버전 정책 확립
[2016]
-
Microsoft, Chakra 엔진 오픈소스화
- Edge 브라우저의 JS 엔진인 Chakra 오픈소스화
- 개발자 커뮤니티 관심 받았으나, 이후 V8 우세에 밀려 중단
-
Leftpad 사건 발생
-
left-pad
모듈 삭제로 인해 대규모 패키지 의존성 붕괴 사태 발생 - npm 정책 변화 계기
-
-
VSCode 1.0 출시
- Electron과 TypeScript 기반 경량 IDE
- 빠른 속도, 확장성, 우수한 JS/TS 지원으로 빠르게 인기
-
ECMAScript 2016 발표
-
**
연산자와array.includes()
등 소규모 업데이트
-
-
Angular2 발표
- AngularJS와는 완전히 다른 TypeScript 기반 컴포넌트 아키텍처
- AOT 컴파일 및 보안 강화로 엔터프라이즈 선택지로 부상
-
Next.js 1.0 출시
- React 기반 서버사이드 렌더링 프레임워크
- SEO와 퍼포먼스를 고려한 풀스택 React 개발 표준화 추진
[2017]
-
Temporal 제안 초기 커밋
-
Date
객체의 문제점 해결을 위한 Temporal API 제안 - 2021년에 ECMAScript 표준에 포함 승인, 현재 일부 환경에서만 지원
-
-
Prettier 1.0 출시
- 일관된 코드 스타일을 자동 적용하는 포매터
- Python의 Black, Rust의 포매터 등장에도 영향
-
ECMAScript 2017 공개
-
async/await
,Object.entries()
,Object.values()
등 현대 JS 기능 도입 -
fetch()
사용의 일반화
-
-
Yarn 출시
- npm의 느림과 충돌을 해결하기 위한 패키지 매니저
-
yarn.lock
, 병렬 설치, 캐시 등 혁신적 기능 도입
-
Cloudflare Workers 출시
- 엣지 컴퓨팅 시대 개막
- 서버리스 코드가 전세계에 분산 실행 가능
[2018]
-
Puppeteer 1.0 출시
- 헤드리스 Chrome 기반 브라우저 자동화 도구
- Node.js 친화적인 API로 Selenium 대비 간결함 제공
-
TensorFlow.js 출시
- 브라우저에서 머신러닝 실행 가능
- WebGL/WebGPU 기반 실시간 AI 앱 구현
-
Smooshgate
-
Array.flatten
명칭 충돌로 인해flat()
으로 변경 - MooTools와의 호환성 문제에서 비롯됨
-
-
Ryan Dahl의 Deno 발표
- Node의 문제점 회고와 함께 Deno 런타임 초기 공개
-
ECMAScript 2018 공개
-
promise.finally()
,async iteration
, 객체 rest/spread 도입
-
[2019]
-
OpenJS Foundation 출범
- Node.js Foundation과 JavaScript Foundation 통합
- 서버/클라이언트 프로젝트 거버넌스 통합
-
Node.js v12: ESM 실험적 지원 시작
-
.mjs
,type: module
등을 통해 ES 모듈 실험 도입
-
-
ECMAScript 2019 공개
-
Object.fromEntries()
,String.prototype.trimStart()
등 추가
-
-
Node.js v13.2: ESM 정식 안정화
[2020]
-
SpaceX Dragon, JS로 우주 진출
- 크롬 기반 터치스크린 인터페이스에 자바스크립트 사용
-
Deno 1.0 출시
- TypeScript 기본 지원, 퍼미션 모델, HTTP import 등 혁신적 접근
-
Adobe Flash 공식 종료
- JS 중심의 웹 멀티미디어 환경 정착
[2022]
-
Deno, TC39 가입
- 자바스크립트 표준화 참여 선언
-
IE11 지원 종료
- 표준 기반 웹 생태계로의 이행 마무리
-
ECMAScript 2022 발표
-
top-level await
, 클래스 정적 블록 등 추가
-
[2023]
-
Bun 1.0 출시
- Zig로 구현된 초고속 Node.js 대체 런타임
- npm 호환, 빌드 도구 통합
[2024]
-
Node.js 마스코트 Rocket Turtle 선정
- 커뮤니티 공모전 통해 최종 캐릭터 확정
-
ECMAScript 2024 공개
-
toWellFormed()
등 Unicode 처리 강화
-
-
JSR 레지스트리 출시
- Deno 팀의 모던 ECMAScript 모듈 전용 레지스트리
- TypeScript, Deno, Bun, Cloudflare Workers와 호환
-
FreeJavaScript 운동 시작
- Oracle의 JavaScript 상표 반환 촉구 캠페인
- Brendan Eich 등 주요 인물 서명
-
Deno 2 출시
- Node 호환성 개선, 광고까지 집행하며 런타임 전쟁 본격화
[2025]
-
TypeScript의 Go 포팅 발표
-
10배 이상 빠른 성능을 목표로
tsgo
프로젝트 진행 중 - TypeScript 7.0부터 공식 채택 예정
-
10배 이상 빠른 성능을 목표로
-
Copilot Chat 오픈소스화 선언
- VSCode를 오픈소스 AI 개발 IDE로 전환하는 Microsoft의 전략 발표
[마무리]
- 자바스크립트는 단순한 스크립트 언어에서 시작해, 웹 프론트엔드·백엔드·머신러닝·우주항공·AI 개발 IDE까지 아우르는 범용 개발 언어로 발전했음
- 오픈소스 커뮤니티, 지속적인 문법 발전, 그리고 런타임 혁신이 그 성장을 이끌었으며, 앞으로도 더 빠르고, 더 똑똑한 도구들과 함께 웹을 넘어 더 넓은 영역으로 확장될 예정임
익스 3 버전은 거진 쓰레기였고. 네비게이터 3이 당시 거의 표준이었는데 익스 4가 나오면서 상황이 뒤집혔죠. 더군다나 익스 4는 윈도우에 기본 설치되어 있었구요.
네비게이터 4가 나오긴 했는 데 상황을 뒤집을 만큼 좋지가 않았었습니다. 그래서 계속 익스의 점유율이 높아 졌구요.
네비게이터가 오픈소스로 전환하면서 모질라 프로젝트 생기고 피닉스 베타 버전이 나왔는 데 그 때 확 뭔가 달라졌다는 걸 사용자들이 느끼기 시작했을 겁니다. 저를 포함해서요. 트레이드 마크 문제 때문에 파이어폭스로 이름을 바꾸고 이 때 부터 파폭이 익스의 제대로 됀 경쟁자로 자리잡게 됩니다.
이름이 피닉스 -> 파이어버드 -> 파이어폭스 이렇게 바뀌었을 겁니다. 파이어버드라는 데이터베이스가 이미 있어서 그랬을 겁니다.