언어의역사

Dart(다트) 언어 역사 - 자바스크립트 대체 실패에서 플러터의 심장이 되기까지

Dart(다트) 언어 역사 - 자바스크립트 대체 실패에서 플러터의 심장이 되기까지

 

Dart(다트)는 구글이 자바스크립트를 대체하겠다며 2011년에 내놓은 프로그래밍 언어입니다. 브라우저 안에 Dart VM을 심겠다는 야심으로 출발했지만 2015년 그 계획이 무산되면서 한동안 "실패한 언어" 취급을 받았고, 이후 플러터(Flutter)라는 예상 밖의 무대를 만나 되살아났습니다. 이 글은 Dart 언어의 역사와 부활 과정을 시간순으로 정리한 기록입니다.

 

 

"Dart는 왜 나왔다가 조용히 사라진 줄 알았지?"
"자바스크립트 죽이겠다더니 결국 자바스크립트로 컴파일한다고?"
"근데 요즘 플러터 하는 사람들은 다 Dart 쓰던데, 그거 같은 언어 맞아?"
"이거 구글이 또 밀다 말고 버리는 거 아냐?"

 

 

개발 언어의 역사를 들여다보면, 실력이나 설계보다 타이밍과 운이 생사를 가르는 경우가 많습니다. Dart가 딱 그런 사례입니다. 언어 자체는 처음부터 완성도가 낮지 않았는데도 목표를 잘못 잡아 거의 죽을 뻔했고, 정작 만든 사람들도 기대하지 않았던 쪽에서 부활했으니까요. 저는 이 흐름이 "기술은 좋은데 왜 안 되지?"를 고민하는 개발자에게 꽤 좋은 교보재라고 봅니다.

이번 글에서는 2011년 등장부터 2015년의 사망 선고, dart2js로 연명하던 시기, 그리고 플러터와 함께 살아난 지금(2026년)까지를 다룹니다. Dart를 써본 적 없는 분이라도 "언어 하나가 어떻게 죽었다 살아나는가"라는 관점으로 읽으면 얻어갈 게 있을 겁니다.

📋 목차

  1. Dart 탄생 배경 - 자바스크립트를 죽이러 온 언어
  2. 창시자 라스 바크 - V8을 만든 사람이 만든 새 언어
  3. Dartium과 크롬 VM의 꿈
  4. 2015년 크롬 VM 무산 - Dart의 사망 선고
  5. dart2js로 연명하던 지옥의 시기
  6. Dart 2.0 조용한 체질 개선 - 타입 시스템 정비
  7. 플러터라는 예상 밖의 구원
  8. Dart 3와 2026년 현재 - WASM과 AI 시대의 다트
  9. Dart가 살아남은 진짜 이유

1. Dart 탄생 배경 - 자바스크립트를 죽이러 온 언어

Dart는 2011년 10월, 덴마크 오르후스에서 열린 GOTO 컨퍼런스에서 공개됐습니다. 당시 구글의 문제의식은 분명했어요. 웹은 점점 애플리케이션에 가까워지는데, 그걸 떠받치는 자바스크립트는 태생이 며칠 만에 급조된 언어라 대규모 개발에 맞지 않는다는 겁니다.

이 야심이 노골적으로 드러난 문서가 2010년에 유출된 이른바 "Dash 메모"였습니다. 자바스크립트는 근본적 결함이 있어 점진적 개선으로는 답이 없고, 아예 새 언어로 갈아엎어야 한다는 내용이었죠. Dart의 초기 코드명이 Dash였던 것도 여기서 나왔습니다. 이름만 봐도 목표가 "개선"이 아니라 "대체"였다는 게 보입니다.

 

 

📌 Dart가 노린 것


단순히 "자바스크립트보다 나은 언어"가 아니라,

브라우저가 자바스크립트 대신 실행하는 표준 언어 자리 그 자체였습니다.

목표가 컸던 만큼 실패했을 때의 낙차도 컸습니다.

 

2. 창시자 라스 바크 - V8을 만든 사람이 만든 새 언어

Dart를 만든 사람이 라스 바크(Lars Bak)와 카스퍼 룬드(Kasper Lund)라는 점은 이 이야기에서 꽤 중요합니다. 라스 바크는 자바의 HotSpot JVM을 만든 핵심 인물이고, 크롬의 자바스크립트 엔진인 V8을 만든 장본인이기도 하거든요.

정리하면 이렇습니다. 자바스크립트를 세상에서 가장 빠르게 돌아가게 만든 엔지니어가, 이번엔 그 자바스크립트를 대체할 언어를 들고 나온 겁니다. 개인적으로는 이 대목이 Dart라는 언어의 자신감과 한계를 동시에 설명해준다고 봅니다. VM과 런타임 성능에 대해 세계 최고 수준으로 아는 사람들이 만들었으니 언어 설계와 실행 속도는 처음부터 탄탄했어요. 하지만 "좋은 언어를 만들면 세상이 갈아탈 것"이라는 기대는, 결국 웹 생태계의 관성 앞에서 무너집니다.

3. Dartium과 크롬 VM의 꿈

구글의 계획은 두 갈래였습니다. 하나는 Dart 코드를 자바스크립트로 변환해 모든 브라우저에서 돌리는 dart2js. 다른 하나는 크롬 안에 Dart VM을 직접 넣어서, 변환 없이 네이티브로 실행하는 방식이었습니다. 후자를 위해 만든 게 Dart VM이 내장된 특수 브라우저 빌드 Dartium이었고요.

구글이 진짜 원한 건 당연히 두 번째였습니다. 크롬에 VM이 들어가면 Dart는 자바스크립트와 대등한, 아니 성능상 우위에 있는 1급 브라우저 언어가 되니까요. 문제는 나머지 브라우저 진영이 이걸 반길 이유가 하나도 없었다는 점입니다. 애플, 모질라, 마이크로소프트가 자기 브라우저에 구글 언어의 VM을 넣어줄 리 없었죠. 실제로 웹킷 진영은 초기에 Dart VM 통합 시도를 거절했습니다.

 

 

💡 웹 표준의 냉정한 원리


브라우저 언어는 한 회사가 잘 만든다고 표준이 되지 않습니다.

모든 브라우저 벤더가 동의해야 하죠.

구글은 크롬 점유율을 무기로 밀어붙이려 했지만,

나머지가 동참하지 않는 순간 "크롬에서만 빠른 언어"는

오히려 웹을 분열시키는 것으로 비쳤습니다.

 

4. 2015년 크롬 VM 무산 - Dart의 사망 선고

2015년 3월, 구글은 크롬에 Dart VM을 넣지 않겠다고 공식 발표합니다. Dart 1.9 무렵의 일이었어요. 초기 설계의 핵심 목표, 그러니까 "네이티브로 실행되는 브라우저 언어"라는 꿈을 스스로 접은 겁니다. 남은 길은 하나, 자바스크립트로 컴파일해서 쓰는 방식뿐이었습니다.

이 시점의 Dart를 향한 시선은 냉랭했습니다. 자바스크립트를 죽이겠다고 나온 언어가 결국 자바스크립트로 변환돼야만 돌아가는 신세가 됐으니까요. 언어 인기 지표에서도 Dart는 순위 밖으로 밀려났습니다. 커뮤니티에서는 "구글이 또 프로젝트 하나 버렸다"는 말이 나왔고, 실제로 그렇게 끝날 뻔했습니다.

 

 

"자바스크립트 대체하겠다던 언어가, 자바스크립트로 컴파일되는 게 유일한 사용법이라니."

 

5. dart2js로 연명하던 지옥의 시기

2015년부터 2018년 사이가 Dart 입장에서 가장 애매한 시기였습니다. 언어는 멀쩡히 살아 있는데 존재 이유가 흐릿했거든요. 자바스크립트로 컴파일해 쓸 거라면, 이미 그 자리엔 타입스크립트라는 강력한 경쟁자가 자리를 잡아가고 있었습니다. 마이크로소프트가 밀고, 자바스크립트와의 호환성을 무기로 삼은 타입스크립트는 "기존 생태계를 버리지 않으면서 개선"이라는, 딱 개발자들이 원하던 카드를 쥐고 있었죠.

반면 Dart는 자바스크립트와 문법도 다르고, 생태계도 따로 꾸려야 했습니다. 대체도 실패했고 보완재로서의 매력도 타입스크립트에 밀렸으니, 이 시기의 Dart는 "왜 이걸 써야 하지?"라는 질문에 마땅한 답을 못 내놓는 상태였습니다. 그럼에도 구글은 Dart를 접지 않았습니다. 이게 나중에 결정적인 차이를 만듭니다.

6. Dart 2.0 조용한 체질 개선 - 타입 시스템 정비

2018년 8월에 나온 Dart 2.0은 세간의 관심을 거의 못 받았지만, 언어 내부적으로는 큰 전환점이었습니다. 이때 사운드 타입 시스템(sound type system)을 도입하면서 타입 안정성을 대폭 끌어올렸어요. 이전 Dart는 런타임 타입 검사에 많이 의존했는데, 2.0부터는 컴파일 시점에 훨씬 강하게 타입을 잡아주는 구조로 바뀝니다.

이게 왜 중요하냐면, 견고한 타입 시스템은 대규모 UI 코드를 안정적으로 다루는 데 필수이기 때문입니다. 당시엔 몰랐겠지만, Dart는 이 정비를 통해 곧 만나게 될 무대에 딱 맞는 몸을 만들어두고 있던 셈입니다. 겉으로는 조용했지만 속으로는 부활을 준비하던 시기였다고 봅니다.

7. 플러터라는 예상 밖의 구원

Dart를 살린 건 브라우저가 아니라 모바일이었습니다. 구글이 크로스 플랫폼 UI 프레임워크 플러터를 만들면서, 그 언어로 Dart를 채택한 겁니다. 하나의 코드로 안드로이드와 iOS 앱을 동시에 만들 수 있다는 플러터의 강점이 개발자들을 끌어모으기 시작했고, 그 관문에 Dart가 서 있었습니다.

흥미로운 건, Dart가 플러터에 잘 맞았던 이유가 우연이 아니라 앞서 다진 기반 덕분이라는 점입니다. 개발 중에는 JIT 컴파일로 빠른 핫 리로드를 지원하고, 배포할 때는 AOT 컴파일로 네이티브 성능을 내는 이중 구조가 UI 개발 사이클과 절묘하게 맞아떨어졌어요. 여기에 2.0에서 다져둔 타입 시스템이 위젯 트리 같은 복잡한 구조를 안정적으로 받쳐줬습니다.

 

 

📌 부활의 역설


Dart는 "자바스크립트 대체"라는 원래 목표로는 완전히 실패했습니다.

그런데 그 목표를 이루려고 갈고닦은 성능과 타입 시스템이,

전혀 다른 영역인 모바일 UI에서 빛을 발했습니다.

목표는 틀렸는데 준비는 옳았던 거죠.

 

8. Dart 3와 2026년 현재 - WASM과 AI 시대의 다트

부활 이후 Dart는 꾸준히 성장했습니다. 2019년 dart2native로 데스크톱 실행 파일 생성을 지원했고, 2023년 Dart 3에서는 records, patterns, class modifiers 같은 현대적 언어 기능과 100% 사운드 널 세이프티를 완성했습니다. 2024년에는 웹어셈블리(WebAssembly) 컴파일까지 지원하기 시작했고요.

2026년 현재 상황을 정리하면 이렇습니다. 구글 I/O 2026에서 발표된 Dart 3.12가 최신 안정 버전이고, private named parameters, 실험 단계의 primary constructors, dot shorthands 같은 문법 개선이 들어갔습니다. 여기에 AI 코딩 에이전트가 자동으로 핫 리로드를 수행하는 Agentic Hot Reload, 그리고 Dart로 AI 앱을 만드는 Genkit Dart 프레임워크가 더해지면서, Dart는 "플러터용 언어"를 넘어 AI 시대 풀스택 언어로 방향을 넓히고 있습니다. 플러터 쪽도 3.44가 최신 안정 버전이고, 4.0 로드맵이 진행 중입니다.

반응형
시기 사건 의미
2011 GOTO 컨퍼런스에서 Dart 공개 자바스크립트 대체 야심의 시작
2013 Dart 1.0 정식 출시 Dartium과 dart2js 병행
2015 크롬 VM 통합 계획 철회 사실상의 사망 선고
2018 Dart 2.0, 사운드 타입 시스템 조용한 체질 개선
2018~ 플러터 부상과 함께 재조명 모바일 무대에서 부활
2023 Dart 3, records·patterns·널 세이프티 현대 언어로 정착
2026 Dart 3.12, WASM·Agentic Hot Reload·Genkit AI 시대 풀스택 언어로 확장

9. Dart가 살아남은 진짜 이유

Dart의 역사를 보면 몇 가지가 눈에 띕니다. 먼저 구글이 실패를 인정하고도 언어를 버리지 않았다는 점입니다. 크롬 VM이 무산됐을 때 프로젝트를 접었다면 Dart는 그대로 사라졌을 겁니다. 대신 목표를 바꿔가며 언어를 계속 다듬었고, 그 인내가 플러터라는 기회를 잡을 토대가 됐습니다.

또 하나는 좋은 기술이 반드시 처음 노린 자리에서 성공하는 건 아니라는 사실입니다. Dart가 준비한 성능과 타입 시스템은 브라우저 전쟁에서는 무용지물이었지만, 모바일 UI라는 다른 전장에서 정확히 필요한 무기가 됐습니다. 기술의 가치와 그 기술이 성공하는 무대는 별개일 수 있다는 이야기입니다.

Dart는 지금도 배우면 쓸모가 있나요?

플러터로 앱을 만들 계획이라면 Dart는 사실상 필수입니다. 플러터 생태계가 계속 커지고 있고, 2026년 기준 Dart는 웹어셈블리 컴파일과 AI 앱 프레임워크(Genkit Dart)까지 지원하며 활용 범위를 넓히고 있어서, 모바일에 국한된 언어라고 보기는 어렵습니다.

Dart와 자바스크립트, 결국 뭐가 다른가요?

Dart는 처음부터 정적 타입과 사운드 타입 시스템을 지향한 언어이고, JIT와 AOT 컴파일을 함께 지원합니다. 웹에서는 자바스크립트나 WASM으로 컴파일되지만, 언어 설계 철학과 대규모 앱을 다루는 방식에서 차이가 큽니다.

Dart가 자바스크립트 대체에 실패한 결정적 계기는 무엇인가요?

2015년 구글이 크롬에 Dart VM을 넣지 않기로 한 결정입니다. 다른 브라우저 벤더들의 동참을 얻지 못한 상황에서, 크롬 전용 언어는 웹 표준이 될 수 없었기 때문입니다.

마무리

Dart 이야기는 기술 자체의 우열보다 방향과 타이밍이 언어의 운명을 얼마나 좌우하는지 보여주는 사례입니다. 자바스크립트를 죽이겠다는 큰 목표로 출발해 그 목표에서는 완패했지만, 포기하지 않은 덕분에 플러터라는 뜻밖의 무대에서 되살아났으니까요.

지금(2026년) 시점에서 보면 Dart는 완전히 자리를 잡은 언어입니다. 다만 이 흐름이 앞으로도 계속될지는 플러터의 위상, 그리고 구글의 지속 투자에 달려 있는 부분이 크다고 봅니다. 확실한 건, 한 번 죽었다 살아난 언어치고 지금의 Dart는 꽤 단단해 보인다는 점입니다.

📚 함께 보면 좋은 글

 

타입스크립트는 왜 만들어졌을까 - 자바스크립트가 커지자 마이크로소프트가 내놓은 답

"자바스크립트는 너무 자유분방해서 탈이야." "이거 실행해봐야 에러가 나는지 알 수 있잖아." "남이 짠 자바스크립트 코드는 대체 뭘 주고받는지 모르겠어." 웹 개발을 오래 하다 보면 자바스크

devwar.tistory.com

 

자바와 자바스크립트 차이는? 10일 만에 만들어진 자바스크립트 역사 이야기

자바(Java)와 자바스크립트(JavaScript)의 차이는 개발 공부를 막 시작한 분들이 가장 많이 헷갈려 하는 부분입니다. "자바랑 자바스크립트랑 같은 거 아니에요?" 제가 13년째 가장 자주 듣는 질문이

devwar.tistory.com

 

파이썬 이름 유래는? 뱀이 아닌 진짜 어원과 역사, 13년 차 개발자의 솔직한 평가

파이썬(Python)이라고 하면 많은 분들이 뱀을 먼저 떠올립니다. 로고에도 뱀 두 마리가 그려져 있으니 그럴 만하죠. 그런데 파이썬이라는 이름은 사실 뱀과 아무 상관이 없습니다. 이 글에서는 파

devwar.tistory.com

 

데이터는 어디에 저장될까 - CPU·메모리·하드디스크로 이해하는 Redis·MySQL·MongoDB

"Redis는 왜 그렇게 빠른가요?""메모리 DB라던데, 그럼 서버 껐다 켜면 데이터가 다 날아가는 거 아니에요?""MySQL이랑 MongoDB는 결국 뭐가 다른 건데요?""세션을 Redis에 저장한다는 말이 무슨 뜻이죠?

devwar.tistory.com

 

Go 언어(Golang)는 왜 태어났을까 - 구글 천재들이 현타 와서 만든 언어

Go 언어(Golang)는 2007년 구글에서 태어난 프로그래밍 언어입니다. C++ 빌드 한 번에 45분이 걸리던 시절, 그 지긋지긋함에 멘탈이 무너진 세 명의 엔지니어가 "기능을 더 얹지 말고 오히려 덜어내자"

devwar.tistory.com

반응형