πŸ› οΈBackend/JavaScript

[JavaScript] μžλ°”μŠ€ν¬λ¦½νŠΈ κ°œλ… 정리: μ™œ 웹에 κΌ­ ν•„μš”ν•œ 언어인가?

junbin2 2025. 7. 17. 15:50

βœ… 1. μžλ°”μŠ€ν¬λ¦½νŠΈ(JavaScript) λž€?

  • μ›Ή νŽ˜μ΄μ§€λ₯Ό λ™μ μœΌλ‘œ λ§Œλ“€κΈ° μœ„ν•΄ μ„€κ³„λœ ν”„λ‘œκ·Έλž˜λ° 언어이닀.
  • 처음 λ§Œλ“€μ–΄μ‘Œμ„ λ‹Ήμ‹œ λΈŒλΌμš°μ €μ—μ„œλ§Œ λ™μž‘ν•˜λŠ” ν΄λΌμ΄μ–ΈνŠΈ μΈ‘ μ–Έμ–΄λ‘œ μ‹œμž‘μ„ ν–ˆμ§€λ§Œ, ν˜„μž¬λŠ” Node.js와 같은 ν™˜κ²½ 덕뢄에 μ„œλ²„ μΈ‘μ—μ„œλ„ μ‚¬μš© κ°€λŠ₯ν•œ λ²”μš© μ–Έμ–΄κ°€ λ˜μ—ˆλ‹€.
  • λ˜ν•œ, μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” μ›Ή λΈŒλΌμš°μ € μ•ˆμ—μ„œ λ™μž‘ν•˜λŠ” 슀크립트 언어라고 λ³Ό 수 μžˆλ‹€.

βœ… 2. 슀크립트 μ–Έμ–΄λž€?

  • 주둜 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λŸ°νƒ€μž„ ν™˜κ²½μ— λͺ…령을 μ „λ‹¬ν•˜κ±°λ‚˜ μžλ™ν™”ν•˜κΈ° μœ„ν•΄ μ„€κ³„λœ κ°„λ‹¨ν•œ λ¬Έλ²•μ˜ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λ₯Ό μ˜λ―Έν•œλ‹€.
  • μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λ˜λŠ” ν”Œλž«νΌ μœ„μ—μ„œ 직접 μ‹€ν–‰λ˜κ±°λ‚˜ ν•΄μ„λ˜μ–΄ λ™μž‘ν•˜λŠ” μ–Έμ–΄λ₯Ό μ˜λ―Έν•œλ‹€.
  • μ‰½κ²Œλ§ν•΄, μžλ°”, C, C++ μ–Έμ–΄λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λ§Œλ“€κΈ° μœ„ν•œ 언어이닀. 즉, 운영체제 μœ„μ—μ„œ λ…λ¦½μ μœΌλ‘œ μ‹€ν–‰λ˜λŠ” μ™„μ „ν•œ ν”„λ‘œκ·Έλž¨μ„ κ°œλ°œμ„ ν•  수 μžˆλ‹€. 반면 슀크립트 μ–Έμ–΄λŠ” 보톡 이미 λ§Œλ“€μ–΄μ§„ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ ν™˜κ²½ λ‚΄λΆ€μ—μ„œ λ™μž‘ν•˜λŠ” μž‘μ€ μ½”λ“œ 쑰각을 μž‘μ„±ν•˜λŠ”λ° 주둜 쓰인닀. μ›Ή λΈŒλΌμš°μ € λ‚΄λΆ€μ—μ„œ λ™μž‘ν•˜λŠ” μžλ°”μŠ€ν¬λ¦½νŠΈκ°€ κ·Έ μ˜ˆμ΄λ‹€.
  • μ •λ¦¬ν•˜λ©΄ 슀크립트 μ–Έμ–΄λŠ” C/C++ λ“±μ˜ μ €μˆ˜μ€€ μ–Έμ–΄λ‘œ κ΅¬ν˜„λœ λŸ°νƒ€μž„ ν™˜κ²½ μœ„μ—μ„œ λ™μž‘ν•˜λ©°, λ³΅μž‘ν•œ κΈ°λŠ₯을 κ°„λ‹¨ν•œ λͺ…λ Ήμ–΄λ‘œ μ‚¬μš©ν•  수 μžˆλ„λ‘ μΆ”μƒν™”λœ κ³ μˆ˜μ€€ ν”„λ‘œκ·Έλž˜λ° 언어이닀."
  • μžλ°”ν¬μŠ€λ¦½νŠΈλ₯Ό μ˜ˆμ‹œλ‘œ λ“€λ©΄, μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ μ½”λ“œλ₯Ό μž‘μ„±ν•œ λ’€ 싀행을 ν•˜λ©΄ λ‚΄λΆ€μ˜ κΈ°κ³„μ–΄λ‘œ 컴파일이 미리 λ˜μ–΄μžˆλŠ” C++ 둜 κ΅¬ν˜„λœ ν•¨μˆ˜κ°€ λ§€μΉ­λ˜μ–΄μ„œ μ‹€ν–‰λ˜λŠ” κ°œλ…μœΌλ‘œ λ³Ό 수 μžˆλ‹€. 즉, μ €μˆ˜μ€€ μ–Έμ–΄κ°€ 싀행이 λœλ‹€κ³  보면 λœλ‹€.

βœ… 3. μžλ°”μŠ€ν¬λ¦½νŠΈ 역사

(1) 1993λ…„ - Mosaic (λͺ¨μžμ΄ν¬) λΈŒλΌμš°μ € 탄생

  • 세계 졜초의 λŒ€μ€‘μ μΈ κ·Έλž˜ν”½ μ›Ή λΈŒλΌμš°μ €
  • λ―Έκ΅­ 일리노이 λŒ€ν•™μ˜ ꡭ립 μŠˆνΌμ»΄ν“¨ν„° μ‘μš© μ—°κ΅¬μ†Œμ—μ„œ λ§Œλ“€μ–΄μ§
  • λ‹Ήμ‹œ λŒ€ν•™μƒμ΄μ—ˆλ˜ Marc Lowell Andreessen 와 그의 λ™λ£Œλ“€μ΄ κ°œλ°œμ„ 함.
  • Mosaic 의 μ„±κ³΅μœΌλ‘œ 웹이 폭발적으둜 μ„±μž₯ν•˜κΈ° μ‹œμž‘ν•˜λ©°, 이λ₯Ό 기반으둜 ν•œ λΈŒλΌμš°μ € νšŒμ‚¬λ“€μ΄ μƒκ²¨λ‚˜κΈ° μ‹œμž‘ν•¨.

(2) 1994λ…„ - Netscape Navigator 탄생

  • λͺ¨μžμ΄ν¬ μ›Ή λΈŒλΌμš°μ €λ₯Ό λ§Œλ“€μ–΄λ‚Έ κ°œλ°œνŒ€μ„ 이끌던 Marc Lowell Andreessen 은 λŒ€ν•™ μ‘Έμ—…κ³Ό λ™μ‹œμ— Netscape νšŒμ‚¬ 섀립
  • 1994λ…„ 12μ›” λͺ¨μžμ΄ν¬λ₯Ό λ§Œλ“  κ²½ν—˜μ„ ν† λŒ€λ‘œ μ’€ 더 UIμš”μ†Œκ°€ 더해진 Netscape Navigator λΈŒλΌμš°μ € μΆœμ‹œ
  • ν•˜μ§€λ§Œ, μ•„μ§κΉŒμ§€λŠ” 정적인 μ›Ή μ‚¬μ΄νŠΈ μ˜€μŒ.

(3) 1995λ…„ 초 - Netscape 브랜던 아이크 고용

  • 초기 μ›Ή νŽ˜μ΄μ§€λŠ” 정적인 HTML λ¬Έμ„œμ— λΆˆκ³Όν–ˆλŠ”λ°, μ‚¬μš©μžκ°€ λŠ˜μ–΄ λ‚ μˆ˜λ‘ λ™μ μœΌλ‘œ λ™μž‘ν•˜λŠ” 슀크립트 μ–Έμ–΄κ°€ ν•„μš”ν•΄μ‘ŒμŒ.
  • Marc Lowell Andreessen λŠ” 동적인 μ›Ή μ‚¬μ΄νŠΈλ₯Ό λ§Œλ“€κ³ μž ν•΄μ„œ, μŠ€ν¬λ¦½νŒ… μ–Έμ–΄λ₯Ό κ°œλ°œμ„ ν•˜κ²Œ 됨.

(4) 1995λ…„ 5μ›” ~ 말 - JavaScript 탄생

  • 브렌던 아이크(Brendan Eich) μ‚¬λžŒκ³Ό Netscape κ°€ ν•©λ™ν•΄μ„œ Mocha λΌλŠ” 슀크립트 μ–Έμ–΄λ₯Ό 단 10μΌλ§Œμ— 완성을 ν•˜κ²Œ 됨.
  • 이 Mocha λŠ” 6μ›” LiveScript 둜 이름이 λ°”λ€Œμ—ˆλ‹€κ°€ μ΅œμ’…μ μœΌλ‘œ 1995λ…„ 말에 JavaScript 둜 변경이 λ˜μ—ˆμŒ.
  • μ΄μœ λŠ”, λ‹Ήμ‹œ μžλ°” μ–Έμ–΄κ°€ 큰 인기λ₯Ό 끌고 μžˆμ—ˆκΈ° λ•Œλ¬Έμ—, λ§ˆμΌ€νŒ… 효과λ₯Ό μœ„ν•΄ 이름을 λ°”κΎΈκ²Œ λ˜μ—ˆμŒ.
  • μΆ”ν›„ LiveScript(ν›„μ˜ JavaScript) 인터프리터λ₯Ό λ‚΄μž₯ν•œ Netscape Navigator 2.0 이 μΆœμ‹œλ¨.
  • 같은해 λ§ˆμ΄ν¬λ‘œμ†Œν”„νŠΈκ°€ λ„·μŠ€μΌ€μ΄ν”„μ˜ μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό λ¦¬λ²„μŠ€ μ—”μ§€λ‹ˆμ–΄λ§ν•˜μ—¬ JScript κ°œλ°œμ„ν•΄ 인터넷 μ΅μŠ€ν”Œλ‘œμ–΄ 3에 νƒ‘μž¬ν•˜μ—¬ 배포λ₯Ό μ‹œμž‘ν•¨. 이 κ³Όμ •μœΌλ‘œ 인해 λΈŒλΌμš°μ €λ³„ μžλ°”μŠ€ν¬λ¦½νŠΈ κ΅¬ν˜„μ΄ 달라 μ›Ή κ°œλ°œμžλ“€μ€ ν˜Έν™˜μ„± λ¬Έμ œμ— μ§λ©΄ν•˜κ²Œ 됨.

(5) 1996λ…„ - 슀크립트 μ–Έμ–΄ μ›Ή ν‘œμ€€ 문제

  • λ„·μŠ€μΌ€μ΄ν”„μ™€ λ§ˆμ΄ν¬λ‘œμ†Œν”„νŠΈκ°€ 각자 λ…μžμ μΈ 슀크립트 μ–Έμ–΄ κ΅¬ν˜„μœΌλ‘œ μ›Ή ν‘œμ€€ λ¬Έμ œκ°€ 심화 됨.

(6) 1997λ…„ ~ 1999λ…„ - ν‘œμ€€ν™” μ œμ•ˆ 및 ν‘œμ€€ν™”

  • 1997λ…„ 6μ›”: λ„·μŠ€μΌ€μ΄ν”„κ°€ ECMA 인터내셔널(ꡭ제 ν‘œμ€€ν™” 기ꡬ)에 JavaScript ν‘œμ€€ν™”λ₯Ό μ œμ•ˆν•¨.
  • 1997λ…„ 7μ›”: ECMAScript 1판(ECMA-262 제1판) 곡식 λ°œν‘œ, λ³€μˆ˜, ν•¨μˆ˜, νƒ€μž…, 문법 λ“± κΈ°λ³Έ μ–Έμ–΄ 사양을 κ·œμ •ν•¨.
  • 1999λ…„: ECMAScript 3판 λ°œν‘œ, 였λ₯˜ 처리, μ •κ·œν‘œν˜„μ‹, μ˜ˆμ™Έ 처리 λ“± ν˜„μž¬ μžλ°”μŠ€ν¬λ¦½ν‹” 핡심 κΈ°λŠ₯ λ‹€μˆ˜ 포함

(7) 2000λ…„λŒ€ 초 - λ§ˆμ΄ν¬λ‘œμ†Œν”„νŠΈ ECMAScript ν‘œμ€€ν™” μ°Έμ—¬ 쀑단

  • 인터넷 μ΅μŠ€ν”Œλ‘œμ–΄ 점유율 κΈ‰μƒμŠΉ(95% 이상)ν•˜λ©° 사싀상 독점 체제λ₯Ό κ΅¬μΆ•ν•˜κ²Œ 됨.
  • λ§ˆμ΄ν¬λ‘œμ†Œν”„νŠΈλŠ” ECMAScript ν‘œμ€€ν™” μ°Έμ—¬λ₯Ό μ€‘λ‹¨ν•˜κ³  λ…μžμ μΈ 기술 μ μš©μ„ μ‹œλ„ν•¨.

(8) 2002λ…„ ~ 2004λ…„ - Firefox 탄생 및 ν‘œμ€€ν™” μ‹œλ„

  • λͺ¨μ§ˆλΌ μž¬λ‹¨ μΆœλ²”, Firefox 개발 착수
  • Firefox 1.0 μΆœμ‹œ
  • λͺ¨μ§ˆλΌλŠ” Adobe의 ActionScript 3와 Tamarin 엔진을 ECMA 에 ν‘œμ€€ν™” μ œμ•ˆ. κ·ΈλŸ¬λ‚˜ κΈ°μ‘΄ ECMAScript μ™€μ˜ ν˜Έν™˜μ„± 문제둜 ν‘œμ€€ν™”κ°€ 무산이 λ˜μ—ˆμŒ.

(9) 2005λ…„ - Ajax 기술 뢀상

  • Ajax 기술 λΆ€μƒμœΌλ‘œ μ›Ή νŽ˜μ΄μ§€ λ‚΄ 동적 κΈ°λŠ₯이 급증함.

(10) 2006λ…„ ~ 2007λ…„ - μžλ°”μŠ€ν¬λ¦½νŠΈ ν”„λ ˆμž„μ›Œν¬ λ“±μž₯

  • JQuery, Dogo, MooTools λ“± λ‹€μ–‘ν•œ μžλ°”μŠ€ν¬λ¦½νŠΈ λΌμ΄λΈŒλŸ¬λ¦¬μ™€ ν”„λ ˆμž„μ›Œν¬κ°€ μΆœν˜„μ΄ 됨.
  • 각 λΈŒλΌμš°μ € κ°„ μžλ°”μŠ€ν¬λ¦½νŠΈ κ΅¬ν˜„ 차이와 DOM μ‘°μž‘ 방식 차이λ₯Ό 보완해 개발 νŽΈμ˜μ„±μ΄ ν–₯상이 됨.

(11) 2008λ…„ - 크둬 λΈŒλΌμš°μ € 탄생

  • ꡬ글 크둬 λΈŒλΌμš°μ € 곡식 μΆœμ‹œ
  • V8 JavaScript μ—”μ§„ λ„μž…, JIT(Just-In-Time) 컴파일러 νƒ‘μž¬λ‘œ μ„±λŠ₯ ν˜μ‹ 
  • μ΄λŸ¬ν•œ ν˜μ‹ μ„ 보고 λ‹€μ–‘ν•œ λΈŒλΌμš°μ € νšŒμ‚¬λ“€μ΄ κΈ°μˆ λ“€μ˜ κ΄€ν•΄ μ„œλ‘œ 영ν–₯을 μ£Όκ³  λ°›μœΌλ©° μ›Ή λ°œμ „μ„ 촉진함.

(12) 2008λ…„ 7μ›” ~ 2009λ…„ 12μ›” - ECMAScript ν‘œμ€€ν™” μž¬μ‹œλ„

  • 2008λ…„ 7μ›”: μ£Όμš” λΈŒλΌμš°μ € 업체듀이 ECMAScript ν‘œμ€€ κ°œμ„  및 톡일 λ…Όμ˜λ₯Ό μ‹œμž‘ν•¨.
  • 2009λ…„ 12μ›”: ECMAScript 5(ES5) λ°œν‘œ, 엄격 λͺ¨λ“œ(static mode), JSON 지원, Array λ©”μ„œλ“œ μΆ”κ°€ λ“± λ§Žμ€ κΈ°λŠ₯ κ°œμ„  포함

(13) 이후뢀터 ν˜„μž¬κΉŒμ§€

  •  Node.js λ“±μž₯이 되며, λŸ°νƒ€μž„ ν™˜κ²½μœΌλ‘œ μžλ°”μŠ€ν¬λ¦½νŠΈκ°€ λΉ μ§€κ²Œ 되며 μƒνƒœκ³„κ°€ ν™•μž₯이 λ˜μ—ˆμŒ.
  • ECMAScript 이 ν˜„μž¬κΉŒμ§€ 버전 μ—…λ°μ΄νŠΈκ°€ 진행이 되고 있음.
  • JavaScript λŠ” ECMAScript ν‘œμ€€μ„ κ΅¬ν˜„ν•œ κ΅¬ν˜„μ²΄λ‘œ 널리 μ‚¬μš©μ΄ 되고 있으며, ν˜„μž¬λŠ” 사싀상 JavaScript κ°€ ν‘œμ€€ κ΅¬ν˜„μ²΄μ΄λ‹€.
  • μ΄μœ λŠ”, λ„·μŠ€μΌ€μ΄ν”„μ‚¬μ˜ JavaScript λ₯Ό ν‘œμ€€μœΌλ‘œ ECMAScriptκ°€ λ§Œλ“€μ–΄μ‘ŒκΈ° λ•Œλ¬Έ