๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“‚ Language/JavaScript

์•Œ์•„๋‘๋ฉด ์žฌ๋ฏธ์žˆ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์—ญ์‚ฌ

by Dev. Ella 2023. 9. 10.
์•„๋ž˜ ๋‚ด์šฉ์€ ๋“œ๋ฆผ์ฝ”๋”ฉ: ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์—ญ์‚ฌ์™€ ํ˜„์žฌ ๊ทธ๋ฆฌ๊ณ  ๋ฏธ๋ž˜ ์˜์ƒ์„ ์ฐธ๊ณ ํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ์œ ์ตํ•œ ๋‚ด์šฉ ์ „ํ•ด์ฃผ์‹  ์—˜๋ฆฌ ๋‹˜๊ป˜ ๊ฐ์‚ฌ๋ฅผ ํ‘œํ•˜๋ฉฐ, ์˜์ƒ์„ ํ†ตํ•ด ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ์•„๋ž˜์— ์ •๋ฆฌํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค.

 

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์—ญ์‚ฌ๋ฅผ ์™œ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๊นŒ

์ƒˆ๋กœ์šด ์–ธ์–ด๋ฅผ ๋ฐฐ์šธ ๋•Œ ๋ฐ”๋กœ ๋ฌธ๋ฒ• ๊ณต๋ถ€์— ์ „๋…ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๊ทธ ์–ธ์–ด์˜ ํƒ„์ƒ ๋ฐฐ๊ฒฝ์— ๋Œ€ํ•ด ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค๊ณ  ํ•œ๋‹ค.

๊ณผ๊ฑฐ๋ฅผ ์•Œ์•„์•ผ ํ˜„์žฌ๊ฐ€ ๋ณด์ด๊ณ , ๋ฏธ๋ž˜๋ฅผ ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•˜์ง€ ์•Š๋‚˜. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์–ด๋–ป๊ฒŒ ํƒ„์ƒํ–ˆ์œผ๋ฉฐ ์–ด๋–ค ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์กŒ๊ณ , ์ด ์–ธ์–ด๋ฅผ ๋‹ค๋ฃฐ์ค„ ์•Œ๋ฉด ์–ด๋–ค ๋ถ„์•ผ์— ๋” ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด ์•„๋‹๊นŒ ์‹ถ๋‹ค. 

๋ฌธ๋ฒ• ๊ณต๋ถ€๋ณด๋‹ค๋Š” ์ƒ๋Œ€์ ์œผ๋กœ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์„ ์ˆ˜ ์žˆ์ง€๋งŒ, ์•Œ์•„๋‘๋ฉด ์žฌ๋ฏธ์žˆ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์—ญ์‚ฌ์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด ๋ณด์ž.

 

 

ํƒœ์ดˆ์— ๋ชจ์ž์ดํฌ๋ผ๋Š” ๊ฒŒ ์žˆ์—ˆ๋‹จ๋‹ค

1993๋…„, ์ง‘์ง‘๋งˆ๋‹ค ์ปดํ“จํ„ฐ๊ฐ€ ์—†์—ˆ๋˜ ๊ทธ ์‹œ์ ˆ์—๋Š” ์ปดํ“จํ„ฐ๋ฅผ ์ž˜ ๋ชจ๋ฅด๋Š” ์‚ฌ๋žŒ๋“ค๋„ ์‰ฝ๊ฒŒ ์“ธ ์ˆ˜ ์žˆ๋Š” UI ์š”์†Œ๊ฐ€ ๋”ํ•ด์ง„ MOSAIC ์›น๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์‹œ์žฅ์— ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค.

 

@researchgate

์ด MOSAIC ์›น๋ธŒ๋ผ์šฐ์ €์˜ ๊ฐœ๋ฐœ ํŒ€์„ ์ด๋Œ๋˜ Marc Andreessen์€ ๋Œ€ํ•™ ์กธ์—… ํ›„, Netscape๋ผ๋Š” ํšŒ์‚ฌ๋ฅผ ์„ค๋ฆฝํ•˜์—ฌ, ์ด์ „์— ๋งŒ๋“ค์—ˆ๋˜ MOSAIC ์›น๋ธŒ๋ผ์šฐ์ €์˜ ๊ฒฝํ—˜์„ ํ† ๋Œ€๋กœ ์กฐ๊ธˆ ๋” UI ์š”์†Œ๊ฐ€ ๋”ํ•ด์ง„ Netscape Navigator๋ฅผ ์‹œ์žฅ์— ๋‚ด๋†“์•˜๋‹ค.

 

@arnnet

์ด ๋‹น์‹œ์—๋Š” HTML๊ณผ CSS๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ์›น ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๋‹จ, HTML(Hyper Text Markup Language)์˜ ํ…์ŠคํŠธ์— ๋งํฌ๋ฅผ ๊ฑธ์–ด์„œ ํŽ˜์ด์ง€์™€ ํŽ˜์ด์ง€ ์‚ฌ์ด์— ์ด๋™๋งŒ ๊ฐ€๋Šฅํ•œ ์ •์ ์ธ ์›น ์‚ฌ์ดํŠธ๋งŒ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ–ˆ๋‹ค. ์ด Netscape Navigator๋Š” ์‹œ์žฅ์—์„œ 80%์˜ ์ ์œ ์œจ์„ ์ž๋ž‘ํ•˜๋ฉด์„œ ๊ธ‰๊ฒฉํžˆ ์„ฑ์žฅํ•ด ๋‚˜๊ฐ„๋‹ค.

 

@arnnet

๊ทธ๋ฆฌ๊ณ  Marc Andreessen๋Š” ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ๋™์ ์ธ ์›น์‚ฌ์ดํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์„๊นŒ. ์ฆ‰, ์‚ฌ์šฉ์ž๋“ค์ด ์›น์‚ฌ์ดํŠธ๋ฅผ ๋” ๋‹ค์ด๋‚˜๋ฏนํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ๊ณ ๋ฏผํ•œ๋‹ค. ์ด์— ๊ทธ๋Š” ์Šคํฌ๋ฆฝํŒ… ์–ธ์–ด๋ฅผ ์ถ”๊ฐ€ํ•˜์ž๋Š” ๊ฒฐ๋ก ์„ ๋‚ด๋ฆฐ๋‹ค. ์‚ฌ์šฉ์ž๋“ค์—๊ฒŒ ๋ณด์—ฌ์ฃผ๊ณ  ์žˆ๋Š” ์›น์‚ฌ์ดํŠธ ์•ˆ์—์„œ DOM ์š”์†Œ๋“ค์„ ์กฐ์ž‘ํ•˜๋ฉด์„œ ๋‹ค์ด๋‚˜๋ฏนํ•œ ์›น์‚ฌ์ดํŠธ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์ƒˆ๋กœ์šด ์–ธ์–ด๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ๋กœ ๊ฒฐ์‹ฌํ•œ๋‹ค.

 

 

์–ธ์–ด๋ฅผ 10์ผ ์•ˆ์— ๊ฐœ๋ฐœํ•˜๋ผ๊ณ ?

์ฒ˜์Œ์œผ๋กœ ๊ณ ๋ ค๋˜์—ˆ๋˜ ๊ฒƒ์€ ๊ทธ๋•Œ ํ•œ์ฐธ ๋œจ๊ณ  ์žˆ์—ˆ๋˜ Sun Microsystems์˜ Java ์–ธ์–ด์˜€๋‹ค. ํ•˜์ง€๋งŒ ์›น์‚ฌ์ดํŠธ๋ฅผ ์ฃผ๋กœ ๊ฐœ๋ฐœํ•˜๋˜ ๊ฐœ๋ฐœ์ž๋“ค์ด ์“ฐ๊ธฐ์—๋Š” ๋‹ค์†Œ ๋ฌด๊ฒ๊ณ  ์–ด๋ ค์šด ์–ธ์–ด์˜€๊ธฐ ๋•Œ๋ฌธ์— ๊ณ ๋ ค ๋Œ€์ƒ์—์„œ ์ œ์™ธ๋˜์—ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ๋กœ ์‹œ๋„ํ•œ ๊ฒƒ์€ Brendan Eich ๋ผ๋Š” ์‚ฌ๋žŒ์„ ์Šค์นด์šฐํŠธํ•ด์„œ ๊ธฐ์กด์— ์กด์žฌํ–ˆ๋˜ scheme script ์–ธ์–ด๋ฅผ ์กฐ๊ธˆ ๋ณ€ํ˜•ํ•˜๋Š” ์‹œ๋„์˜€๋‹ค. ๊ทธ๋ฆฌํ•˜์—ฌ ์ด๋“ค์€ ๋ณธ์ธ๋“ค๋งŒ์˜ ์ƒˆ๋กœ์šด ์–ธ์–ด๋ฅผ ๋งŒ๋“ค๋ฉด์„œ๋„, ๊ธฐ์กด scheme script ์–ธ์–ด์˜ ์ปจ์…‰์„ ์œ ์ง€ํ•˜๊ณ  ๋ฌธ๋ฒ•์€ Java์Šค๋Ÿฝ๊ฒŒ ๋งŒ๋“ค๊ธฐ๋กœ ํ–ˆ๋‹ค.

 

@ninyachristina

๊ฒŒ๋‹ค๊ฐ€ ๋ฌด๋ ค ์ด ์–ธ์–ด๋ฅผ ๋ฌด๋ ค 10์ผ ์•ˆ์— ๋งŒ๋“ค๊ธฐ๋กœ ํ•œ๋‹ค. ์ด๊ฒŒ ์–ด๋–ป๊ฒŒ ๊ฐ€๋Šฅํ–ˆ์„๊นŒ? ๊ทธ๋Š” ์ฒœ์žฌ๋‹ค.. ๋†€๋ž๊ฒŒ๋„ ์ •๋ง 10์ผ ์•ˆ์— ํ”„๋กœํ† ํƒ€์ž…์„ ๋ฒ ์ด์Šค๋กœ ํ•œ ์œ ์—ฐ์„ฑ ์ฉŒ๋Š” ์–ธ์–ด๋ฅผ ๊ฐœ๋ฐœํ•œ๋‹ค.

 

 

๋ชจ์นด๋Š” ์ปคํ”ผ ์•„๋‹ˆ๊ณ  ์–ธ์–ด์ž…๋‹ˆ๋‹ค

1994๋…„ 9์›”, ๋‚ด๋ถ€์ ์œผ๋กœ๋Š” Mocha ๋ผ๊ณ  ๋ถˆ๋ ธ๋˜ ์ƒˆ๋กœ์šด ์–ธ์–ด๊ฐ€ ํƒ„์ƒํ•˜๊ฒŒ ๋œ๋‹ค. ์ด๊ฒƒ์ด ์ถ”ํ›„ LiveScript๋กœ ์ด๋ฆ„์ด ๋ฐ”๋€Œ๊ฒŒ ๋˜๊ณ , Netscape Navigator๋Š” LiveScript๋ฅผ ์ดํ•ดํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” LiveScript ์—”์ง„ ์ฆ‰, Interpreter๊ฐ€ ํฌํ•จ์ด ๋˜์–ด์„œ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ถœ์‹œ๋œ๋‹ค.

 

 

์ด๋Š” ์ด์ œ ์›น ๊ฐœ๋ฐœ์ž๋“ค์ด LiveScript๋ฅผ ์ด์šฉํ•ด ์›น ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค๋ฉด Netscape Navigator ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๊ทธ ์–ธ์–ด๋ฅผ ์ดํ•ดํ•˜๋ฉด์„œ ๊ทธ ์–ธ์–ด๊ฐ€ ์‹คํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒƒ์— ์•Œ๋งž๊ฒŒ DOM ์š”์†Œ๋“ค์„ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ด์ง€๊ฒŒ ๋œ๋‹ค๋Š” ์˜๋ฏธ์ด๊ธฐ๋„ ํ–ˆ๋‹ค.

 

 

์ž๋ฐ”๋ž‘ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ž‘ ๊ฐ™์€๊ฑฐ ์•„๋ƒ?

๊ทธ๋ฆฌ๊ณ  ๊ทธ ๋‹น์‹œ์— Java์˜ ์ธ๊ธฐ๊ฐ€ ์น˜์†Ÿ๊ณ  ์žˆ์—ˆ๋Š”๋ฐ Netscape์‚ฌ๋Š” ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด Java์— ์ธ๊ธฐ์˜ ์‚ด์ง ์–นํ˜€์„œ ์ž˜ ์˜ฌ๋ผํƒˆ ์ˆ˜ ์žˆ์„๊นŒ ๊ณ ๋ฏผํ•˜๋ฉด์„œ LiveScript์˜ ์ด๋ฆ„์„ JavaScript๋กœ ๋ณ€๊ฒฝํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ž˜์„œ ์ด๊ฒƒ ๋•Œ๋ฌธ์— ์ข…์ข… Java์™€ JavaScript๊ฐ€ ๋น„์Šทํ•œ ๊ฒƒ์œผ๋กœ ์˜คํ•ดํ•˜๋Š” ์ผ๋“ค์ด ์ƒ๊ธฐ๊ณค ํ•œ๋‹ค. ๋‚˜ ๋˜ํ•œ ๊ฐœ๋ฐœ ๊ณต๋ถ€๋ฅผ ์ฒ˜์Œ ์‹œ์ž‘ํ•  ๋•Œ๋Š” Java์™€ JavaScript๊ฐ€ ๋น„์Šทํ•œ ๊ฒƒ์ธ ์ค„ ์•Œ์•˜๋‹ค..

 

@iteachrecruiters

์ด๋ ‡๊ฒŒ ํ•˜์—ฌ 1995๋…„๋„์— ๊ณต์‹์ ์œผ๋กœ Netscape Navigator ๋ธŒ๋ผ์šฐ์ € ์œ„์— JavaScript์™€, JavaScript๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์—”์ง„์ด ํฌํ•จ์ด ๋˜์–ด ์ถœ์‹œ๊ฐ€ ๋œ๋‹ค.

 

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฒ ๋ผ์ž

์ด๋Ÿฐ Netscape์˜ ์„ฑ๊ณต ์‚ฌ๋ก€๋ฅผ ๋ชฉ๊ฒฉํ•˜๊ณ  Microsoft์‚ฌ๋Š” ์ž๊ธฐ๋“ค๋งŒ์˜ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ถœ์‹œํ•ด์•ผ ๊ฒ ๋‹ค๋Š” ์œ„๊ธฐ๊ฐ์„ ๋Š๋ผ๊ธฐ๋„ ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์ด๋“ค์€ Netscape์—์„œ ์ถœ์‹œํ•œ ๋ธŒ๋ผ์šฐ์ €๋ฅผ reverse ์—”์ง€๋‹ˆ์–ด๋งํ•˜๊ฒŒ ๋œ๋‹ค. ์—ฌ๊ธฐ์„œ reverse ์—”์ง€๋‹ˆ์–ด๋ง์€ ๋งŒ๋“ค์–ด์ง„ ํ”„๋กœ๊ทธ๋žจ์˜ binary ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•ด์„œ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๋ณต์›ํ•ด ๋‚ด๋Š” ๊ณผ์ •์„ ๋งํ•œ๋‹ค.

 

@amazon

๊ทธ๋ž˜์„œ ๊ฒฐ๊ตญ์€ Netscape์‚ฌ์—์„œ ๋งŒ๋“  JavaScript์™€ ๊ทธ ์—”์ง„์˜ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๋ฒ ๊ปด ์™€, ์•ฝ๊ฐ„์˜ ๊ธฐ๋Šฅ๋“ค์„ ๋ณ€๊ฒฝํ•ด์„œ ์ž์‹ ๋“ค๋งŒ์˜ ์–ธ์–ด์ธ์ฒ™ ์–ธ์–ด๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค๊ฒŒ ๋œ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ JScript๋ผ๊ณ  ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•ด ์‹œ์žฅ์— ๋‚ด๋†“๊ฒŒ ๋œ๋‹ค.

 

 

๊ทธ๋ฆฌํ•˜์—ฌ 1995๋…„๋„ ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ์‚ฌ์—์„œ๋„ Internet Explorer๋ฅผ ์‹œ์žฅ์— ๋‚ด๋†“๊ฒŒ ๋œ๋‹ค.

 

 

์ œ๋ฐœ ํ‘œ์ค€ ์ข€ ๋งŒ๋“ค์–ด์ค˜..

๊ทธ๋ฆฌ๊ณ  ์ด๋Š” ๊ฐœ๋ฐœ์ž๋“ค์˜ ๊ณ ํ†ต์˜ ์‹œ์ž‘์ด๊ธฐ๋„ ํ–ˆ๋‹ค. ์›น ๊ฐœ๋ฐœ์ž๋“ค์€ ๋„ˆ๋ฌด๋‚˜ ๋‹ค๋ฅธ ์ด ๋‘ ๋ธŒ๋ผ์šฐ์ € ์œ„์—์„œ๋„ ์ž˜ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ์›น์‚ฌ์ดํŠธ๋“ค์„ ๋งŒ๋“ค์–ด์•ผ ํ–ˆ๋‹ค.

 

@eyerys

๊ทธ๋ž˜์„œ ๊ทธ ๋‹น์‹œ์—๋Š” ์›น์‚ฌ์ดํŠธ์—์„œ ์œ„์™€ ๊ฐ™์€ ๋ฌธ๊ตฌ๋“ค์„ ๋ณด๋Š” ๊ฒŒ ๋„ˆ๋ฌด๋‚˜ ์ž์—ฐ์Šค๋Ÿฌ์› ๊ธฐ๋„ ํ–ˆ๋‹ค. ์ด ์‚ฌํƒœ๋ฅผ ๋” ์ด์ƒ ์ฐธ์ง€ ๋ชปํ•œ Netscape์‚ฌ๋Š” ECMA International ๋ผ๋Š” ๋‹จ์ฒด์— ์ฐพ์•„๊ฐ€์„œ ๋ณธ์ธ๋“ค์ด ๋งŒ๋“  JavaScript๋กœ ํ‘œ์ค€์•ˆ์„ ๋งŒ๋“ค์–ด๋ณด์ž๋ผ๊ณ  ์ œ์•ˆํ•˜๊ฒŒ ๋œ๋‹ค.

 

 

ECMAScript์˜ ํƒ„์ƒ

๊ทธ๋ฆฌํ•˜์—ฌ 1997๋…„ 7์›”, ๋“œ๋””์–ด ์ฒซ ๋ฒˆ์งธ ECMAScript1์ด ์‹œ์žฅ์— ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค. ECMAScript๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋™์ž‘ํ•˜๋Š” ์–ธ์–ด๋ฅผ ๋งŒ๋“ค ๋•Œ, ๊ทธ๋ฆฌ๊ณ  ๊ทธ ์–ธ์–ด๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์—”์ง„์ด ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•œ ๋ฌธ๋ฒ•์ ์ธ ์‚ฌํ•ญ๋“ค์„ ์ž˜ ์ •๋ฆฌํ•œ ๋ฌธ์„œ๋‹ค.

@sowon-dev.github.io

๊ทธ๋ฆฌ๊ณ  ๊ทธ ๋’ค์— ์ƒˆ๋กœ์šด ๋ฒ„์ „๋“ค์ด ๊ณ„์† ๋‚˜์˜ค๋Š”๋ฐ, ํŠนํžˆ ECMAScript3 ์—์„œ๋Š” ์ƒˆ๋กœ์šด ์—๋Ÿฌ ํ•ธ๋“ค๋ง ๋ฐฉ์‹์˜ ๊ด€๋ จ๋œ ๋ฌธ๋ฒ•์ด๋‚˜, ๊ด€๊ณ„ ์—ฐ์‚ฐ์ž ๋“ฑ์ด ์ƒˆ๋กœ ์ถ”๊ฐ€๋˜์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ECMAScript4๋ถ€ํ„ฐ๋Š” class, original type annotation ๋“ฑ ๋‹ค์–‘ํ•œ ์•„์ด๋””์–ด๊ฐ€ ๋…ผ์˜๋œ๋‹ค. ๋’ค์—์„œ ๋งํ•  ๊ฒƒ์ด์ง€๋งŒ ๊ทธ๋ƒฅ ๋…ผ์˜๋งŒ ๋˜์—ˆ๋‹ค. ๋…ผ์˜๋งŒ..

 

 

Internet Explorer์˜ ๋ฐ˜๊ฒฉ

์ด๋ ‡๊ฒŒ ๋งŽ์€ ๊ฒƒ๋“ค์ด ๋…ผ์˜๋˜๋Š” ๋™์•ˆ Internet Explorer์˜ ์‹œ์žฅ์ ์œ ์œจ์ด ๊ธ‰๊ฒฉํžˆ ์ƒ์Šนํ•œ๋‹ค. 2023๋…„์ธ ํ˜„์žฌ ์ต์Šคํ”Œ๋กœ๋Ÿฌ๋Š” ์—†๋Š” ์ด ์„ธ์ƒ๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ๋‹น์‹œ์—๋Š” ๋ฌด๋ ค 95%์˜ ์‚ฌ์šฉ์ž๋“ค์ด Internet Explorer๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

์ด๋ ‡๊ฒŒ ํฐ ์‹œ์žฅ ์ ์œ ์œจ์„ ํ™•๋ณดํ•˜๊ฒŒ ๋œ ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ์‚ฌ๋Š” ๊ฑด๋ฐฉ์ ธ์ง€๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค. ์ฆ‰, ๋ณธ์ธ๋“ค์ด ๋งŒ๋“  Internet Explorer๊ฐ€ ํ‘œ์ค€์ด๋ผ๋Š” ์ฃผ์žฅ์„ ํ•˜๋ฉฐ ๋” ์ด์ƒ ECMAScript ํ‘œ์ค€์•ˆ์— ๋™์˜ํ•˜์ง€ ์•Š๊ฒŒ ๋œ๋‹ค. ์ด๋กœ ์ธํ•ด ECMAScript4๋Š” ๋น›์„ ๋ณด์ง€ ๋ชปํ•˜๋ฉฐ ๋ฒ„๋ ค์ง€๊ณ  ์ดํ›„ ํ‘œ์ค€ํ™” ์ง„ํ–‰์ด ๋”๋ŽŒ์กŒ๊ธฐ์—, ๊ฒฐ๊ณผ์ ์œผ๋กœ ECMAScript4 ๋…ผ์˜ ์ดํ›„ ECMAScript5๊ฐ€ ๋‚˜์˜ฌ ๋•Œ๊นŒ์ง€ ์•ฝ 10๋…„ ๊ฐ„์˜ ๊ณต๋ฐฑ์ด ์žˆ์—ˆ๋˜ ๊ฒƒ์ด๋‹ค.

 

 

๋ถˆ๋Š‘๋Œ€๋„ ์ข€ ๊ปด์ฃผ๋ผ

๊ทธ๋ฆฌ๊ณ  4๋…„ ๋’ค์ธ 2004๋…„๋„์— ๋“œ๋””์–ด Mozilla์‚ฌ์—์„œ Firefox ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ถœ์‹œ๋œ๋‹ค.

 

@computerhoy

๊ทธ๋ฆฌ๊ณ  Mozilla์‚ฌ๋Š” ECMA International ๋‹จ์ฒด๋ฅผ ์ฐพ์•„๊ฐ€์„œ ๋ณธ์ธ๋“ค์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ActionScript์™€ ์ด ์–ธ์–ด๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” Tamarin์ด๋ผ๋Š” ์—”์ง„์œผ๋กœ ํ‘œ์ค€ํ™”๋ฅผ ๋‹ค์‹œ ๊ฒ€ํ† ํ•ด ๋ณด์ž๊ณ  ์ œ์•ˆํ•œ๋‹ค. ํ•˜์ง€๋งŒ ActionScript์™€ Tamarin์€ ๊ธฐ์กด์˜ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์“ฐ์ด๊ณ  ์žˆ๋Š” JScript์™€ JavaScript์™€๋Š” ๋„ˆ๋ฌด๋‚˜ ๋‹ฌ๋ž๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์‹œ ํ‘œ์ค€์•ˆ์„ ์ง„ํ–‰ํ•˜๊ธฐ์—๋Š” ์กฐ๊ธˆ ๋ฌด๋ฆฌ๊ฐ€ ์žˆ์—ˆ๋‹ค.

์ด๊ฐ™์ด ํ‘œ์ค€ํ™”๋ฅผ ์•ž์— ๋‘๊ณ  Netscape, Microsoft, Mozilla 3์‚ฌ์˜ ์น˜์—ดํ•œ ์‹ ๊ฒฝ์ „์ด ๊ณ„์† ๋ฒŒ์–ด์ง€๊ณ  ์žˆ์—ˆ๋‹ค. ๊ทธ๋™์•ˆ ๋ถˆ์Œํ•œ ๊ฐœ๋ฐœ์ž๋“ค์€ ์‹œ์žฅ์— ์กด์žฌํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ž˜ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ์›น ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์Œฉ๊ณ ์ƒ์„ ํ•˜๋ฉด์„œ ์›นํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค์–ด ๋‚˜๊ฐ€์•ผ ํ–ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  2004๋…„, ์›น ์‹œ์žฅ์—์„œ๋Š” ๊ต‰์žฅํžˆ ํš๊ธฐ์ ์ธ ์ผ์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋Š”๋ฐ..

 

 

Ajax์˜ ๋“ฑ์žฅ

๋ฐ”๋กœ Jesse James Garrett ๋ผ๋Š” ์‚ฌ๋žŒ์ด Ajax(Asynchronous JavaScript and XML)๋ผ๋Š” ๊ฒƒ์„ ์„ธ์ƒ์— ๋‚ด๋†“๋Š”๋‹ค. ์ด๋Š” ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„์—์„œ ๋ฐ›์•„์˜ค๊ณ  ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

@wikipedia

ํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ Ajax์˜ ๋„์ž…์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์—ฌ์ „ํžˆ ECMAScript ํ‘œ์ค€ํ™”๋ฅผ ์•ž๋‘๊ณ  3์‚ฌ์˜ ์น˜์—ดํ•œ ์‹ ๊ฒฝ์ „์€ ๊ณ„์†๋˜์—ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ๊ทธ๋™์•ˆ ์‹œ์žฅ์—๋Š” Opera ๋ธŒ๋ผ์šฐ์ €๋‚˜ ๋‹ค๋ฅธ ๋ธŒ๋ผ์šฐ์ €๋“ค์ด ๋งŽ์ด ๋‚˜์˜ค๊ฒŒ ๋˜์—ˆ๊ณ , ๊ฐœ๋ฐœ์ž๋“ค์€ ๋‹ค์–‘ํ•œ ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋™์ž‘ํ•˜๋Š” ์›น ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“œ๋Š๋ผ ์—ฌ์ „ํžˆ ๊ณ ์ƒ์„ ํ•˜๊ณ  ์žˆ์—ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์›น ์‹œ์žฅ์— ์ˆ˜์š”๊ฐ€ ๋งŽ์•„์ง์— ๋”ฐ๋ผ ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์ด ์ด ์›น ์‹œ์žฅ์œผ๋กœ ๋“ค์–ด์˜ค๊ฒŒ ๋˜๊ธฐ๋„ ํ–ˆ๋‹ค.

 

 

J query์˜ ๋“ฑ์žฅ

๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฐ ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค ์‚ฌ์ด์—์„œ ์„œ์„œํžˆ ๊ฐ•๋ ฅํ•œ ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ํ˜•์„ฑ๋˜๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค. ์ด๋Ÿฐ ์ปค๋ฎค๋‹ˆํ‹ฐ ์‚ฌ์ด์—์„œ jQuery, dojo, mootools ๋“ฑ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด ๋งŽ์ด ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค.

@wikipedia

์ด๋Ÿฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด ํ•ด๊ฒฐํ•˜๊ณ ์ž ํ•˜๋Š” ๊ณตํ†ต๋œ ๋ฌธ์ œ์ ์€ ๋”ฑ ํ•˜๋‚˜์˜€๋‹ค. ๊ฐœ๋ฐœ์ž๋“ค์ด ๋” ์ด์ƒ ๋‹ค๋ฅธ ๋ธŒ๋ผ์šฐ์ €์— ๊ตฌํ˜„ ์‚ฌํ•ญ์„ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์•„๋„ ๋˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด์—ˆ๋‹ค. ๊ทธ์ค‘์—์„œ๋„ "write less, do more" ์ด๋ผ๊ณ  ํ•˜๋Š” jQuery๊ฐ€ ๋งŽ์€ ์‚ฌ๋ž‘์„ ๋ฐ›๊ฒŒ ๋˜์—ˆ๋‹ค.

 

 

๊ฐ•๋ ฅํ•œ Chrome์˜ ๋“ฑ์žฅ

์ด๋Ÿฐ ๋ณ€ํ™”๋“ค ์†์—์„œ๋„ ์›น ์‹œ์žฅ์„ ๊ธ‰๊ฒฉํ•˜๊ฒŒ ๋ฐ”๊พธ๋Š” ์ง„์ทจ์ ์ธ ์‚ฌ๊ฑด์ด ํ•˜๋‚˜ ์žˆ์—ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋ฐ”๋กœ 2008๋…„์— Google์—์„œ ํ˜„์žฌ ์šฐ๋ฆฌ๊ฐ€ ์ž˜ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” Chrome ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ถœ์‹œํ•œ ๊ฒƒ์ด๋‹ค.

 

@Google

Chrome ๋ธŒ๋ผ์šฐ์ €๋Š” Just-in-time compilation ์ด๋ผ๋Š” ๊ต‰์žฅํžˆ ๊ฐ•๋ ฅํ•œ ์—”์ง„์ด ํฌํ•จ๋œ ๋ธŒ๋ผ์šฐ์ €๋‹ค. JavaScript๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์†๋„๊ฐ€ ์—„์ฒญ ๋น ๋ฅธ ๊ฐ•๋ ฅํ•œ ์—”์ง„์ด ํฌํ•จ๋œ ๊ฒƒ์ด๋‹ค. ์ด๋Ÿฌํ•œ ํฌ๋กฌ์˜ ํš๊ธฐ์ ์ธ ๋“ฑ์žฅ์— ์‹œ์žฅ์˜ ๋‹ค๋ฅธ ๋ธŒ๋ผ์šฐ์ €๋“ค์€ ์„ฑ๋Šฅ ๊ฐœ์„ ์— ๋Œ€ํ•œ ํ•„์š”์„ฑ์„ ๋Š๋ผ๋ฉฐ ์ข‹์€ ์ž๊ทน์„ ๋ฐ›๊ฒŒ ๋˜๊ธฐ๋„ ํ•œ๋‹ค.

 

 

์ด์ œ๋Š” ํ†ต์ผ ์ข€ ํ•˜์ž

๋“œ๋””์–ด.. ๋“œ๋””์–ด! 2008๋…„ 7์›”์— ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €๋“ค์ด ๋ชจ์—ฌ, ํ‘œ์ค€ํ™”๋ฅผ ๋งŒ๋“ค๊ณ  ์„œ๋กœ ์œˆ์œˆํ•  ์ˆ˜ ์žˆ๋Š” ๊ด€๊ณ„๋ฅผ ํ˜•์„ฑํ•˜์ž๋ฉฐ ์ƒ์‚ฐ์ ์ธ ๋Œ€ํ™”๋ฅผ ํ•œ๋‹ค. ๊ทธ๋ฆฌํ•˜์—ฌ 2009๋…„์— ECMAScript5๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋˜๊ณ , ๋’ค์ด์–ด 2015๋…„๋„์—๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ž˜ ์•„๋Š” ECMAScript6๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋œ ๊ฒƒ์ด๋‹ค.

 

 

์šฐ๋ฆฌ๊ฐ€ ํ˜„์žฌ ์‚ฌ์šฉํ•˜๋Š” class๋‚˜ arrow function, const์™€ let ๋“ฑ์ด ๋ชจ๋‘ ECMAScript6์— ์ •์˜๋˜์—ˆ๋‹ค. ๊ทธ ๋’ค๋กœ๋„ ๋งค ํ•ด ์ƒˆ๋กœ์šด ๋ฒ„์ „๋“ค์ด ๋‚˜์˜ค๊ณ  ์žˆ๋Š”๋ฐ ์กฐ๊ธˆ์กฐ๊ธˆ์”ฉ ์ˆ˜์ •๋œ ๋ถ€๋ถ„๋“ค์ผ๋ฟ, ๊ฑฐ์˜ ์ปค๋‹ค๋ž€ ๋ณ€ํ™”๋“ค์€ ECMAScript5์™€ 6์—์„œ ๋ชจ๋‘ ์ •์˜๋˜์—ˆ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

 

์„ฑ์ˆ™ํ•ด์ง€๊ณ  ์ž˜ ์ •์ฐฉํ–ˆ๋‹ค

ECMAScript6๋ฅผ ๊ธฐ์ ์œผ๋กœ JavaScript๋Š” “Mature, Settled down”์ด๋ผ๋Š” ๋ง์ด ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €๋“ค์ด ECMAScript์˜ ํ‘œ์ค€ ์‚ฌํ•ญ์„ ์ž˜ ๋”ฐ๋ผ๊ฐ€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋” ์ด์ƒ jQuery ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์˜ ๋„์›€ ์—†์ด๋„ ์ถฉ๋ถ„ํžˆ JavaScript์™€ ์›น APIs์—์„œ ์ œ๊ณตํ•˜๋Š” API๋“ค ๋งŒ์œผ๋กœ๋„ ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ž˜ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ์›น ์‚ฌ์ดํŠธ๋‚˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค ์ˆ˜๊ฐ€ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.

@The Depths of JavaScript Newsletter

๊ทธ๋ฆฌ๊ณ  ๊ฐ๊ฐ์˜ ๋ธŒ๋ผ์šฐ์ €๋“ค๋งˆ๋‹ค ECMAScript์˜ ํ‘œ์ค€์•ˆ์„ ๋”ฐ๋ผ๊ฐ€๋Š” ๋‹ค์–‘ํ•œ ์—”์ง„๋“ค(Chrome์€ V8, Firefox๋Š” SpiderMonkey, ๊ทธ๋ฆฌ๊ณ  Safari์—๋Š” JSCore)์ด ์กด์žฌํ•˜๊ฒŒ ๋œ๋‹ค. ์ด ์ค‘์—์„œ๋„ Chrome์˜ V8 JavaScript ์—”์ง„์€ Nodejs์™€ Electron์—์„œ๋„ ์ด์šฉ๋˜๊ธฐ๋„ ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋’ค์ด์–ด 2020๋…„ 2์›”์—๋Š” Microsoft์‚ฌ์—์„œ๋„ V8 ์—”์ง„์„ ๋Œ€์ฒดํ•ด์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค.

 

 

๋ฒ„์ „์ด ๋‹ค ๋‹ค๋ฅด๋ฉด ์–ด๋–กํ•ด

์‹œ์žฅ์—์„œ ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ์ž๋“ค์€ ๋‹ค์–‘ํ•œ ๋ธŒ๋ผ์šฐ์ €๋“ค์„ ์“ฐ๊ณ  ์žˆ๊ณ , ๋ชจ๋“  ์‚ฌ์šฉ์ž๋“ค์ด ์ตœ์‹  ๋ธŒ๋ผ์šฐ์ € ๋ฒ„์ „์„ ์“ฐ๊ณ  ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐœ๋ฐœ์ž๋“ค์€ ์ตœ์‹  ๋ฒ„์ „์˜ ECMAScript๋กœ ๊ฐœ๋ฐœ ํ•˜๊ณ  ์‹ถ์œผ๋ฏ€๋กœ ๊ฐœ๋ฐœํ•  ๋•Œ๋Š” ์ตœ์‹  ๋ฒ„์ „์˜ ECMAScript๋ฅผ ์“ฐ๊ณ , ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฐฐํฌํ•  ๋•Œ๋งŒ JavaScript Transcompiler๋ฅผ ์ด์šฉํ•˜๊ฒŒ ๋œ๋‹ค.

 

@Babel

์ฆ‰, ECMAScript์˜ ์ตœ์‹ ๋ฒ„์ „์„ 5๋‚˜ 6์œผ๋กœ ๋ณ€ํ™˜ํ•ด์„œ, ๋ณ€ํ™˜๋œ ์ฝ”๋“œ๋ฅผ ์ƒ์‚ฐํ•ด ์ฃผ๋Š” Transcompiler๊ฐ€ ๋ฐ”๋กœ ๊ทธ ์œ ๋ช…ํ•œ Babel์ด๋‹ค.

 

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ•˜๋‚˜๋งŒ ์ž˜ํ•ด๋„..

ํ˜„์žฌ๋Š” Single Page Application๋„ JavaScript๋งŒ์œผ๋กœ ์ถฉ๋ถ„ํžˆ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋” ์‰ฝ๊ณ  ํšจ์œจ์ ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๊ธฐ์œ„ํ•ด React, Angular, Vue ๊ฐ™์€ ๊ฒƒ๋“ค์ด ํƒ„์ƒํ•˜๊ธฐ๋„ ํ–ˆ๋‹ค. ํ‘œ์ค€ํ™”๋œ ECMAScript, ๊ทธ๋ฆฌ๊ณ  ๊ฐ•๋ ฅํ•œ V8 ์—”์ง„์œผ๋กœ ์ธํ•ด ๋ฐฑ์—”๋“œ์—์„œ๋„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋„๋ก Node js๊ฐ€ ๋“ฑ์žฅํ•˜๊ธฐ๋„ ํ–ˆ๋‹ค. React Native๋ฅผ ์ด์šฉํ•ด ๋ชจ๋ฐ”์ผ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜๋„ ์ถฉ๋ถ„ํžˆ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ , Electron์œผ๋กœ Desktop ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.

velog.io/@godori

 

 

์ •๋ฆฌํ•˜๋ฉฐ

@devrant.com

์ฆ‰, JavaScript๋งŒ ์ž˜ ๋ฐฐ์›Œ๋‘๋ฉด ์ด์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ„์•ผ๋Š” ๋ฌด๊ถ๋ฌด์ง„ํ•˜๋‹ค๋Š” ๋œป์ด๋‹ค. ๋ฌผ๋ก  TypeScript ๋“ฑ ๋‹ค์–‘ํ•œ ๊ฒƒ๋“ค์ด ์ƒ๊ฒจ๋‚˜๊ณ  ์žˆ์ง€๋งŒ, ์˜ค๋Š˜ ์•Œ์•„๋ณธ ๊ฒƒ์ฒ˜๋Ÿผ ๊ฒฐ๊ตญ ๋ฟŒ๋ฆฌ๋Š” JavaScript์ด๊ธฐ ๋•Œ๋ฌธ์— JavaScript ํ•˜๋‚˜๋งŒ ์ž˜ํ•ด๋‘์–ด๋„ ๋‹ค๋ฅธ ๊ธฐ์ˆ  ์„ญ๋ ต์€ ๋น„๊ต์  ์‰ฌ์šธ ๊ฒƒ์ด๋‹ค.

 

 

 

๐Ÿ“Ž ๋‚ด์šฉ ์ฐธ์กฐ

Youtube ๋“œ๋ฆผ์ฝ”๋”ฉ: ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์—ญ์‚ฌ์™€ ํ˜„์žฌ ๊ทธ๋ฆฌ๊ณ  ๋ฏธ๋ž˜

๋Œ“๊ธ€