문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 이동문서 삭제토론 JavaScript (문단 편집) == 역사 == 첫 탄생은 1995년 [[넷스케이프]]에서 근무하던 [[브랜든 아이크]]가 10일만에 설계한 것으로부터 시작한다. 처음에는 Mocha라는 이름이었지만 4달 만에 LiveScript라는 이름으로 개명하고 다시 3달 후에는 JavaScript라는 이름이 되어 오늘날까지 이어지고 있다. 'Java와 구문이 유사해서 이름을 JavaScript로 명명했다'는 표면상의 이유를 대지만 그 속은 '''[[Java]]의 유명세를 타서 묻어가려고 의도적으로 그렇게 작명한 것'''이다. 물론 무단으로 도용한 것은 아니고, [[썬 마이크로시스템즈]](지금은 [[오라클(기업)|오라클]]에 인수됨)에게 상표권 사용 허락을 받았다. [[https://web.archive.org/web/20100528154600/http://www.sun.com/suntrademarks/#J|#]] 오라클이 인수하면서 상표권도 오라클로 넘어갔는데, 소송으로 악명높은 오라클이 JavaScript는 딱히 손대지 않고 있다. 애초에 허락을 맡은 것이기도 하고 자사 사업분야랑 연관이 없기 때문에[* 오라클이 오픈소스나 다른 회사와 마찰이 많아 악명이 높지만 RHEL 포크판인 오라클 리눅스를 무료로 운영하는 등 의외의 면모도 있다.] 서로 영향을 줄 일도 별로 없기 때문이다. JavaScript는 본래 넷스케이프 서버에서 [[애플리케이션]]을 제작하기 위한 고수준 추상화 언어로 설계되어 [[넷스케이프 내비게이터]]에 LiveScript 이름의 인터프리터를 넣었다. 그러나 JavaScript는 당시 기준에서 무리한 추상화[* 1990년대 중반에 발표된 언어가 요즘 새롭게 나오는 언어들보다도 더 한 추상화를 자랑한다.]를 시도했기 때문에 성능 문제가 많았다. 게다가 마케팅 좀 해보자고 붙인 이름인 JavaScript가 Java의 열화판이라는 느낌이라서 당시 개발자들 사이에서 이름으로 무시당했다.[* 그때는 Java를 할 줄 알면 JavaScript를 몰라도 깔 수 있었다. 이름으로...] 여기에 더해서 그나마 클라이언트용 JavaScript 엔진에 있던 시스템 자원 접근용 API[* 과거에는 브라우저의 JavaScript 엔진이 파일 시스템 같은 자원에 접근할 수 있었다.]들이 보안사고의 원인이 되면서 삭제되는 과정에서, 별다른 보완 방법을 제시하지 못하는 등 한계가 여실했다. 하지만 JavaScript의 막강한 기능은 웹 브라우저에서 필수적으로 구현할만큼 성장해갔다. [[마이크로소프트]]에서는 이를 채택함과 동시에 자사만의 문법을 끼워 넣어 JScript를 탄생시켰다. [[넷스케이프 내비게이터|넷스케이프]]가 여러 문제에도 불구하고 점유율을 막대하게 차지해가던 어느 1995년 중반, Microsoft가 [[Windows 95|Windows 95 Plus]]에서 Internet Explorer 1.0를 선보였다. 이것이 바로 [[브라우저 전쟁#s-3.2|제1차 브라우저 전쟁]]이라 불리는 사건의 시작이다.[* 링크를 보면 알겠지만 초창기 넷스케이프 사의 점유율은 80%로 압도적이었으나 점점 일방적으로 Internet Explorer에게 밀리는 것이 보인다. [[https://en.wikipedia.org/wiki/File:Browser_Wars_(en).svg|참조]].] 제1차 브라우저 전쟁에서 Microsoft는 당시만 해도 혁명적이었던 [[ActiveX]]를 탑재하면서 운영 체제 점유율을 늘려감에 따라 사용자들을 Internet Explorer를 사용하도록 지속적으로 유도하였고, 이에 버티지 못한 넷스케이프는 기어코 망하고 만다. Microsoft에서 1999년에 본래 아웃룩에서 쓰였던 IXMLHTTPRequest라는 이름으로 XMLHTTP wrapper로서 xml request 기능을 제공하기 [[https://en.wikipedia.org/wiki/XMLHttpRequest#History|시작했다]]. 넷스케이프의 후예를 자처하는 모질라 재단에서도 이것을 2002년에 구현시켰다. 이후 주목 받지 못하고 있다가 [[구글]]에 의해 String 기반의 Data 전송 방식을 [[AJAX]]라는 이름으로 조합해 선보이면서 AJAX 인터넷 신세계가 열리고 말 그대로 대박이 났다. 이렇듯 JavaScript는 각 웹 브라우저마다 서로 호환이 되지 않는 것이 문제였다. 1997년 ECMA TC39라는 문서를 통해 단일화 움직임이 시작되었지만, 각 웹 브라우저 벤더(특히 Microsoft)의 비협조적인 태도로 인해 실패했다. 그러다가 [[브라우저 전쟁#s-3.3|두 번째 브라우저 전쟁]]이 발발한 후 구글한테 처참하게 발린 Microsoft가 깽깽 거리고 나서야 ECMAScript 5가 제정되고 표준 문제가 다소 해결되었다.[* Internet Explorer 8 이하의 버전에서는 JScript만의 문법이 남아있어 크로스 브라우징 문제가 빈번하게 일어났다. 대표적으로 addEventListener를 attachEvent 같은 식으로 구현하는 것이 그러하다. Internet Explorer 9부터는 ECMA 표준을 따르도록 수정되었지만, 레거시 지원을 위해 기존의 JScript도 남겨 두었다. 그래서 JScript 라이브러리 역시 jscript.dll과 jscript'''9'''.dll이 같이 존재하며, 기본의 JScript는 문서 모드를 8 이하로 설정한 경우에 사용된다.] 한편 그렇게 표준화를 거친 JavaScript는 [[AJAX]], [[jQuery]] 등의 등장으로 거침없는 발전을 보였고, 기어이 [[Node.js]]의 등장으로 서버 사이드 언어로서 탈바꿈하게 된다. JIT 컴파일 방식을 도입한 구글의 [[V8]]이라는 JavaScript 엔진을 개발하였고, ECMAScript 6 구현율이 당시 80% ~ 현재 99%에 달하면서 CommonJS, AMD(Asynchronous module definition) 진영 등의 등장도 나타났다. 과거의 JavaScript와 비교해 보면 격세지감마저 들 정도로 그야말로 장족의 발전이다. JavaScript는 웹 디자이너들에게도 교육이 되고 있는 만큼 진입 장벽이 타 언어에 비해 낮은 편으로 인식되고 있다. 해외는 프론트엔드 전담 개발자가 있을 만큼 전문화되어있는 반면, 국내에서는 수준이 현격히 낮은 만큼 일반인도 쉽게 접근하고 배울 수 있다. 구글 등을 비롯한 여러 벤더 사에서는 이 언어를 활용한 다양한 플랫폼 환경을 지원하고 있으며, Chrome Extension이나 App들이 그 좋은 예이다. 순수 JavaScript로 이루어져 있어 실력이 된다면 자신만의 것들을 구현해 배포할 수도 있기 때문. 하지만 그렇다고 해서 JavaScript가 마냥 쉬운 언어라고 생각하면 오산이다. 웹으로 할 수 있는게 제한적이었던 과거에는 웹 애플리케이션으로 복잡한 기능을 수행하는게 불가능했기 때문에 당시 JavaScript로 작성된 코드들은 간단했고, 그로 인해 JavaScript는 쉬운 언어라는 인식이 널리 퍼졌다. 그러나 현재는 웹 애플리케이션이 사실상 데스크톱 설치형 애플리케이션을 상당수 대체하고 있어 JavaScript 기반으로 쓰여진 초대형 프로젝트들이 많은 상황이고, 무엇보다 [[Node.js]]의 등장으로 인해 프론트엔드 뿐만 아니라 백엔드 및 네이티브 프로그래밍에서도 JavaScript가 쓰이는 만큼 지금의 JavaScript는 여타 언어 못지 않은 높은 수준의 숙련도를 요구하고 있다고 봐야 한다. 원래 JavaScript 엔진들은 모두 실시간 인터프리팅을 하고 있었는데, 모질라에서 SpiderMonkey 엔진에 [[JIT]] 컴파일 방식을 도입했다. 이는 JavaScript 엔진으로는 최초로 도입한 것이고, 이 때 알려진 것으로는 순수 JavaScript 성능만 기존 버전의 20~40배에 달했다.[* Paul, Ryan (2008-08-22). "Firefox to get massive JavaScript performance boost". Ars Technica. Retrieved 2013-03-21.] 그리고 [[구글]] 역시 [[V8]]이라는 JavaScript 엔진을 개발하면서 [[JIT]] 컴파일 방식을 도입하였고, JavaScript 성능이 비약적으로 향상하여 지금은 JavaScript 3D 게임 엔진도 개발되고 있다.[* 이런 3D 게임 같은 분야에서는 빠른 JavaScript와 WebGL 등으로도 부족해서 이젠 모질라에서 asm.js 같은 서브셋까지 만들어서, 산술 연산이 거의 네이티브 코드에 가깝게 실행될 수 있도록 극한의 최적화를 하고 있다.]저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기