올해 자바스크립트 30주년을 맞아 Deno가 그동안의 역사를 간략히 요약했다.
1994
- Netscape Navigator 1.0 출시 (12월)
- 이전 브라우저들보다 빠르고 GUI를 갖춘 점이 인기 요인
1995
- Brendan Eich가 10일 만에 자바스크립트 초안 개발 (5월)
- 당시 인기 있던 Java와 유사한 문법을 갖춘 스크립트 언어 요청에 따라 개발
- 이름은 마케팅 목적상 JavaScript로 결정
- Netscape와 Sun이 12월에 자바스크립트를 "웹을 위한 경량 객체지향 스크립팅 언어"로 발표
- 28개 기술 기업들의 지지를 받음
1996
- Microsoft가 Internet Explorer 3에 JScript 탑재 (3월)
- JScript는 ActiveX와 연동되어 Excel 같은 응용프로그램을 제어 가능
- Netscape Navigator 2.0에서 JavaScript 1.0 정식 데뷔 (같은 해 3월)
- DOM(Document Object Model) 개념이 이 시점에서 시작
1997
- Netscape가 자바스크립트를 ECMA International에 표준화 제안 (6월)
- Microsoft의 JScript와의 호환 문제 해결 목적
- ECMA-262 명세 작성, 명칭은 ECMAScript로 지정
- TC39 위원회 구성되어 언어 발전 관리 시작
1998
- Netscape가 소스코드 오픈 (1월, Microsoft의 브라우저 시장 독점에 대응)
- 프로젝트 명칭은 "Mozilla"로, 이후 Firefox, Rust 등 다양한 오픈소스 성과로 이어짐
- ECMAScript 2 정식 발표 (9월)
- 새로운 기능은 없었으나 명세의 일관성 및 문서화가 주요 목표
1999
- IE5에서 XMLHttpRequest 도입 (3월)
- 이는 이후 AJAX 기술의 기반이 됨
- JavaScript 문서화를 위한 JSDoc 도입 (4월)
- 자바 기반 Javadoc의 영향을 받았으며 현재도 문서 생성 도구로 사용
- ECMAScript 3 정식 발표 (12월)
- do-while, 정규표현식, 문자열 메서드, 예외처리 등 추가
- 이후 10년 이상 웹 표준 자바스크립트의 사실상 기준으로 사용
2001
- 최초의 JSON 메시지 전송
- 웹 페이지 내 스크립트에서
{ to, do, text } 형태의 객체 구조 사용
- 자바스크립트 기반의 경량 메시지 포맷으로, 이후 웹 API 통신의 표준이 됨
2002
- Douglas Crockford가 정적 문법 검사 도구 JSLint 발표
- 자바스크립트 코드 품질을 높이고, 이후 그의 저서 JavaScript: The Good Parts로 이어짐
- Firefox의 전신 Phoenix 0.1 출시
- Mozilla 커뮤니티가 경량 브라우저 개발
- 탭 브라우징, 팝업 차단 등 혁신적 기능 제공
2003
- Apple의 Safari와 WebKit 발표
- Safari 브라우저와 WebKit 엔진 도입으로 Mac의 Microsoft 종속성 탈피
- 이후 iPhone에서 Mobile Safari의 기반이 됨
2004
- Gmail의 AJAX 기반 인터페이스로 새 시대의 웹앱 UX 기준 제시
- 페이지 전체 리로드 없이 서버와 데이터 교환 가능
- Web 2.0 시대 개막
2005
- Jesse James Garrett가 "AJAX"라는 개념 명문화
- JavaScript + XML 조합을 통해 비동기 서버 통신 구조 정립
- Mozilla DevMo 출범 → MDN으로 발전
- 표준 기반 자바스크립트 문서화 허브 MDN 시작
2006
- John Resig가 jQuery 프로젝트 시작
- DOM 조작, 이벤트 처리, AJAX 등 크로스브라우저 이슈 해결
- 간결한 API로 폭발적 확산
2007
- Apple iPhone 발표, Safari는 Flash 미지원
- 모바일 환경에서 HTML+JavaScript 기반 콘텐츠로의 전환 가속화
2008
- AOL이 Netscape 개발 종료 (1차 브라우저 전쟁 종료)
- MS의 IE 독점 → 반독점 소송으로 이어짐
- Crockford의 저서 JavaScript: The Good Parts 출간
- 자바스크립트를 전문 개발 언어로 재평가하는 계기 제공
- Google Chrome과 V8 엔진 발표
- Chrome 출시와 함께 V8 JavaScript 엔진 공개
- JIT 컴파일, 가비지 컬렉션 최적화로 성능 대폭 향상
- 이후 Node.js 등 서버 사이드 확장 기반 마련
2009
- CommonJS 등장
- 브라우저 외 환경(서버 등)에서 모듈화된 JS 코드 사용 표준화 시도
- 이는 이후 Node.js 생태계의 모듈 구조 기반이 됨
- Ryan Dahl이 Node.js 개발 착수
- JavaScript를 서버 환경에서 실행할 수 있게 하며 풀스택 언어로 확장
- Oracle의 Sun Microsystems 인수
- Java와 함께 JavaScript 상표권도 Oracle로 이관
- JavaScript 명칭에 대한 상표 이슈 발생
- Express.js 첫 커밋
- Node.js 기반의 웹 프레임워크, REST API 구축 중심의 미들웨어 구조
- ECMAScript 5 정식 발표
- 엄격 모드(strict mode), JSON 지원, Array 메서드 추가 등
- 현대 JS 기능 기반 정비
- CoffeeScript 등장
- 간결한 문법, 화살표 함수, 구조 분해 등 ES6 이전의 문법 개선 실험
- 이후 JavaScript 문법 발전에 간접적 영향
2010
- npm 1.0 출시
- 자바스크립트용 패키지 매니저, 코드 공유와 재사용의 표준화 시작
- 현재 3백만 개가 넘는 패키지를 보유한 세계 최대 오픈소스 레지스트리로 성장
- JetBrains에서 최초의 전용 자바스크립트 IDE WebStorm 1.0 출시
- 정적 분석, 오류 탐지, 자동완성, 디버깅 기능 통합 제공
- AngularJS & Backbone.js 등장
- SPA 프레임워크 붐의 시작
- Angular는 선언형/의존성 주입, Backbone은 절차형/간결성 중심
- 이 시기부터 프레임워크의 빈번한 등장과 소멸 현상("Framework churn")
2011
- Joyent와 Microsoft의 협업으로 Node.js가 Windows에서도 동작
- libuv 라이브러리 개발 → 비동기 I/O 통합 플랫폼
- 이후 TypeScript, VSCode, Azure 전략 등으로 이어지는 MS의 오픈소스 행보의 시작
2012
- Webpack 등장
- 웹 자산 번들링 도구로서 모듈 시스템을 클라이언트로 확장
- 이후 React, Angular, Vue 등의 핵심 빌드 시스템으로 채택
- Microsoft에서 TypeScript 0.8 공개
- 정적 타입 기반 자바스크립트 슈퍼셋
- 대규모 프로젝트에 적합한 구조 제공
2013
- Atom Shell(Electron의 전신) 시작
- HTML/CSS/JS로 데스크탑 앱 개발 가능
- Slack, Visual Studio Code 등에서 채택
- asm.js 공개
- C/C++ 코드를 JS로 변환하여 브라우저 내 고성능 계산 가능
- 이후 WebAssembly로 발전
- MEAN 스택 정의
- MongoDB + Express + Angular + Node.js 조합 명명
- JavaScript 기반 풀스택 개발 방식 확산
- Facebook에서 React 공개
- 내부 사용 후 오픈소스로 공개
- 컴포넌트 기반 UI 개발 패러다임 정착
- Nicholas C. Zakas에 의해 ESLint 개발 시작
- 확장 가능한 린팅 도구
- 기존 린터들보다 커스터마이징 가능성이 높아 빠르게 확산
- Gulp 출시
- 구성 중심의 Grunt와 달리 코드 기반 스트리밍 빌드 도구
- 자바스크립트로 빌드 작업을 자동화하는 흐름 형성
2014
- Evan You가 Vue.js 출시
- 점진적 UI 프레임워크
- React의 선언형 UI와 Angular의 템플릿 기능을 절충
- 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 등 주요 기업 참여
- Facebook에서 GraphQL 런칭
- API 쿼리 언어, 선언형 방식, 강타입 설계, 서버 요청 최소화를 특징
- Redux 출시
- React의 상태관리를 위한 예측 가능한 상태 컨테이너
- 이후 Vue, Angular 등에서도 채택
- WebAssembly 발표
- 브라우저에서 C/C++ 등의 고성능 코드 실행 가능
- asm.js의 후속으로 웹의 범용 실행 환경으로 자리매김
- GitHub에서 Atom 1.0 출시
- Electron 기반 해커블 텍스트 에디터
- VSCode에 직접적 영향을 미침
- ECMAScript 6 (ES2015) 정식 발표
- import/export, let/const, Promise, fetch 등 대규모 문법 개선
- 현대 자바스크립트의 기반이 되는 버전
- Node.js v4.0 발표로 Node.js와 io.js 통합
- 장기 지원(LTS), 의미있는 버전 정책 확립
2016
- Microsoft가 Edge 브라우저의 JS 엔진인 Chakra 오픈소스화
- 개발자 커뮤니티 관심을 받았으나 이후 V8 우세에 밀려 중단
- left-pad 모듈 삭제로 인한 대규모 패키지 의존성 붕괴 사태 (Leftpad 사건)
- npm 정책 변화 계기
- Microsoft에서 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에 JavaScript 사용
- 크롬 기반 터치스크린 인터페이스에 자바스크립트 사용
- 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 처리 강화
- Deno 팀의 JSR 레지스트리 출시
- 모던 ECMAScript 모듈 전용 레지스트리
- TypeScript, Deno, Bun, Cloudflare Workers와 호환
- FreeJavaScript 운동 시작
- Oracle의 JavaScript 상표 반환 촉구 캠페인
- Brendan Eich 등 주요 인물 서명
- Deno 2 출시
- Node 호환성 개선, 광고까지 집행하며 런타임 전쟁 본격화
2025
- TypeScript의 Go 포팅 발표
- 10배 이상 빠른 성능을 목표로 tsgo 프로젝트 진행 중
- TypeScript 7.0부터 공식 채택 예정
- Copilot Chat 오픈소스화 선언
- VSCode를 오픈소스 AI 개발 IDE로 전환하는 Microsoft의 전략 발표